118056f34SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
218056f34SGreg Kroah-Hartman /*
394a79942SLarry Finger  * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
494a79942SLarry Finger  *
518056f34SGreg Kroah-Hartman  * Contact Information: wlanfae <wlanfae@realtek.com>
618056f34SGreg Kroah-Hartman  */
794a79942SLarry Finger #ifndef _BATYPE_H_
894a79942SLarry Finger #define _BATYPE_H_
994a79942SLarry Finger 
1094a79942SLarry Finger #define	BA_SETUP_TIMEOUT	200
1194a79942SLarry Finger 
1294a79942SLarry Finger #define	BA_POLICY_DELAYED		0
1394a79942SLarry Finger #define	BA_POLICY_IMMEDIATE	1
1494a79942SLarry Finger 
1594a79942SLarry Finger #define	ADDBA_STATUS_SUCCESS			0
1694a79942SLarry Finger #define	ADDBA_STATUS_REFUSED		37
1794a79942SLarry Finger #define	ADDBA_STATUS_INVALID_PARAM	38
1894a79942SLarry Finger 
1994a79942SLarry Finger #define	DELBA_REASON_END_BA			37
2094a79942SLarry Finger #define	DELBA_REASON_UNKNOWN_BA	38
2194a79942SLarry Finger #define	DELBA_REASON_TIMEOUT			39
227baf9546SLarry Finger union sequence_control {
23c3f1bca8SWilliam Durand 	u16 short_data;
24831cb9dbSLarry Finger 	struct {
25a6a3dd37SWilliam Durand 		u16	frag_num:4;
26cedbc3acSWilliam Durand 		u16	seq_num:12;
2794a79942SLarry Finger 	} field;
287baf9546SLarry Finger };
2994a79942SLarry Finger 
306857f367SLarry Finger union ba_param_set {
31424e6a16SWilliam Durand 	u8 char_data[2];
32113030ceSWilliam Durand 	u16 short_data;
3394a79942SLarry Finger 	struct {
34a6850f14SWilliam Durand 		u16 amsdu_support:1;
354320b7bdSWilliam Durand 		u16 ba_policy:1;
36bfe3388fSWilliam Durand 		u16 tid:4;
37a6d242d4SWilliam Durand 		u16 buffer_size:10;
3894a79942SLarry Finger 	} field;
396857f367SLarry Finger };
4094a79942SLarry Finger 
41f198db0cSLarry Finger union delba_param_set {
42ca3301b8SWilliam Durand 	u8 char_data[2];
43d6afdc53SWilliam Durand 	u16 short_data;
4494a79942SLarry Finger 	struct {
45248a73b1SWilliam Durand 		u16 reserved:11;
46*b3d5b115SWilliam Durand 		u16 initiator:1;
4794a79942SLarry Finger 		u16 TID:4;
4894a79942SLarry Finger 	} field;
49f198db0cSLarry Finger };
5094a79942SLarry Finger 
518cf33316SLarry Finger struct ba_record {
5294a79942SLarry Finger 	struct timer_list		Timer;
5394a79942SLarry Finger 	u8				bValid;
5494a79942SLarry Finger 	u8				DialogToken;
556857f367SLarry Finger 	union ba_param_set BaParamSet;
5694a79942SLarry Finger 	u16				BaTimeoutValue;
577baf9546SLarry Finger 	union sequence_control BaStartSeqCtrl;
588cf33316SLarry Finger };
5994a79942SLarry Finger 
6094a79942SLarry Finger #endif
61