1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _BATYPE_H_ 3 #define _BATYPE_H_ 4 5 #define TOTAL_TXBA_NUM 16 6 #define TOTAL_RXBA_NUM 16 7 8 #define BA_SETUP_TIMEOUT 200 9 #define BA_INACT_TIMEOUT 60000 10 11 #define BA_POLICY_DELAYED 0 12 #define BA_POLICY_IMMEDIATE 1 13 14 #define ADDBA_STATUS_SUCCESS 0 15 #define ADDBA_STATUS_REFUSED 37 16 #define ADDBA_STATUS_INVALID_PARAM 38 17 18 #define DELBA_REASON_QSTA_LEAVING 36 19 #define DELBA_REASON_END_BA 37 20 #define DELBA_REASON_UNKNOWN_BA 38 21 #define DELBA_REASON_TIMEOUT 39 22 /* whether need define BA Action frames here? 23 struct ieee80211_ADDBA_Req{ 24 struct ieee80211_header_data header; 25 u8 category; 26 u8 27 } __attribute__ ((packed)); 28 */ 29 //Is this need?I put here just to make it easier to define structure BA_RECORD //WB 30 typedef union _SEQUENCE_CONTROL{ 31 u16 ShortData; 32 struct { 33 u16 FragNum:4; 34 u16 SeqNum:12; 35 } field; 36 } SEQUENCE_CONTROL, *PSEQUENCE_CONTROL; 37 38 typedef union _BA_PARAM_SET { 39 u8 charData[2]; 40 u16 shortData; 41 struct { 42 u16 AMSDU_Support:1; 43 u16 BAPolicy:1; 44 u16 TID:4; 45 u16 BufferSize:10; 46 } field; 47 } BA_PARAM_SET, *PBA_PARAM_SET; 48 49 typedef union _DELBA_PARAM_SET { 50 u8 charData[2]; 51 u16 shortData; 52 struct { 53 u16 Reserved:11; 54 u16 Initiator:1; 55 u16 TID:4; 56 } field; 57 } DELBA_PARAM_SET, *PDELBA_PARAM_SET; 58 59 typedef struct _BA_RECORD { 60 struct timer_list Timer; 61 u8 bValid; 62 u8 DialogToken; 63 BA_PARAM_SET BaParamSet; 64 u16 BaTimeoutValue; 65 SEQUENCE_CONTROL BaStartSeqCtrl; 66 } BA_RECORD, *PBA_RECORD; 67 68 #endif //end _BATYPE_H_ 69