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;
46b3d5b115SWilliam Durand 		u16 initiator:1;
4753c72c4cSWilliam Durand 		u16 tid:4;
4894a79942SLarry Finger 	} field;
49f198db0cSLarry Finger };
5094a79942SLarry Finger 
518cf33316SLarry Finger struct ba_record {
52a318d0b1SWilliam Durand 	struct timer_list timer;
53ba05a619SWilliam Durand 	u8 b_valid;
54142867eaSWilliam Durand 	u8 dialog_token;
55ffa3d0a1SWilliam Durand 	union ba_param_set ba_param_set;
56092bc4e7SWilliam Durand 	u16 ba_timeout_value;
57*34fea352SWilliam Durand 	union sequence_control ba_start_seq_ctrl;
588cf33316SLarry Finger };
5994a79942SLarry Finger 
6094a79942SLarry Finger #endif
61