| /* |
| * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. |
| * All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License along |
| * with this program; if not, write to the Free Software Foundation, Inc., |
| * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * File: rxtx.h |
| * |
| * Purpose: |
| * |
| * Author: Jerry Chen |
| * |
| * Date: Jun. 27, 2002 |
| * |
| */ |
| |
| |
| #ifndef __RXTX_H__ |
| #define __RXTX_H__ |
| |
| #if !defined(__TTYPE_H__) |
| #include "ttype.h" |
| #endif |
| #if !defined(__DEVICE_H__) |
| #include "device.h" |
| #endif |
| #if !defined(__WCMD_H__) |
| #include "wcmd.h" |
| #endif |
| |
| |
| /*--------------------- Export Definitions -------------------------*/ |
| |
| /*--------------------- Export Classes ----------------------------*/ |
| |
| // |
| // RTS buffer header |
| // |
| typedef struct tagSRTSDataF { |
| WORD wFrameControl; |
| WORD wDurationID; |
| BYTE abyRA[U_ETHER_ADDR_LEN]; |
| BYTE abyTA[U_ETHER_ADDR_LEN]; |
| } SRTSDataF, DEF* PSRTSDataF; |
| |
| // |
| // CTS buffer header |
| // |
| typedef struct tagSCTSDataF { |
| WORD wFrameControl; |
| WORD wDurationID; |
| BYTE abyRA[U_ETHER_ADDR_LEN]; |
| WORD wReserved; |
| } SCTSDataF, DEF* PSCTSDataF; |
| |
| // |
| // MICHDR data header |
| // |
| typedef struct tagSMICHDR { |
| DWORD adwHDR0[4]; |
| DWORD adwHDR1[4]; |
| DWORD adwHDR2[4]; |
| } SMICHDR, DEF* PSMICHDR; |
| |
| |
| typedef struct tagSTX_NAF_G_RTS |
| { |
| //RsvTime |
| WORD wRTSTxRrvTime_ba; |
| WORD wRTSTxRrvTime_aa; |
| WORD wRTSTxRrvTime_bb; |
| WORD wReserved2; |
| WORD wTxRrvTime_b; |
| WORD wTxRrvTime_a; |
| |
| //RTS |
| BYTE byRTSSignalField_b; |
| BYTE byRTSServiceField_b; |
| WORD wRTSTransmitLength_b; |
| BYTE byRTSSignalField_a; |
| BYTE byRTSServiceField_a; |
| WORD wRTSTransmitLength_a; |
| WORD wRTSDuration_ba; |
| WORD wRTSDuration_aa; |
| WORD wRTSDuration_bb; |
| WORD wReserved3; |
| SRTSDataF sRTS; |
| |
| //Data |
| BYTE bySignalField_b; |
| BYTE byServiceField_b; |
| WORD wTransmitLength_b; |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_b; |
| WORD wDuration_a; |
| WORD wTimeStampOff_b; |
| WORD wTimeStampOff_a; |
| |
| } TX_NAF_G_RTS, DEF* PTX_NAF_G_RTS; |
| |
| typedef struct tagSTX_NAF_G_RTS_MIC |
| { |
| //RsvTime |
| WORD wRTSTxRrvTime_ba; |
| WORD wRTSTxRrvTime_aa; |
| WORD wRTSTxRrvTime_bb; |
| WORD wReserved2; |
| WORD wTxRrvTime_b; |
| WORD wTxRrvTime_a; |
| |
| SMICHDR sMICHDR; |
| |
| //RTS |
| BYTE byRTSSignalField_b; |
| BYTE byRTSServiceField_b; |
| WORD wRTSTransmitLength_b; |
| BYTE byRTSSignalField_a; |
| BYTE byRTSServiceField_a; |
| WORD wRTSTransmitLength_a; |
| WORD wRTSDuration_ba; |
| WORD wRTSDuration_aa; |
| WORD wRTSDuration_bb; |
| WORD wReserved3; |
| SRTSDataF sRTS; |
| |
| //Data |
| BYTE bySignalField_b; |
| BYTE byServiceField_b; |
| WORD wTransmitLength_b; |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_b; |
| WORD wDuration_a; |
| WORD wTimeStampOff_b; |
| WORD wTimeStampOff_a; |
| |
| } TX_NAF_G_RTS_MIC, DEF* PTX_NAF_G_RTS_MIC; |
| |
| typedef struct tagSTX_NAF_G_CTS |
| { |
| //RsvTime |
| WORD wCTSTxRrvTime_ba; |
| WORD wReserved2; |
| WORD wTxRrvTime_b; |
| WORD wTxRrvTime_a; |
| |
| //CTS |
| BYTE byCTSSignalField_b; |
| BYTE byCTSServiceField_b; |
| WORD wCTSTransmitLength_b; |
| WORD wCTSDuration_ba; |
| WORD wReserved3; |
| SCTSDataF sCTS; |
| |
| //Data |
| BYTE bySignalField_b; |
| BYTE byServiceField_b; |
| WORD wTransmitLength_b; |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_b; |
| WORD wDuration_a; |
| WORD wTimeStampOff_b; |
| WORD wTimeStampOff_a; |
| |
| } TX_NAF_G_CTS, DEF* PTX_NAF_G_CTS; |
| |
| |
| typedef struct tagSTX_NAF_G_CTS_MIC |
| { |
| //RsvTime |
| WORD wCTSTxRrvTime_ba; |
| WORD wReserved2; |
| WORD wTxRrvTime_b; |
| WORD wTxRrvTime_a; |
| |
| |
| SMICHDR sMICHDR; |
| |
| //CTS |
| BYTE byCTSSignalField_b; |
| BYTE byCTSServiceField_b; |
| WORD wCTSTransmitLength_b; |
| WORD wCTSDuration_ba; |
| WORD wReserved3; |
| SCTSDataF sCTS; |
| |
| //Data |
| BYTE bySignalField_b; |
| BYTE byServiceField_b; |
| WORD wTransmitLength_b; |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_b; |
| WORD wDuration_a; |
| WORD wTimeStampOff_b; |
| WORD wTimeStampOff_a; |
| |
| } TX_NAF_G_CTS_MIC, DEF* PTX_NAF_G_CTS_MIC; |
| |
| |
| typedef struct tagSTX_NAF_G_BEACON |
| { |
| WORD wFIFOCtl; |
| WORD wTimeStamp; |
| |
| //CTS |
| BYTE byCTSSignalField_b; |
| BYTE byCTSServiceField_b; |
| WORD wCTSTransmitLength_b; |
| WORD wCTSDuration_ba; |
| WORD wReserved1; |
| SCTSDataF sCTS; |
| |
| //Data |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_a; |
| WORD wTimeStampOff_a; |
| |
| |
| } TX_NAF_G_BEACON, DEF* PTX_NAF_G_BEACON; |
| |
| |
| typedef struct tagSTX_NAF_AB_RTS |
| { |
| //RsvTime |
| WORD wRTSTxRrvTime_ab; |
| WORD wTxRrvTime_ab; |
| |
| //RTS |
| BYTE byRTSSignalField_ab; |
| BYTE byRTSServiceField_ab; |
| WORD wRTSTransmitLength_ab; |
| WORD wRTSDuration_ab; |
| WORD wReserved2; |
| SRTSDataF sRTS; |
| |
| //Data |
| BYTE bySignalField_ab; |
| BYTE byServiceField_ab; |
| WORD wTransmitLength_ab; |
| WORD wDuration_ab; |
| WORD wTimeStampOff_ab; |
| |
| |
| } TX_NAF_AB_RTS, DEF* PTX_NAF_AB_RTS; |
| |
| |
| typedef struct tagSTX_NAF_AB_RTS_MIC |
| { |
| //RsvTime |
| WORD wRTSTxRrvTime_ab; |
| WORD wTxRrvTime_ab; |
| |
| SMICHDR sMICHDR; |
| |
| //RTS |
| BYTE byRTSSignalField_ab; |
| BYTE byRTSServiceField_ab; |
| WORD wRTSTransmitLength_ab; |
| WORD wRTSDuration_ab; |
| WORD wReserved2; |
| SRTSDataF sRTS; |
| |
| //Data |
| BYTE bySignalField_ab; |
| BYTE byServiceField_ab; |
| WORD wTransmitLength_ab; |
| WORD wDuration_ab; |
| WORD wTimeStampOff_ab; |
| |
| |
| } TX_NAF_AB_RTS_MIC, DEF* PTX_NAF_AB_RTS_MIC; |
| |
| |
| |
| typedef struct tagSTX_NAF_AB_CTS |
| { |
| //RsvTime |
| WORD wReserved2; |
| WORD wTxRrvTime_ab; |
| |
| //Data |
| BYTE bySignalField_ab; |
| BYTE byServiceField_ab; |
| WORD wTransmitLength_ab; |
| WORD wDuration_ab; |
| WORD wTimeStampOff_ab; |
| |
| } TX_NAF_AB_CTS, DEF* PTX_NAF_AB_CTS; |
| |
| typedef struct tagSTX_NAF_AB_CTS_MIC |
| { |
| //RsvTime |
| WORD wReserved2; |
| WORD wTxRrvTime_ab; |
| |
| SMICHDR sMICHDR; |
| |
| //Data |
| BYTE bySignalField_ab; |
| BYTE byServiceField_ab; |
| WORD wTransmitLength_ab; |
| WORD wDuration_ab; |
| WORD wTimeStampOff_ab; |
| |
| } TX_NAF_AB_CTS_MIC, DEF* PTX_NAF_AB_CTS_MIC; |
| |
| |
| typedef struct tagSTX_NAF_AB_BEACON |
| { |
| WORD wFIFOCtl; |
| WORD wTimeStamp; |
| |
| //Data |
| BYTE bySignalField_ab; |
| BYTE byServiceField_ab; |
| WORD wTransmitLength_ab; |
| WORD wDuration_ab; |
| WORD wTimeStampOff_ab; |
| |
| } TX_NAF_AB_BEACON, DEF* PTX_NAF_AB_BEACON; |
| |
| typedef struct tagSTX_AF_G_RTS |
| { |
| //RsvTime |
| WORD wRTSTxRrvTime_ba; |
| WORD wRTSTxRrvTime_aa; |
| WORD wRTSTxRrvTime_bb; |
| WORD wReserved2; |
| WORD wTxRrvTime_b; |
| WORD wTxRrvTime_a; |
| |
| //RTS |
| BYTE byRTSSignalField_b; |
| BYTE byRTSServiceField_b; |
| WORD wRTSTransmitLength_b; |
| BYTE byRTSSignalField_a; |
| BYTE byRTSServiceField_a; |
| WORD wRTSTransmitLength_a; |
| WORD wRTSDuration_ba; |
| WORD wRTSDuration_aa; |
| WORD wRTSDuration_bb; |
| WORD wReserved3; |
| WORD wRTSDuration_ba_f0; |
| WORD wRTSDuration_aa_f0; |
| WORD wRTSDuration_ba_f1; |
| WORD wRTSDuration_aa_f1; |
| SRTSDataF sRTS; |
| |
| //Data |
| BYTE bySignalField_b; |
| BYTE byServiceField_b; |
| WORD wTransmitLength_b; |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_b; |
| WORD wDuration_a; |
| WORD wDuration_a_f0; |
| WORD wDuration_a_f1; |
| WORD wTimeStampOff_b; |
| WORD wTimeStampOff_a; |
| |
| } TX_AF_G_RTS, DEF* PTX_AF_G_RTS; |
| |
| |
| typedef struct tagSTX_AF_G_RTS_MIC |
| { |
| //RsvTime |
| WORD wRTSTxRrvTime_ba; |
| WORD wRTSTxRrvTime_aa; |
| WORD wRTSTxRrvTime_bb; |
| WORD wReserved2; |
| WORD wTxRrvTime_b; |
| WORD wTxRrvTime_a; |
| |
| SMICHDR sMICHDR; |
| |
| //RTS |
| BYTE byRTSSignalField_b; |
| BYTE byRTSServiceField_b; |
| WORD wRTSTransmitLength_b; |
| BYTE byRTSSignalField_a; |
| BYTE byRTSServiceField_a; |
| WORD wRTSTransmitLength_a; |
| WORD wRTSDuration_ba; |
| WORD wRTSDuration_aa; |
| WORD wRTSDuration_bb; |
| WORD wReserved3; |
| WORD wRTSDuration_ba_f0; |
| WORD wRTSDuration_aa_f0; |
| WORD wRTSDuration_ba_f1; |
| WORD wRTSDuration_aa_f1; |
| SRTSDataF sRTS; |
| |
| //Data |
| BYTE bySignalField_b; |
| BYTE byServiceField_b; |
| WORD wTransmitLength_b; |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_b; |
| WORD wDuration_a; |
| WORD wDuration_a_f0; |
| WORD wDuration_a_f1; |
| WORD wTimeStampOff_b; |
| WORD wTimeStampOff_a; |
| |
| } TX_AF_G_RTS_MIC, DEF* PTX_AF_G_RTS_MIC; |
| |
| |
| |
| typedef struct tagSTX_AF_G_CTS |
| { |
| //RsvTime |
| WORD wCTSTxRrvTime_ba; |
| WORD wReserved2; |
| WORD wTxRrvTime_b; |
| WORD wTxRrvTime_a; |
| |
| //CTS |
| BYTE byCTSSignalField_b; |
| BYTE byCTSServiceField_b; |
| WORD wCTSTransmitLength_b; |
| WORD wCTSDuration_ba; |
| WORD wReserved3; |
| WORD wCTSDuration_ba_f0; |
| WORD wCTSDuration_ba_f1; |
| SCTSDataF sCTS; |
| |
| //Data |
| BYTE bySignalField_b; |
| BYTE byServiceField_b; |
| WORD wTransmitLength_b; |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_b; |
| WORD wDuration_a; |
| WORD wDuration_a_f0; |
| WORD wDuration_a_f1; |
| WORD wTimeStampOff_b; |
| WORD wTimeStampOff_a; |
| |
| } TX_AF_G_CTS, DEF* PTX_AF_G_CTS; |
| |
| |
| typedef struct tagSTX_AF_G_CTS_MIC |
| { |
| //RsvTime |
| WORD wCTSTxRrvTime_ba; |
| WORD wReserved2; |
| WORD wTxRrvTime_b; |
| WORD wTxRrvTime_a; |
| |
| |
| SMICHDR sMICHDR; |
| |
| //CTS |
| BYTE byCTSSignalField_b; |
| BYTE byCTSServiceField_b; |
| WORD wCTSTransmitLength_b; |
| WORD wCTSDuration_ba; |
| WORD wReserved3; |
| WORD wCTSDuration_ba_f0; |
| WORD wCTSDuration_ba_f1; |
| SCTSDataF sCTS; |
| |
| //Data |
| BYTE bySignalField_b; |
| BYTE byServiceField_b; |
| WORD wTransmitLength_b; |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_b; |
| WORD wDuration_a; |
| WORD wDuration_a_f0; |
| WORD wDuration_a_f1; |
| WORD wTimeStampOff_b; |
| WORD wTimeStampOff_a; |
| |
| } TX_AF_G_CTS_MIC, DEF* PTX_AF_G_CTS_MIC; |
| |
| |
| |
| typedef struct tagSTX_AF_A_RTS |
| { |
| //RsvTime |
| WORD wRTSTxRrvTime_a; |
| WORD wTxRrvTime_a; |
| |
| //RTS |
| BYTE byRTSSignalField_a; |
| BYTE byRTSServiceField_a; |
| WORD wRTSTransmitLength_a; |
| WORD wRTSDuration_a; |
| WORD wReserved2; |
| WORD wRTSDuration_a_f0; |
| WORD wRTSDuration_a_f1; |
| SRTSDataF sRTS; |
| |
| //Data |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_a; |
| WORD wTimeStampOff_a; |
| WORD wDuration_a_f0; |
| WORD wDuration_a_f1; |
| |
| } TX_AF_A_RTS, DEF* PTX_AF_A_RTS; |
| |
| |
| typedef struct tagSTX_AF_A_RTS_MIC |
| { |
| //RsvTime |
| WORD wRTSTxRrvTime_a; |
| WORD wTxRrvTime_a; |
| |
| SMICHDR sMICHDR; |
| |
| //RTS |
| BYTE byRTSSignalField_a; |
| BYTE byRTSServiceField_a; |
| WORD wRTSTransmitLength_a; |
| WORD wRTSDuration_a; |
| WORD wReserved2; |
| WORD wRTSDuration_a_f0; |
| WORD wRTSDuration_a_f1; |
| SRTSDataF sRTS; |
| |
| //Data |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_a; |
| WORD wTimeStampOff_a; |
| WORD wDuration_a_f0; |
| WORD wDuration_a_f1; |
| |
| } TX_AF_A_RTS_MIC, DEF* PTX_AF_A_RTS_MIC; |
| |
| |
| |
| typedef struct tagSTX_AF_A_CTS |
| { |
| //RsvTime |
| WORD wReserved2; |
| WORD wTxRrvTime_a; |
| |
| //Data |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_a; |
| WORD wTimeStampOff_a; |
| WORD wDuration_a_f0; |
| WORD wDuration_a_f1; |
| |
| } TX_AF_A_CTS, DEF* PTX_AF_A_CTS; |
| |
| |
| typedef struct tagSTX_AF_A_CTS_MIC |
| { |
| //RsvTime |
| WORD wReserved2; |
| WORD wTxRrvTime_a; |
| |
| SMICHDR sMICHDR; |
| |
| //Data |
| BYTE bySignalField_a; |
| BYTE byServiceField_a; |
| WORD wTransmitLength_a; |
| WORD wDuration_a; |
| WORD wTimeStampOff_a; |
| WORD wDuration_a_f0; |
| WORD wDuration_a_f1; |
| |
| } TX_AF_A_CTS_MIC, DEF* PTX_AF_A_CTS_MIC; |
| |
| |
| // |
| // union with all of the TX Buffer Type |
| // |
| typedef union tagUTX_BUFFER_CONTAINER |
| { |
| TX_NAF_G_RTS RTS_G; |
| TX_NAF_G_RTS_MIC RTS_G_MIC; |
| TX_NAF_G_CTS CTS_G; |
| TX_NAF_G_CTS_MIC CTS_G_MIC; |
| //TX_NAF_G_BEACON Beacon_G; |
| TX_NAF_AB_RTS RTS_AB; |
| TX_NAF_AB_RTS_MIC RTS_AB_MIC; |
| TX_NAF_AB_CTS CTS_AB; |
| TX_NAF_AB_CTS_MIC CTS_AB_MIC; |
| //TX_NAF_AB_BEACON Beacon_AB; |
| TX_AF_G_RTS RTS_G_AutoFB; |
| TX_AF_G_RTS_MIC RTS_G_AutoFB_MIC; |
| TX_AF_G_CTS CTS_G_AutoFB; |
| TX_AF_G_CTS_MIC CTS_G_AutoFB_MIC; |
| TX_AF_A_RTS RTS_A_AutoFB; |
| TX_AF_A_RTS_MIC RTS_A_AutoFB_MIC; |
| TX_AF_A_CTS CTS_A_AutoFB; |
| TX_AF_A_CTS_MIC CTS_A_AutoFB_MIC; |
| |
| } TX_BUFFER_CONTAINER, DEF* PTX_BUFFER_CONTAINER; |
| |
| |
| // |
| // Remote NDIS message format |
| // |
| typedef struct tagSTX_BUFFER |
| { |
| BYTE byType; |
| BYTE byPKTNO; |
| WORD wTxByteCount; |
| |
| DWORD adwTxKey[4]; |
| WORD wFIFOCtl; |
| WORD wTimeStamp; |
| WORD wFragCtl; |
| WORD wReserved; |
| |
| |
| // Actual message |
| TX_BUFFER_CONTAINER BufferHeader; |
| |
| } TX_BUFFER, DEF* PTX_BUFFER; |
| |
| |
| // |
| // Remote NDIS message format |
| // |
| typedef struct tagSBEACON_BUFFER |
| { |
| BYTE byType; |
| BYTE byPKTNO; |
| WORD wTxByteCount; |
| |
| WORD wFIFOCtl; |
| WORD wTimeStamp; |
| |
| // Actual message |
| TX_BUFFER_CONTAINER BufferHeader; |
| |
| } BEACON_BUFFER, DEF* PBEACON_BUFFER; |
| |
| |
| /*--------------------- Export Variables --------------------------*/ |
| |
| /*--------------------- Export Functions --------------------------*/ |
| |
| |
| #ifdef __cplusplus |
| extern "C" { /* Assume C declarations for C++ */ |
| #endif /* __cplusplus */ |
| |
| |
| |
| BOOL |
| bPacketToWirelessUsb( |
| IN PSDevice pDevice, |
| IN BYTE byPktType, |
| IN PBYTE usbPacketBuf, |
| IN BOOL bNeedEncrypt, |
| IN UINT cbPayloadSize, |
| IN UINT uDMAIdx, |
| IN PSEthernetHeader psEthHeader, |
| IN PBYTE pPacket, |
| IN PSKeyItem pTransmitKey, |
| IN UINT uNodeIndex, |
| IN WORD wCurrentRate, |
| OUT UINT *pcbHeaderLen, |
| OUT UINT *pcbTotalLen |
| ); |
| |
| VOID vDMA0_tx_80211(PSDevice pDevice, struct sk_buff *skb); |
| NTSTATUS nsDMA_tx_packet(PSDevice pDevice, UINT uDMAIdx, struct sk_buff *skb); |
| CMD_STATUS csMgmt_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket); |
| CMD_STATUS csBeacon_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket); |
| BOOL bRelayPacketSend(PSDevice pDevice, PBYTE pbySkbData, UINT uDataLen, UINT uNodeIndex); |
| |
| #ifdef __cplusplus |
| } /* End of extern "C" { */ |
| #endif /* __cplusplus */ |
| |
| |
| |
| |
| #endif // __RXTX_H__ |
| |
| |
| |