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 {
2394a79942SLarry Finger 	u16 ShortData;
24831cb9dbSLarry Finger 	struct {
2594a79942SLarry Finger 		u16	FragNum:4;
2694a79942SLarry Finger 		u16	SeqNum:12;
2794a79942SLarry Finger 	} field;
287baf9546SLarry Finger };
2994a79942SLarry Finger 
306857f367SLarry Finger union ba_param_set {
3194a79942SLarry Finger 	u8 charData[2];
3294a79942SLarry Finger 	u16 shortData;
3394a79942SLarry Finger 	struct {
3494a79942SLarry Finger 		u16 AMSDU_Support:1;
3594a79942SLarry Finger 		u16 BAPolicy:1;
3694a79942SLarry Finger 		u16 TID:4;
3794a79942SLarry Finger 		u16 BufferSize:10;
3894a79942SLarry Finger 	} field;
396857f367SLarry Finger };
4094a79942SLarry Finger 
41f198db0cSLarry Finger union delba_param_set {
4294a79942SLarry Finger 	u8 charData[2];
4394a79942SLarry Finger 	u16 shortData;
4494a79942SLarry Finger 	struct {
4594a79942SLarry Finger 		u16 Reserved:11;
4694a79942SLarry Finger 		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