xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852be/phl/rtw_general_def.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2019 Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  *****************************************************************************/
15*4882a593Smuzhiyun #ifndef _RTW_GENERAL_DEF_H_
16*4882a593Smuzhiyun #define _RTW_GENERAL_DEF_H_
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #define SEC_CAP_CHK_BMC	BIT0
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define BIT0	0x00000001
21*4882a593Smuzhiyun #define BIT1	0x00000002
22*4882a593Smuzhiyun #define BIT2	0x00000004
23*4882a593Smuzhiyun #define BIT3	0x00000008
24*4882a593Smuzhiyun #define BIT4	0x00000010
25*4882a593Smuzhiyun #define BIT5	0x00000020
26*4882a593Smuzhiyun #define BIT6	0x00000040
27*4882a593Smuzhiyun #define BIT7	0x00000080
28*4882a593Smuzhiyun #define BIT8	0x00000100
29*4882a593Smuzhiyun #define BIT9	0x00000200
30*4882a593Smuzhiyun #define BIT10	0x00000400
31*4882a593Smuzhiyun #define BIT11	0x00000800
32*4882a593Smuzhiyun #define BIT12	0x00001000
33*4882a593Smuzhiyun #define BIT13	0x00002000
34*4882a593Smuzhiyun #define BIT14	0x00004000
35*4882a593Smuzhiyun #define BIT15	0x00008000
36*4882a593Smuzhiyun #define BIT16	0x00010000
37*4882a593Smuzhiyun #define BIT17	0x00020000
38*4882a593Smuzhiyun #define BIT18	0x00040000
39*4882a593Smuzhiyun #define BIT19	0x00080000
40*4882a593Smuzhiyun #define BIT20	0x00100000
41*4882a593Smuzhiyun #define BIT21	0x00200000
42*4882a593Smuzhiyun #define BIT22	0x00400000
43*4882a593Smuzhiyun #define BIT23	0x00800000
44*4882a593Smuzhiyun #define BIT24	0x01000000
45*4882a593Smuzhiyun #define BIT25	0x02000000
46*4882a593Smuzhiyun #define BIT26	0x04000000
47*4882a593Smuzhiyun #define BIT27	0x08000000
48*4882a593Smuzhiyun #define BIT28	0x10000000
49*4882a593Smuzhiyun #define BIT29	0x20000000
50*4882a593Smuzhiyun #define BIT30	0x40000000
51*4882a593Smuzhiyun #define BIT31	0x80000000
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #define RTW_U32_MAX 0xFFFFFFFF
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun enum rtl_ic_id {
56*4882a593Smuzhiyun 	RTL8852A,
57*4882a593Smuzhiyun 	RTL8834A,
58*4882a593Smuzhiyun 	RTL8852B,
59*4882a593Smuzhiyun 	RTL8852C,
60*4882a593Smuzhiyun 	MAX_IC_ID
61*4882a593Smuzhiyun };
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /* BIT definition for combination */
64*4882a593Smuzhiyun enum rtw_hci_type {
65*4882a593Smuzhiyun 	RTW_HCI_PCIE = BIT0,
66*4882a593Smuzhiyun 	RTW_HCI_USB = BIT1,
67*4882a593Smuzhiyun 	RTW_HCI_SDIO = BIT2,
68*4882a593Smuzhiyun 	RTW_HCI_GSPI = BIT3,
69*4882a593Smuzhiyun 	RTW_HCI_MAX,
70*4882a593Smuzhiyun };
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun #define	SM_PS_STATIC	0
73*4882a593Smuzhiyun #define	SM_PS_DYNAMIC	1
74*4882a593Smuzhiyun #define	SM_PS_INVALID	2
75*4882a593Smuzhiyun #define	SM_PS_DISABLE	3
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun #define MAC_ADDRESS_LENGTH 6
78*4882a593Smuzhiyun #define IPV4_ADDRESS_LENGTH 4
79*4882a593Smuzhiyun #define IPV6_ADDRESS_LENGTH 16
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun /* Core shall translate system condition into device state for PHL controller */
82*4882a593Smuzhiyun enum rtw_dev_state {
83*4882a593Smuzhiyun 	RTW_DEV_WORKING = BIT0,
84*4882a593Smuzhiyun 	RTW_DEV_SUSPENDING = BIT1,
85*4882a593Smuzhiyun 	RTW_DEV_RESUMING = BIT2,
86*4882a593Smuzhiyun 	RTW_DEV_SURPRISE_REMOVAL = BIT3,
87*4882a593Smuzhiyun 	RTW_DEV_SHUTTING_DOWN = BIT4, /* set by core */
88*4882a593Smuzhiyun 	RTW_DEV_MAX
89*4882a593Smuzhiyun };
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun #define RTW_RATE_MODE_MASK (BIT(7) | BIT(8))
92*4882a593Smuzhiyun #define RTW_RATE_MODE_SHIFT 7
93*4882a593Smuzhiyun #define RTW_RATE_INDEX_MASK 0x007f
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun #define RTW_GET_RATE_MODE(_rtw_data_rate) (u16)((_rtw_data_rate & RTW_RATE_MODE_MASK) >> RTW_RATE_MODE_SHIFT)
96*4882a593Smuzhiyun #define RTW_GET_RATE_INDEX(_rtw_data_rate) (u16)(_rtw_data_rate & RTW_RATE_INDEX_MASK)
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun enum rtw_rate_mode {
99*4882a593Smuzhiyun 	RTW_LEGACY_MODE = 0,
100*4882a593Smuzhiyun 	RTW_HT_MODE = 1,
101*4882a593Smuzhiyun 	RTW_VHT_MODE = 2,
102*4882a593Smuzhiyun 	RTW_HE_MODE = 3
103*4882a593Smuzhiyun };
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun enum rtw_data_rate {
106*4882a593Smuzhiyun 	RTW_DATA_RATE_CCK1		= 0x0,
107*4882a593Smuzhiyun 	RTW_DATA_RATE_CCK2		= 0x1,
108*4882a593Smuzhiyun 	RTW_DATA_RATE_CCK5_5	= 0x2,
109*4882a593Smuzhiyun 	RTW_DATA_RATE_CCK11		= 0x3,
110*4882a593Smuzhiyun 	RTW_DATA_RATE_OFDM6		= 0x4,
111*4882a593Smuzhiyun 	RTW_DATA_RATE_OFDM9		= 0x5,
112*4882a593Smuzhiyun 	RTW_DATA_RATE_OFDM12	= 0x6,
113*4882a593Smuzhiyun 	RTW_DATA_RATE_OFDM18	= 0x7,
114*4882a593Smuzhiyun 	RTW_DATA_RATE_OFDM24	= 0x8,
115*4882a593Smuzhiyun 	RTW_DATA_RATE_OFDM36	= 0x9,
116*4882a593Smuzhiyun 	RTW_DATA_RATE_OFDM48	= 0xA,
117*4882a593Smuzhiyun 	RTW_DATA_RATE_OFDM54	= 0xB,
118*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS0		= 0x80,
119*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS1		= 0x81,
120*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS2		= 0x82,
121*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS3		= 0x83,
122*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS4		= 0x84,
123*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS5		= 0x85,
124*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS6		= 0x86,
125*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS7		= 0x87,
126*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS8		= 0x88,
127*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS9		= 0x89,
128*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS10		= 0x8A,
129*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS11		= 0x8B,
130*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS12		= 0x8C,
131*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS13		= 0x8D,
132*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS14		= 0x8E,
133*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS15		= 0x8F,
134*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS16		= 0x90,
135*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS17		= 0x91,
136*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS18		= 0x92,
137*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS19		= 0x93,
138*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS20		= 0x94,
139*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS21		= 0x95,
140*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS22		= 0x96,
141*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS23		= 0x97,
142*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS24		= 0x98,
143*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS25		= 0x99,
144*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS26		= 0x9A,
145*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS27		= 0x9B,
146*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS28		= 0x9C,
147*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS29		= 0x9D,
148*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS30		= 0x9E,
149*4882a593Smuzhiyun 	RTW_DATA_RATE_MCS31		= 0x9F,
150*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS0	= 0x100,
151*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS1	= 0x101,
152*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS2	= 0x102,
153*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS3	= 0x103,
154*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS4	= 0x104,
155*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS5	= 0x105,
156*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS6	= 0x106,
157*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS7	= 0x107,
158*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS8	= 0x108,
159*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS1_MCS9	= 0x109,
160*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS0	= 0x110,
161*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS1	= 0x111,
162*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS2	= 0x112,
163*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS3	= 0x113,
164*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS4	= 0x114,
165*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS5	= 0x115,
166*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS6	= 0x116,
167*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS7	= 0x117,
168*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS8	= 0x118,
169*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS2_MCS9	= 0x119,
170*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS0	= 0x120,
171*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS1	= 0x121,
172*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS2	= 0x122,
173*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS3	= 0x123,
174*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS4	= 0x124,
175*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS5	= 0x125,
176*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS6	= 0x126,
177*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS7	= 0x127,
178*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS8	= 0x128,
179*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS3_MCS9	= 0x129,
180*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS0	= 0x130,
181*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS1	= 0x131,
182*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS2	= 0x132,
183*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS3	= 0x133,
184*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS4	= 0x134,
185*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS5	= 0x135,
186*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS6	= 0x136,
187*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS7	= 0x137,
188*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS8	= 0x138,
189*4882a593Smuzhiyun 	RTW_DATA_RATE_VHT_NSS4_MCS9	= 0x139,
190*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS0	= 0x180,
191*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS1	= 0x181,
192*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS2	= 0x182,
193*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS3	= 0x183,
194*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS4	= 0x184,
195*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS5	= 0x185,
196*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS6	= 0x186,
197*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS7	= 0x187,
198*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS8	= 0x188,
199*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS9	= 0x189,
200*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS10	= 0x18A,
201*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS1_MCS11	= 0x18B,
202*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS0	= 0x190,
203*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS1	= 0x191,
204*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS2	= 0x192,
205*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS3	= 0x193,
206*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS4	= 0x194,
207*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS5	= 0x195,
208*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS6	= 0x196,
209*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS7	= 0x197,
210*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS8	= 0x198,
211*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS9	= 0x199,
212*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS10	= 0x19A,
213*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS2_MCS11	= 0x19B,
214*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS0	= 0x1A0,
215*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS1	= 0x1A1,
216*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS2	= 0x1A2,
217*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS3	= 0x1A3,
218*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS4	= 0x1A4,
219*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS5	= 0x1A5,
220*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS6	= 0x1A6,
221*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS7	= 0x1A7,
222*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS8	= 0x1A8,
223*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS9	= 0x1A9,
224*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS10	= 0x1AA,
225*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS3_MCS11	= 0x1AB,
226*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS0	= 0x1B0,
227*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS1	= 0x1B1,
228*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS2	= 0x1B2,
229*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS3	= 0x1B3,
230*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS4	= 0x1B4,
231*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS5	= 0x1B5,
232*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS6	= 0x1B6,
233*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS7	= 0x1B7,
234*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS8	= 0x1B8,
235*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS9	= 0x1B9,
236*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS10	= 0x1BA,
237*4882a593Smuzhiyun 	RTW_DATA_RATE_HE_NSS4_MCS11	= 0x1BB,
238*4882a593Smuzhiyun 	RTW_DATA_RATE_MAX = 0x1FF
239*4882a593Smuzhiyun };
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun enum rtw_gi_ltf {
242*4882a593Smuzhiyun 	RTW_GILTF_LGI_4XHE32 = 0,
243*4882a593Smuzhiyun 	RTW_GILTF_SGI_4XHE08 = 1,
244*4882a593Smuzhiyun 	RTW_GILTF_2XHE16 = 2,
245*4882a593Smuzhiyun 	RTW_GILTF_2XHE08 = 3,
246*4882a593Smuzhiyun 	RTW_GILTF_1XHE16 = 4,
247*4882a593Smuzhiyun 	RTW_GILTF_1XHE08 = 5,
248*4882a593Smuzhiyun 	RTW_GILTF_MAX
249*4882a593Smuzhiyun };
250*4882a593Smuzhiyun 
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun /* 11ax spec define for HE Trigger Frame, only used for HE Trigger Frame! */
253*4882a593Smuzhiyun enum rtw_gi_ltf_ul_tb {
254*4882a593Smuzhiyun 	RTW_TB_GILTF_1XHE16 = 0,
255*4882a593Smuzhiyun 	RTW_TB_GILTF_2XHE16 = 1,
256*4882a593Smuzhiyun 	RTW_TB_GILTF_4XHE32 = 2,
257*4882a593Smuzhiyun 	RTW_TB_GILTF_MAX
258*4882a593Smuzhiyun };
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun #define RTW_PHL_MAX_RF_PATH 4
261*4882a593Smuzhiyun enum rf_path {
262*4882a593Smuzhiyun 	RF_PATH_A = 0,
263*4882a593Smuzhiyun 	RF_PATH_B = 1,
264*4882a593Smuzhiyun 	RF_PATH_C = 2,
265*4882a593Smuzhiyun 	RF_PATH_D = 3,
266*4882a593Smuzhiyun 	RF_PATH_AB,
267*4882a593Smuzhiyun 	RF_PATH_AC,
268*4882a593Smuzhiyun 	RF_PATH_AD,
269*4882a593Smuzhiyun 	RF_PATH_BC,
270*4882a593Smuzhiyun 	RF_PATH_BD,
271*4882a593Smuzhiyun 	RF_PATH_CD,
272*4882a593Smuzhiyun 	RF_PATH_ABC,
273*4882a593Smuzhiyun 	RF_PATH_ABD,
274*4882a593Smuzhiyun 	RF_PATH_ACD,
275*4882a593Smuzhiyun 	RF_PATH_BCD,
276*4882a593Smuzhiyun 	RF_PATH_ABCD,
277*4882a593Smuzhiyun };
278*4882a593Smuzhiyun 
279*4882a593Smuzhiyun /*HW SPEC & SW/HW CAP*/
280*4882a593Smuzhiyun #define PROTO_CAP_11B		BIT0
281*4882a593Smuzhiyun #define PROTO_CAP_11G		BIT1
282*4882a593Smuzhiyun #define PROTO_CAP_11N		BIT2
283*4882a593Smuzhiyun #define PROTO_CAP_11AC		BIT3
284*4882a593Smuzhiyun #define PROTO_CAP_11AX		BIT4
285*4882a593Smuzhiyun #define PROTO_CAP_BIT_NUM	4
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun enum wlan_mode {
288*4882a593Smuzhiyun 	WLAN_MD_INVALID = 0,
289*4882a593Smuzhiyun 	WLAN_MD_11B	= BIT0,
290*4882a593Smuzhiyun 	WLAN_MD_11A	= BIT1,
291*4882a593Smuzhiyun 	WLAN_MD_11G	= BIT2,
292*4882a593Smuzhiyun 	WLAN_MD_11N	= BIT3,
293*4882a593Smuzhiyun 	WLAN_MD_11AC	= BIT4,
294*4882a593Smuzhiyun 	WLAN_MD_11AX	= BIT5,
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun 	/* Type for current wireless mode */
297*4882a593Smuzhiyun 	WLAN_MD_11BG	= (WLAN_MD_11B | WLAN_MD_11G),
298*4882a593Smuzhiyun 	WLAN_MD_11GN	= (WLAN_MD_11G | WLAN_MD_11N),
299*4882a593Smuzhiyun 	WLAN_MD_11AN	= (WLAN_MD_11A | WLAN_MD_11N),
300*4882a593Smuzhiyun 	WLAN_MD_11BN	= (WLAN_MD_11B | WLAN_MD_11N),
301*4882a593Smuzhiyun 	WLAN_MD_11BGN	= (WLAN_MD_11B | WLAN_MD_11G | WLAN_MD_11N),
302*4882a593Smuzhiyun 	WLAN_MD_11BGAC = (WLAN_MD_11B | WLAN_MD_11G | WLAN_MD_11AC),
303*4882a593Smuzhiyun 	WLAN_MD_11BGAX = (WLAN_MD_11B | WLAN_MD_11G | WLAN_MD_11AX),
304*4882a593Smuzhiyun 	WLAN_MD_11GAC  = (WLAN_MD_11G | WLAN_MD_11AC),
305*4882a593Smuzhiyun 	WLAN_MD_11GAX  = (WLAN_MD_11G | WLAN_MD_11AX),
306*4882a593Smuzhiyun 	WLAN_MD_11A_AC = (WLAN_MD_11A | WLAN_MD_11AC),
307*4882a593Smuzhiyun 	WLAN_MD_11A_AX = (WLAN_MD_11A | WLAN_MD_11AX),
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun 	/* Capability -Type for registry default wireless mode */
310*4882a593Smuzhiyun 	WLAN_MD_11AGN	= (WLAN_MD_11A | WLAN_MD_11G | WLAN_MD_11N ),
311*4882a593Smuzhiyun 	WLAN_MD_11ABGN	= (WLAN_MD_11A | WLAN_MD_11B | WLAN_MD_11G | WLAN_MD_11N ),
312*4882a593Smuzhiyun 	WLAN_MD_11ANAC	= (WLAN_MD_11A | WLAN_MD_11N | WLAN_MD_11AC),
313*4882a593Smuzhiyun 	WLAN_MD_11BGNAC = (WLAN_MD_11B | WLAN_MD_11G | WLAN_MD_11N | WLAN_MD_11AC),
314*4882a593Smuzhiyun 	WLAN_MD_11GNAC  = (WLAN_MD_11G | WLAN_MD_11N | WLAN_MD_11AC),
315*4882a593Smuzhiyun 	WLAN_MD_24G_MIX = (WLAN_MD_11B | WLAN_MD_11G | WLAN_MD_11N | WLAN_MD_11AC | WLAN_MD_11AX),
316*4882a593Smuzhiyun 	WLAN_MD_5G_MIX	= (WLAN_MD_11A | WLAN_MD_11N | WLAN_MD_11AC | WLAN_MD_11AX),
317*4882a593Smuzhiyun 	WLAN_MD_MAX	= (WLAN_MD_24G_MIX|WLAN_MD_5G_MIX),
318*4882a593Smuzhiyun };
319*4882a593Smuzhiyun 
320*4882a593Smuzhiyun enum band_type {
321*4882a593Smuzhiyun 	BAND_ON_24G	= 0,
322*4882a593Smuzhiyun 	BAND_ON_5G	= 1,
323*4882a593Smuzhiyun 	BAND_ON_6G	= 2,
324*4882a593Smuzhiyun 	BAND_MAX,
325*4882a593Smuzhiyun };
326*4882a593Smuzhiyun 
327*4882a593Smuzhiyun /*HW SPEC & SW/HW CAP*/
328*4882a593Smuzhiyun #define BAND_CAP_2G	BIT(BAND_ON_24G)
329*4882a593Smuzhiyun #define BAND_CAP_5G	BIT(BAND_ON_5G)
330*4882a593Smuzhiyun #define BAND_CAP_6G	BIT(BAND_ON_6G)
331*4882a593Smuzhiyun #define BAND_CAP_BIT_NUM	3
332*4882a593Smuzhiyun 
333*4882a593Smuzhiyun enum channel_width {
334*4882a593Smuzhiyun 	CHANNEL_WIDTH_20	= 0,
335*4882a593Smuzhiyun 	CHANNEL_WIDTH_40	= 1,
336*4882a593Smuzhiyun 	CHANNEL_WIDTH_80	= 2,
337*4882a593Smuzhiyun 	CHANNEL_WIDTH_160	= 3,
338*4882a593Smuzhiyun 	CHANNEL_WIDTH_80_80	= 4,
339*4882a593Smuzhiyun 	CHANNEL_WIDTH_5	= 5,
340*4882a593Smuzhiyun 	CHANNEL_WIDTH_10	= 6,
341*4882a593Smuzhiyun 	CHANNEL_WIDTH_MAX	= 7,
342*4882a593Smuzhiyun };
343*4882a593Smuzhiyun 
344*4882a593Smuzhiyun /*HW SPEC & SW/HW CAP*/
345*4882a593Smuzhiyun #define BW_CAP_20M		BIT(CHANNEL_WIDTH_20)
346*4882a593Smuzhiyun #define BW_CAP_40M		BIT(CHANNEL_WIDTH_40)
347*4882a593Smuzhiyun #define BW_CAP_80M		BIT(CHANNEL_WIDTH_80)
348*4882a593Smuzhiyun #define BW_CAP_160M		BIT(CHANNEL_WIDTH_160)
349*4882a593Smuzhiyun #define BW_CAP_80_80M	BIT(CHANNEL_WIDTH_80_80)
350*4882a593Smuzhiyun #define BW_CAP_5M		BIT(CHANNEL_WIDTH_5)
351*4882a593Smuzhiyun #define BW_CAP_10M		BIT(CHANNEL_WIDTH_10)
352*4882a593Smuzhiyun #define BW_CAP_BIT_NUM	7
353*4882a593Smuzhiyun 
354*4882a593Smuzhiyun 
355*4882a593Smuzhiyun /*
356*4882a593Smuzhiyun  * Represent Extention Channel Offset in HT Capabilities
357*4882a593Smuzhiyun  * Secondary Channel Offset
358*4882a593Smuzhiyun  * 0 -SCN, 1 -SCA, 2 -RSVD, 3 - SCB
359*4882a593Smuzhiyun  *
360*4882a593Smuzhiyun  */
361*4882a593Smuzhiyun enum chan_offset {
362*4882a593Smuzhiyun 	CHAN_OFFSET_NO_EXT = 0,	/*SCN - no secondary channel*/
363*4882a593Smuzhiyun 	CHAN_OFFSET_UPPER = 1,		/*SCA - secondary channel above*/
364*4882a593Smuzhiyun 	CHAN_OFFSET_NO_DEF = 2,	/*Reserved*/
365*4882a593Smuzhiyun 	CHAN_OFFSET_LOWER = 3,		/*SCB - secondary channel below*/
366*4882a593Smuzhiyun };
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun enum rf_type {
369*4882a593Smuzhiyun 	RF_1T1R	= 0,
370*4882a593Smuzhiyun 	RF_1T2R	= 1,
371*4882a593Smuzhiyun 	RF_2T2R	= 2,
372*4882a593Smuzhiyun 	RF_2T3R	= 3,
373*4882a593Smuzhiyun 	RF_2T4R	= 4,
374*4882a593Smuzhiyun 	RF_3T3R	= 5,
375*4882a593Smuzhiyun 	RF_3T4R	= 6,
376*4882a593Smuzhiyun 	RF_4T4R	= 7,
377*4882a593Smuzhiyun 	RF_TYPE_MAX,
378*4882a593Smuzhiyun };
379*4882a593Smuzhiyun 
380*4882a593Smuzhiyun enum rtw_rf_state {
381*4882a593Smuzhiyun 	RTW_RF_ON,
382*4882a593Smuzhiyun 	RTW_RF_OFF,
383*4882a593Smuzhiyun 	RTW_RF_MAX
384*4882a593Smuzhiyun };
385*4882a593Smuzhiyun 
386*4882a593Smuzhiyun enum rtw_usb_speed {
387*4882a593Smuzhiyun 	RTW_USB_SPEED_LOW	= 0,	/*U2 (2.0)- 1.0 - 1.5 Mbps - 0.192MBs*/
388*4882a593Smuzhiyun 	RTW_USB_SPEED_FULL	= 1,	/*U2 (2.0)- 1.1 - 12 Mbps - 1.5MBs*/
389*4882a593Smuzhiyun 	RTW_USB_SPEED_HIGH	= 2,	/*U2 (2.0)- 2.1 - 480 Mbps - 60MBs*/
390*4882a593Smuzhiyun 	RTW_USB_SPEED_SUPER	= 3,	/*U3 (3.2 Gen 1)- 3.0 - 5 Gbps - 640MBs*/
391*4882a593Smuzhiyun 	RTW_USB_SPEED_SUPER_10G = 4,	/*U3 (3.2 Gen 2)- 3.1 - 10 Gbps - 1280MBs*/
392*4882a593Smuzhiyun 	RTW_USB_SPEED_SUPER_20G = 5,	/*U3 (3.2 Gen 2x2)- 3.2 - 20 Gbps - 2560MBs*/
393*4882a593Smuzhiyun 
394*4882a593Smuzhiyun 	/* keep last */
395*4882a593Smuzhiyun 	RTW_USB_SPEED_MAX,
396*4882a593Smuzhiyun 	RTW_USB_SPEED_UNKNOWN = RTW_USB_SPEED_MAX,
397*4882a593Smuzhiyun };
398*4882a593Smuzhiyun 
399*4882a593Smuzhiyun #define USB_SUPER_SPEED_BULK_SIZE	1024	/* usb 3.0 */
400*4882a593Smuzhiyun #define USB_HIGH_SPEED_BULK_SIZE	512	/* usb 2.0 */
401*4882a593Smuzhiyun #define USB_FULL_SPEED_BULK_SIZE	64	/* usb 1.1 */
402*4882a593Smuzhiyun 
403*4882a593Smuzhiyun #define IV_LENGTH 8
404*4882a593Smuzhiyun 
405*4882a593Smuzhiyun enum rtw_enc_algo {
406*4882a593Smuzhiyun 	RTW_ENC_NONE,
407*4882a593Smuzhiyun 	RTW_ENC_WEP40,
408*4882a593Smuzhiyun 	RTW_ENC_WEP104,
409*4882a593Smuzhiyun 	RTW_ENC_TKIP,
410*4882a593Smuzhiyun 	RTW_ENC_WAPI,
411*4882a593Smuzhiyun 	RTW_ENC_GCMSMS4,
412*4882a593Smuzhiyun 	RTW_ENC_CCMP,
413*4882a593Smuzhiyun 	RTW_ENC_CCMP256,
414*4882a593Smuzhiyun 	RTW_ENC_GCMP,
415*4882a593Smuzhiyun 	RTW_ENC_GCMP256,
416*4882a593Smuzhiyun 	RTW_ENC_BIP_CCMP128,
417*4882a593Smuzhiyun 	RTW_ENC_MAX
418*4882a593Smuzhiyun };
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun enum rtw_sec_ent_mode {
421*4882a593Smuzhiyun 	RTW_SEC_ENT_MODE_0,		/* No key */
422*4882a593Smuzhiyun 	RTW_SEC_ENT_MODE_1,		/* WEP */
423*4882a593Smuzhiyun 	RTW_SEC_ENT_MODE_2,		/* 2 unicast + 3 multicast + 2 BIP keys */
424*4882a593Smuzhiyun 	RTW_SEC_ENT_MODE_3,		/* 2 unicast + 4 multicast + 1 BIP keys */
425*4882a593Smuzhiyun };
426*4882a593Smuzhiyun 
427*4882a593Smuzhiyun enum rtw_sec_key_type {
428*4882a593Smuzhiyun 	RTW_SEC_KEY_UNICAST,
429*4882a593Smuzhiyun 	RTW_SEC_KEY_MULTICAST,
430*4882a593Smuzhiyun 	RTW_SEC_KEY_BIP,
431*4882a593Smuzhiyun 	RTW_SEC_KEY_MAX
432*4882a593Smuzhiyun };
433*4882a593Smuzhiyun 
434*4882a593Smuzhiyun /**
435*4882a593Smuzhiyun  * Figure 27-7 + Table 9-31h from Ax Spec D4.2
436*4882a593Smuzhiyun  * B7-B1:
437*4882a593Smuzhiyun  * 	RU26 : 0 1 2 3 4 5 6 7 8 9 10 ... 36
438*4882a593Smuzhiyun  * 	RU52 : 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
439*4882a593Smuzhiyun  * 	RU106 : 53 54 55 56 57 58 59 60
440*4882a593Smuzhiyun  * 	RU242 : 61 62 63 64
441*4882a593Smuzhiyun  * 	RU484 : 65 66
442*4882a593Smuzhiyun  * 	RU996 : 67
443*4882a593Smuzhiyun  * 	RU996x2: 68
444*4882a593Smuzhiyun  **/
445*4882a593Smuzhiyun enum rtw_he_ru_idx {
446*4882a593Smuzhiyun 	/* 20MHz - 1 */
447*4882a593Smuzhiyun 	RTW_HE_RU26_1 = 0,
448*4882a593Smuzhiyun 	RTW_HE_RU26_2,
449*4882a593Smuzhiyun 	RTW_HE_RU26_3,
450*4882a593Smuzhiyun 	RTW_HE_RU26_4,
451*4882a593Smuzhiyun 	RTW_HE_RU26_5,
452*4882a593Smuzhiyun 	RTW_HE_RU26_6,
453*4882a593Smuzhiyun 	RTW_HE_RU26_7,
454*4882a593Smuzhiyun 	RTW_HE_RU26_8,
455*4882a593Smuzhiyun 	RTW_HE_RU26_9,
456*4882a593Smuzhiyun 	/* 20MHz - 2 */
457*4882a593Smuzhiyun 	RTW_HE_RU26_10,
458*4882a593Smuzhiyun 	RTW_HE_RU26_11,
459*4882a593Smuzhiyun 	RTW_HE_RU26_12,
460*4882a593Smuzhiyun 	RTW_HE_RU26_13,
461*4882a593Smuzhiyun 	RTW_HE_RU26_14,
462*4882a593Smuzhiyun 	RTW_HE_RU26_15,
463*4882a593Smuzhiyun 	RTW_HE_RU26_16,
464*4882a593Smuzhiyun 	RTW_HE_RU26_17,
465*4882a593Smuzhiyun 	RTW_HE_RU26_18,
466*4882a593Smuzhiyun 	/* Center 26-tone */
467*4882a593Smuzhiyun 	RTW_HE_RU26_19,
468*4882a593Smuzhiyun 	/* 20MHz - 3 */
469*4882a593Smuzhiyun 	RTW_HE_RU26_20,
470*4882a593Smuzhiyun 	RTW_HE_RU26_21,
471*4882a593Smuzhiyun 	RTW_HE_RU26_22,
472*4882a593Smuzhiyun 	RTW_HE_RU26_23,
473*4882a593Smuzhiyun 	RTW_HE_RU26_24,
474*4882a593Smuzhiyun 	RTW_HE_RU26_25,
475*4882a593Smuzhiyun 	RTW_HE_RU26_26,
476*4882a593Smuzhiyun 	RTW_HE_RU26_27,
477*4882a593Smuzhiyun 	RTW_HE_RU26_28,
478*4882a593Smuzhiyun 	/* 20MHz - 4 */
479*4882a593Smuzhiyun 	RTW_HE_RU26_29,
480*4882a593Smuzhiyun 	RTW_HE_RU26_30,
481*4882a593Smuzhiyun 	RTW_HE_RU26_31,
482*4882a593Smuzhiyun 	RTW_HE_RU26_32,
483*4882a593Smuzhiyun 	RTW_HE_RU26_33,
484*4882a593Smuzhiyun 	RTW_HE_RU26_34,
485*4882a593Smuzhiyun 	RTW_HE_RU26_35,
486*4882a593Smuzhiyun 	RTW_HE_RU26_36,
487*4882a593Smuzhiyun 	RTW_HE_RU26_37 = 36,
488*4882a593Smuzhiyun 	/* 20MHz - 1 */
489*4882a593Smuzhiyun 	RTW_HE_RU52_1 = 37,
490*4882a593Smuzhiyun 	RTW_HE_RU52_2,
491*4882a593Smuzhiyun 	RTW_HE_RU52_3,
492*4882a593Smuzhiyun 	RTW_HE_RU52_4,
493*4882a593Smuzhiyun 	/* 20MHz - 2 */
494*4882a593Smuzhiyun 	RTW_HE_RU52_5,
495*4882a593Smuzhiyun 	RTW_HE_RU52_6,
496*4882a593Smuzhiyun 	RTW_HE_RU52_7,
497*4882a593Smuzhiyun 	RTW_HE_RU52_8,
498*4882a593Smuzhiyun 	/* 20MHz - 3 */
499*4882a593Smuzhiyun 	RTW_HE_RU52_9,
500*4882a593Smuzhiyun 	RTW_HE_RU52_10,
501*4882a593Smuzhiyun 	RTW_HE_RU52_11,
502*4882a593Smuzhiyun 	RTW_HE_RU52_12,
503*4882a593Smuzhiyun 	/* 20MHz - 4 */
504*4882a593Smuzhiyun 	RTW_HE_RU52_13,
505*4882a593Smuzhiyun 	RTW_HE_RU52_14,
506*4882a593Smuzhiyun 	RTW_HE_RU52_15,
507*4882a593Smuzhiyun 	RTW_HE_RU52_16 = 52,
508*4882a593Smuzhiyun 	/* 20MHz - 1 */
509*4882a593Smuzhiyun 	RTW_HE_RU106_1 = 53,
510*4882a593Smuzhiyun 	RTW_HE_RU106_2,
511*4882a593Smuzhiyun 	/* 20MHz - 2 */
512*4882a593Smuzhiyun 	RTW_HE_RU106_3,
513*4882a593Smuzhiyun 	RTW_HE_RU106_4,
514*4882a593Smuzhiyun 	/* 20MHz - 3 */
515*4882a593Smuzhiyun 	RTW_HE_RU106_5,
516*4882a593Smuzhiyun 	RTW_HE_RU106_6,
517*4882a593Smuzhiyun 	/* 20MHz - 4 */
518*4882a593Smuzhiyun 	RTW_HE_RU106_7,
519*4882a593Smuzhiyun 	RTW_HE_RU106_8 = 60,
520*4882a593Smuzhiyun 	/* 20MHz  */
521*4882a593Smuzhiyun 	RTW_HE_RU242_1 = 61,
522*4882a593Smuzhiyun 	RTW_HE_RU242_2,
523*4882a593Smuzhiyun 	RTW_HE_RU242_3,
524*4882a593Smuzhiyun 	RTW_HE_RU242_4 = 64,
525*4882a593Smuzhiyun 	/* 40MHz  */
526*4882a593Smuzhiyun 	RTW_HE_RU484_1 = 65,
527*4882a593Smuzhiyun 	RTW_HE_RU484_2 = 66,
528*4882a593Smuzhiyun 	/* 80MHz  */
529*4882a593Smuzhiyun 	RTW_HE_RU996_1 = 67,
530*4882a593Smuzhiyun 	/* 160MHz  */
531*4882a593Smuzhiyun 	RTW_HE_RU2x996_1 = 68,
532*4882a593Smuzhiyun };
533*4882a593Smuzhiyun 
534*4882a593Smuzhiyun enum rtw_protect_mode {
535*4882a593Smuzhiyun 	RTW_PROTECT_DISABLE = 0,
536*4882a593Smuzhiyun 	RTW_PROTECT_RTS = 1,
537*4882a593Smuzhiyun 	RTW_PROTECT_CTS2SELF = 2,
538*4882a593Smuzhiyun 	RTW_PROTECT_HW_RTS = 3
539*4882a593Smuzhiyun };
540*4882a593Smuzhiyun 
541*4882a593Smuzhiyun enum rtw_ac {
542*4882a593Smuzhiyun 	RTW_AC_BE = 0,
543*4882a593Smuzhiyun 	RTW_AC_BK = 1,
544*4882a593Smuzhiyun 	RTW_AC_VI = 2,
545*4882a593Smuzhiyun 	RTW_AC_VO = 3
546*4882a593Smuzhiyun };
547*4882a593Smuzhiyun 
548*4882a593Smuzhiyun enum rtw_edcca_mode {
549*4882a593Smuzhiyun 	RTW_EDCCA_NORMAL,
550*4882a593Smuzhiyun 	RTW_EDCCA_ETSI,
551*4882a593Smuzhiyun 	RTW_EDCCA_JP,
552*4882a593Smuzhiyun 	RTW_EDCCA_MAX
553*4882a593Smuzhiyun };
554*4882a593Smuzhiyun 
555*4882a593Smuzhiyun enum rtw_mac_pwr_st {
556*4882a593Smuzhiyun 	RTW_MAC_PWR_NONE = 0,
557*4882a593Smuzhiyun 	RTW_MAC_PWR_OFF = 1,
558*4882a593Smuzhiyun 	RTW_MAC_PWR_ON = 2,
559*4882a593Smuzhiyun 	RTW_MAC_PWR_LPS = 3,
560*4882a593Smuzhiyun 	RTW_MAC_PWR_MAX = 0x4
561*4882a593Smuzhiyun };
562*4882a593Smuzhiyun 
563*4882a593Smuzhiyun enum rtw_pcie_bus_func_cap_t {
564*4882a593Smuzhiyun 	RTW_PCIE_BUS_FUNC_DISABLE = 0,
565*4882a593Smuzhiyun 	RTW_PCIE_BUS_FUNC_ENABLE = 1,
566*4882a593Smuzhiyun 	RTW_PCIE_BUS_FUNC_DEFAULT = 2,
567*4882a593Smuzhiyun 	RTW_PCIE_BUS_FUNC_IGNORE = 3
568*4882a593Smuzhiyun };
569*4882a593Smuzhiyun 
570*4882a593Smuzhiyun /* follow mac's definetion, mac_ax_sw_io_mode*/
571*4882a593Smuzhiyun enum rtw_gpio_mode {
572*4882a593Smuzhiyun 	RTW_AX_SW_IO_MODE_INPUT,
573*4882a593Smuzhiyun 	RTW_AX_SW_IO_MODE_OUTPUT_OD,
574*4882a593Smuzhiyun 	RTW_AX_SW_IO_MODE_OUTPUT_PP,
575*4882a593Smuzhiyun 	RTW_AX_SW_IO_MODE_MAX
576*4882a593Smuzhiyun };
577*4882a593Smuzhiyun 
578*4882a593Smuzhiyun /*MAC_AX_PCIE_L0SDLY_IGNORE = 0xFF, MAC_AX_PCIE_L1DLY_IGNORE = 0xFF, MAC_AX_PCIE_CLKDLY_IGNORE = 0xFF */
579*4882a593Smuzhiyun #define RTW_PCIE_BUS_ASPM_DLY_IGNORE 0xFF /* Fully controlled by HW */
580*4882a593Smuzhiyun 
581*4882a593Smuzhiyun #define RTW_FRAME_TYPE_MGNT 0
582*4882a593Smuzhiyun #define RTW_FRAME_TYPE_CTRL 1
583*4882a593Smuzhiyun #define RTW_FRAME_TYPE_DATA 2
584*4882a593Smuzhiyun #define RTW_FRAME_TYPE_EXT_RSVD 3
585*4882a593Smuzhiyun /* Association Related PKT Type + SubType */
586*4882a593Smuzhiyun 
587*4882a593Smuzhiyun #define FRAME_OFFSET_FRAME_CONTROL		0
588*4882a593Smuzhiyun #define FRAME_OFFSET_DURATION			2
589*4882a593Smuzhiyun #define FRAME_OFFSET_ADDRESS1			4
590*4882a593Smuzhiyun #define FRAME_OFFSET_ADDRESS2			10
591*4882a593Smuzhiyun #define FRAME_OFFSET_ADDRESS3			16
592*4882a593Smuzhiyun #define FRAME_OFFSET_SEQUENCE			22
593*4882a593Smuzhiyun #define FRAME_OFFSET_ADDRESS4			24
594*4882a593Smuzhiyun #define PHL_GET_80211_HDR_TYPE(_hdr)	LE_BITS_TO_2BYTE((u8 *)_hdr, 2, 6)
595*4882a593Smuzhiyun #define PHL_GET_80211_HDR_MORE_FRAG(_hdr) LE_BITS_TO_2BYTE((u8 *)_hdr, 10, 1)
596*4882a593Smuzhiyun #define PHL_GET_80211_HDR_RETRY(_hdr)	LE_BITS_TO_2BYTE((u8 *)_hdr, 11, 1)
597*4882a593Smuzhiyun #define PHL_GET_80211_HDR_FRAG_NUM(_hdr)	LE_BITS_TO_2BYTE((u8 *)_hdr + 22, 0, 4)
598*4882a593Smuzhiyun #define PHL_GET_80211_HDR_SEQUENCE(_hdr)	LE_BITS_TO_2BYTE((u8 *)_hdr + 22, 4, 12)
599*4882a593Smuzhiyun #define PHL_GET_80211_HDR_ADDRESS2(_d, _hdr, _val) \
600*4882a593Smuzhiyun 		_os_mem_cpy(_d, (u8 *)_val, (u8 *)_hdr + FRAME_OFFSET_ADDRESS2, 6)
601*4882a593Smuzhiyun #define PHL_GET_80211_HDR_ADDRESS3(_d, _hdr, _val) \
602*4882a593Smuzhiyun 		_os_mem_cpy(_d, (u8 *)_val, (u8 *)_hdr + FRAME_OFFSET_ADDRESS3, 6)
603*4882a593Smuzhiyun 
604*4882a593Smuzhiyun #define RTW_FRAME_TYPE_BEACON 32
605*4882a593Smuzhiyun #define RTW_FRAME_TYPE_PROBE_RESP 20
606*4882a593Smuzhiyun #define RTW_FRAME_TYPE_ASOC_REQ 0
607*4882a593Smuzhiyun #define RTW_FRAME_TYPE_ASOC_RESP 4
608*4882a593Smuzhiyun #define RTW_FRAME_TYPE_REASOC_REQ 8
609*4882a593Smuzhiyun #define RTW_FRAME_TYPE_REASOC_RESP 12
610*4882a593Smuzhiyun #define RTW_IS_ASOC_PKT(_TYPE) \
611*4882a593Smuzhiyun 	((_TYPE == RTW_FRAME_TYPE_REASOC_RESP) || \
612*4882a593Smuzhiyun 	 (_TYPE == RTW_FRAME_TYPE_REASOC_REQ) || \
613*4882a593Smuzhiyun 	 (_TYPE == RTW_FRAME_TYPE_ASOC_RESP) || \
614*4882a593Smuzhiyun 	 (_TYPE == RTW_FRAME_TYPE_ASOC_REQ)) ? true : false
615*4882a593Smuzhiyun 
616*4882a593Smuzhiyun #define RTW_IS_ASOC_REQ_PKT(_TYPE) \
617*4882a593Smuzhiyun 		((_TYPE == RTW_FRAME_TYPE_REASOC_REQ) || \
618*4882a593Smuzhiyun 		 (_TYPE == RTW_FRAME_TYPE_ASOC_REQ)) ? true : false
619*4882a593Smuzhiyun 
620*4882a593Smuzhiyun #define RTW_IS_BEACON_OR_PROBE_RESP_PKT(_TYPE) \
621*4882a593Smuzhiyun 	((_TYPE == RTW_FRAME_TYPE_BEACON) || \
622*4882a593Smuzhiyun 	 (_TYPE == RTW_FRAME_TYPE_PROBE_RESP)) ? true : false
623*4882a593Smuzhiyun 
624*4882a593Smuzhiyun #define TU 1024 /* Time Unit (TU): 1024 us*/
625*4882a593Smuzhiyun 
626*4882a593Smuzhiyun #define RTW_MAX_ETH_PKT_LEN 1536
627*4882a593Smuzhiyun 
628*4882a593Smuzhiyun #endif /*_RTW_GENERAL_DEF_H_*/
629