#ifndef _BATYPE_H_ #define _BATYPE_H_ #define TOTAL_TXBA_NUM 16 #define TOTAL_RXBA_NUM 16 #define BA_SETUP_TIMEOUT 200 #define BA_INACT_TIMEOUT 60000 #define BA_POLICY_DELAYED 0 #define BA_POLICY_IMMEDIATE 1 #define ADDBA_STATUS_SUCCESS 0 #define ADDBA_STATUS_REFUSED 37 #define ADDBA_STATUS_INVALID_PARAM 38 #define DELBA_REASON_QSTA_LEAVING 36 #define DELBA_REASON_END_BA 37 #define DELBA_REASON_UNKNOWN_BA 38 #define DELBA_REASON_TIMEOUT 39 /* whether need define BA Action frames here? struct ieee80211_ADDBA_Req{ struct ieee80211_header_data header; u8 category; u8 } __attribute__ ((packed)); */ //Is this need?I put here just to make it easier to define structure BA_RECORD //WB typedef union _SEQUENCE_CONTROL{ u16 ShortData; struct { u16 FragNum:4; u16 SeqNum:12; }field; }SEQUENCE_CONTROL, *PSEQUENCE_CONTROL; typedef union _BA_PARAM_SET { u8 charData[2]; u16 shortData; struct { u16 AMSDU_Support:1; u16 BAPolicy:1; u16 TID:4; u16 BufferSize:10; } field; } BA_PARAM_SET, *PBA_PARAM_SET; typedef union _DELBA_PARAM_SET { u8 charData[2]; u16 shortData; struct { u16 Reserved:11; u16 Initiator:1; u16 TID:4; } field; } DELBA_PARAM_SET, *PDELBA_PARAM_SET; typedef struct _BA_RECORD { struct timer_list Timer; u8 bValid; u8 DialogToken; BA_PARAM_SET BaParamSet; u16 BaTimeoutValue; SEQUENCE_CONTROL BaStartSeqCtrl; } BA_RECORD, *PBA_RECORD; #endif //end _BATYPE_H_