diff options
Diffstat (limited to 'drivers/staging/vt6656/rxtx.h')
-rw-r--r-- | drivers/staging/vt6656/rxtx.h | 694 |
1 files changed, 694 insertions, 0 deletions
diff --git a/drivers/staging/vt6656/rxtx.h b/drivers/staging/vt6656/rxtx.h new file mode 100644 index 00000000000..6bc22d371c1 --- /dev/null +++ b/drivers/staging/vt6656/rxtx.h @@ -0,0 +1,694 @@ +/* + * 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__ + +#include "ttype.h" +#include "device.h" +#include "wcmd.h" + +/*--------------------- 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, *PSRTSDataF; + +// +// CTS buffer header +// +typedef struct tagSCTSDataF { + WORD wFrameControl; + WORD wDurationID; + BYTE abyRA[U_ETHER_ADDR_LEN]; + WORD wReserved; +} SCTSDataF, *PSCTSDataF; + +// +// MICHDR data header +// +typedef struct tagSMICHDR { + DWORD adwHDR0[4]; + DWORD adwHDR1[4]; + DWORD adwHDR2[4]; +} SMICHDR, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *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, *PBEACON_BUFFER; + + +/*--------------------- Export Variables --------------------------*/ + +/*--------------------- Export Functions --------------------------*/ + +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); + +#endif // __RXTX_H__ + + + |