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