xref: /wlan-driver/fw-api/hw/qcn6432/mactx_user_desc_per_user.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
5*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name  *
8*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name  */
16*5113495bSYour Name 
17*5113495bSYour Name #ifndef _MACTX_USER_DESC_PER_USER_H_
18*5113495bSYour Name #define _MACTX_USER_DESC_PER_USER_H_
19*5113495bSYour Name #if !defined(__ASSEMBLER__)
20*5113495bSYour Name #endif
21*5113495bSYour Name 
22*5113495bSYour Name #define NUM_OF_DWORDS_MACTX_USER_DESC_PER_USER 4
23*5113495bSYour Name 
24*5113495bSYour Name #define NUM_OF_QWORDS_MACTX_USER_DESC_PER_USER 2
25*5113495bSYour Name 
26*5113495bSYour Name 
27*5113495bSYour Name struct mactx_user_desc_per_user {
28*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
29*5113495bSYour Name              uint32_t psdu_length                                             : 24, // [23:0]
30*5113495bSYour Name                       reserved_0a                                             :  8; // [31:24]
31*5113495bSYour Name              uint32_t ru_start_index                                          :  8, // [7:0]
32*5113495bSYour Name                       ru_size                                                 :  4, // [11:8]
33*5113495bSYour Name                       reserved_1b                                             :  4, // [15:12]
34*5113495bSYour Name                       ofdma_mu_mimo_enabled                                   :  1, // [16:16]
35*5113495bSYour Name                       nss                                                     :  3, // [19:17]
36*5113495bSYour Name                       stream_offset                                           :  3, // [22:20]
37*5113495bSYour Name                       reserved_1c                                             :  1, // [23:23]
38*5113495bSYour Name                       mcs                                                     :  4, // [27:24]
39*5113495bSYour Name                       dcm                                                     :  1, // [28:28]
40*5113495bSYour Name                       reserved_1d                                             :  3; // [31:29]
41*5113495bSYour Name              uint32_t fec_type                                                :  1, // [0:0]
42*5113495bSYour Name                       reserved_2a                                             :  7, // [7:1]
43*5113495bSYour Name                       user_bf_type                                            :  2, // [9:8]
44*5113495bSYour Name                       reserved_2b                                             :  6, // [15:10]
45*5113495bSYour Name                       drop_user_cbf                                           :  1, // [16:16]
46*5113495bSYour Name                       reserved_2c                                             :  7, // [23:17]
47*5113495bSYour Name                       ldpc_extra_symbol                                       :  1, // [24:24]
48*5113495bSYour Name                       force_extra_symbol                                      :  1, // [25:25]
49*5113495bSYour Name                       reserved_2d                                             :  6; // [31:26]
50*5113495bSYour Name              uint32_t sw_peer_id                                              : 16, // [15:0]
51*5113495bSYour Name                       per_user_subband_mask                                   : 16; // [31:16]
52*5113495bSYour Name #else
53*5113495bSYour Name              uint32_t reserved_0a                                             :  8, // [31:24]
54*5113495bSYour Name                       psdu_length                                             : 24; // [23:0]
55*5113495bSYour Name              uint32_t reserved_1d                                             :  3, // [31:29]
56*5113495bSYour Name                       dcm                                                     :  1, // [28:28]
57*5113495bSYour Name                       mcs                                                     :  4, // [27:24]
58*5113495bSYour Name                       reserved_1c                                             :  1, // [23:23]
59*5113495bSYour Name                       stream_offset                                           :  3, // [22:20]
60*5113495bSYour Name                       nss                                                     :  3, // [19:17]
61*5113495bSYour Name                       ofdma_mu_mimo_enabled                                   :  1, // [16:16]
62*5113495bSYour Name                       reserved_1b                                             :  4, // [15:12]
63*5113495bSYour Name                       ru_size                                                 :  4, // [11:8]
64*5113495bSYour Name                       ru_start_index                                          :  8; // [7:0]
65*5113495bSYour Name              uint32_t reserved_2d                                             :  6, // [31:26]
66*5113495bSYour Name                       force_extra_symbol                                      :  1, // [25:25]
67*5113495bSYour Name                       ldpc_extra_symbol                                       :  1, // [24:24]
68*5113495bSYour Name                       reserved_2c                                             :  7, // [23:17]
69*5113495bSYour Name                       drop_user_cbf                                           :  1, // [16:16]
70*5113495bSYour Name                       reserved_2b                                             :  6, // [15:10]
71*5113495bSYour Name                       user_bf_type                                            :  2, // [9:8]
72*5113495bSYour Name                       reserved_2a                                             :  7, // [7:1]
73*5113495bSYour Name                       fec_type                                                :  1; // [0:0]
74*5113495bSYour Name              uint32_t per_user_subband_mask                                   : 16, // [31:16]
75*5113495bSYour Name                       sw_peer_id                                              : 16; // [15:0]
76*5113495bSYour Name #endif
77*5113495bSYour Name };
78*5113495bSYour Name 
79*5113495bSYour Name 
80*5113495bSYour Name /* Description		PSDU_LENGTH
81*5113495bSYour Name 
82*5113495bSYour Name 			PSDU Length for the User in octets
83*5113495bSYour Name 			NOTE: This also holds good for .11ba packets
84*5113495bSYour Name 			<legal all>
85*5113495bSYour Name */
86*5113495bSYour Name 
87*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PSDU_LENGTH_OFFSET                                 0x0000000000000000
88*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PSDU_LENGTH_LSB                                    0
89*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PSDU_LENGTH_MSB                                    23
90*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PSDU_LENGTH_MASK                                   0x0000000000ffffff
91*5113495bSYour Name 
92*5113495bSYour Name 
93*5113495bSYour Name /* Description		RESERVED_0A
94*5113495bSYour Name 
95*5113495bSYour Name 			<legal 0>
96*5113495bSYour Name */
97*5113495bSYour Name 
98*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_0A_OFFSET                                 0x0000000000000000
99*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_0A_LSB                                    24
100*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_0A_MSB                                    31
101*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_0A_MASK                                   0x00000000ff000000
102*5113495bSYour Name 
103*5113495bSYour Name 
104*5113495bSYour Name /* Description		RU_START_INDEX
105*5113495bSYour Name 
106*5113495bSYour Name 			Field only valid in case of .11ax or .11be OFDMA transmission
107*5113495bSYour Name 			  (=> from MACTX_PHY_DESC, field MU_type == OFDMA)
108*5113495bSYour Name 			OR
109*5113495bSYour Name 			11ax SU "Narrow band" transmission.
110*5113495bSYour Name 
111*5113495bSYour Name 			RU Number to which User is assigned
112*5113495bSYour Name 			RU numbering is over the entire BW, starting from 0 and
113*5113495bSYour Name 			for the different users in increasing frequency order and
114*5113495bSYour Name 			 not primary-secondary order.
115*5113495bSYour Name 
116*5113495bSYour Name 			For DL OFDMA transmissions, PDG shall fill this as instructed
117*5113495bSYour Name 			 by SW.
118*5113495bSYour Name 
119*5113495bSYour Name 			For UL OFDMA transmissions, the RU number within 80 MHz
120*5113495bSYour Name 			is available from the RU allocation information in the trigger.
121*5113495bSYour Name 			For 160 MHz UL OFDMA transmissions, the trigger RU allocation
122*5113495bSYour Name 			 only mentions primary/secondary 80 MHz. PDG needs to convert
123*5113495bSYour Name 			 this to lower/higher 80 MHz.
124*5113495bSYour Name 
125*5113495bSYour Name 			If in 'PCU_PPDU_SETUP_START'/'MACTX_PRE_PHY_DESC,' CCA_Subband_channel_bonding_mask
126*5113495bSYour Name 			 bit 0 is mapped to any of bits 4 - 7 of Freq_Subband_channel_bonding_mask,
127*5113495bSYour Name 			then the primary 80 MHz is the higher 80 MHz and the secondary
128*5113495bSYour Name 			 80 MHz is the lower one.
129*5113495bSYour Name 			Otherwise (if CCA_Subband_channel_bonding_mask bit 0 is
130*5113495bSYour Name 			mapped to any of bits 0 - 3 of Freq_Subband_channel_bonding_mask,
131*5113495bSYour Name 			then the primary 80 MHz is the lower 80 MHz and the secondary
132*5113495bSYour Name 			 80 MHz is the higher one.
133*5113495bSYour Name 
134*5113495bSYour Name 			<legal 0-147>
135*5113495bSYour Name */
136*5113495bSYour Name 
137*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_START_INDEX_OFFSET                              0x0000000000000000
138*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_START_INDEX_LSB                                 32
139*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_START_INDEX_MSB                                 39
140*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_START_INDEX_MASK                                0x000000ff00000000
141*5113495bSYour Name 
142*5113495bSYour Name 
143*5113495bSYour Name /* Description		RU_SIZE
144*5113495bSYour Name 
145*5113495bSYour Name 			The size of the RU for this user
146*5113495bSYour Name 
147*5113495bSYour Name 			In case of HE extended range transmission, e-num 2 (10MHz)
148*5113495bSYour Name 			or e-num 7 (20MHz) are used.
149*5113495bSYour Name 
150*5113495bSYour Name 			In case of trig transmission or OFDMA single user or MU-MIMO
151*5113495bSYour Name 			 single user transmission, if the RU allocated to the user
152*5113495bSYour Name 			 is the full BW (with respect to AP_bw) then the e-num 7
153*5113495bSYour Name 			 is used.
154*5113495bSYour Name 			For all other cases, e-nums corresponding to the RU size
155*5113495bSYour Name 			 allocated to the user is used.
156*5113495bSYour Name 
157*5113495bSYour Name 			In case of EHT duplicate transmissions, this field indicates
158*5113495bSYour Name 			 the width of the actual content before duplication, e.g.
159*5113495bSYour Name 			a 40 MHz PPDU duplicated to 160 MHz will have the bandwidth
160*5113495bSYour Name 			 fields indicating 160 MHz and this field set to e-num 4
161*5113495bSYour Name 			 (RU_484).
162*5113495bSYour Name 
163*5113495bSYour Name 			<enum 0 RU_26>
164*5113495bSYour Name 			<enum 1 RU_52>
165*5113495bSYour Name 			<enum 2 RU_106>
166*5113495bSYour Name 			<enum 3 RU_242>
167*5113495bSYour Name 			<enum 4 RU_484>
168*5113495bSYour Name 			<enum 5 RU_996>
169*5113495bSYour Name 			<enum 6 RU_1992>
170*5113495bSYour Name 			<enum 7 RU_FULLBW> Set when the RU occupies the full packet
171*5113495bSYour Name 			 bandwidth
172*5113495bSYour Name 			<enum 8 RU_FULLBW_240> Set when the RU occupies the full
173*5113495bSYour Name 			 packet bandwidth
174*5113495bSYour Name 			<enum 9 RU_FULLBW_320> Set when the RU occupies the full
175*5113495bSYour Name 			 packet bandwidth
176*5113495bSYour Name 			<enum 10 RU_MULTI_LARGE> HW will use per-user sub-band-mask
177*5113495bSYour Name 			 to infer the actual RU-size for Multi-large-RU/SU-Puncturing
178*5113495bSYour Name 
179*5113495bSYour Name 			<enum 11 RU_78> multi small RU
180*5113495bSYour Name 			<enum 12 RU_132> multi small RU<legal 0-12>
181*5113495bSYour Name */
182*5113495bSYour Name 
183*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_SIZE_OFFSET                                     0x0000000000000000
184*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_SIZE_LSB                                        40
185*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_SIZE_MSB                                        43
186*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_SIZE_MASK                                       0x00000f0000000000
187*5113495bSYour Name 
188*5113495bSYour Name 
189*5113495bSYour Name /* Description		RESERVED_1B
190*5113495bSYour Name 
191*5113495bSYour Name 			<legal 0>
192*5113495bSYour Name */
193*5113495bSYour Name 
194*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1B_OFFSET                                 0x0000000000000000
195*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1B_LSB                                    44
196*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1B_MSB                                    47
197*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1B_MASK                                   0x0000f00000000000
198*5113495bSYour Name 
199*5113495bSYour Name 
200*5113495bSYour Name /* Description		OFDMA_MU_MIMO_ENABLED
201*5113495bSYour Name 
202*5113495bSYour Name 			Field only valid in case of .11ax or .11be OFDMA transmission
203*5113495bSYour Name 			  (=> from MACTX_PHY_DESC, field MU_type == OFDMA)
204*5113495bSYour Name 
205*5113495bSYour Name 			When set, for this user there is MIMO transmission within
206*5113495bSYour Name 			 the RU
207*5113495bSYour Name 			<legal all>
208*5113495bSYour Name */
209*5113495bSYour Name 
210*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_OFDMA_MU_MIMO_ENABLED_OFFSET                       0x0000000000000000
211*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_OFDMA_MU_MIMO_ENABLED_LSB                          48
212*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_OFDMA_MU_MIMO_ENABLED_MSB                          48
213*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_OFDMA_MU_MIMO_ENABLED_MASK                         0x0001000000000000
214*5113495bSYour Name 
215*5113495bSYour Name 
216*5113495bSYour Name /* Description		NSS
217*5113495bSYour Name 
218*5113495bSYour Name 			Number of Spatial Streams occupied by the User
219*5113495bSYour Name 
220*5113495bSYour Name 			<enum 0 1_spatial_stream>Single spatial stream
221*5113495bSYour Name 			<enum 1 2_spatial_streams>2 spatial streams
222*5113495bSYour Name 			<enum 2 3_spatial_streams>3 spatial streams
223*5113495bSYour Name 			<enum 3 4_spatial_streams>4 spatial streams
224*5113495bSYour Name 			<enum 4 5_spatial_streams>5 spatial streams
225*5113495bSYour Name 			<enum 5 6_spatial_streams>6 spatial streams
226*5113495bSYour Name 			<enum 6 7_spatial_streams>7 spatial streams
227*5113495bSYour Name 			<enum 7 8_spatial_streams>8 spatial streams
228*5113495bSYour Name */
229*5113495bSYour Name 
230*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_NSS_OFFSET                                         0x0000000000000000
231*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_NSS_LSB                                            49
232*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_NSS_MSB                                            51
233*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_NSS_MASK                                           0x000e000000000000
234*5113495bSYour Name 
235*5113495bSYour Name 
236*5113495bSYour Name /* Description		STREAM_OFFSET
237*5113495bSYour Name 
238*5113495bSYour Name 			Field only valid in case of MU-MIMO transmission  (=> from
239*5113495bSYour Name 			 MACTX_PHY_DESC, field MU_type == MU-MIMO)
240*5113495bSYour Name 			OR
241*5113495bSYour Name 			when field Ofdma_mu_mimo_enabled is set
242*5113495bSYour Name 
243*5113495bSYour Name 			Stream Offset from which the User occupies the Streams
244*5113495bSYour Name 
245*5113495bSYour Name 			Note MAC:
246*5113495bSYour Name 			directly from pdg_fes_setup, based on BW
247*5113495bSYour Name 			<legal all>
248*5113495bSYour Name */
249*5113495bSYour Name 
250*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_STREAM_OFFSET_OFFSET                               0x0000000000000000
251*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_STREAM_OFFSET_LSB                                  52
252*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_STREAM_OFFSET_MSB                                  54
253*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_STREAM_OFFSET_MASK                                 0x0070000000000000
254*5113495bSYour Name 
255*5113495bSYour Name 
256*5113495bSYour Name /* Description		RESERVED_1C
257*5113495bSYour Name 
258*5113495bSYour Name 			<legal 0>
259*5113495bSYour Name */
260*5113495bSYour Name 
261*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1C_OFFSET                                 0x0000000000000000
262*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1C_LSB                                    55
263*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1C_MSB                                    55
264*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1C_MASK                                   0x0080000000000000
265*5113495bSYour Name 
266*5113495bSYour Name 
267*5113495bSYour Name /* Description		MCS
268*5113495bSYour Name 
269*5113495bSYour Name 			Modulation Coding Scheme for the User
270*5113495bSYour Name 
271*5113495bSYour Name 			The MCS to be used for the upcoming transmission. It must
272*5113495bSYour Name 			 match the 4-bit MCS value that is sent in the appropriate
273*5113495bSYour Name 			 signal field for the given packet type, except that EHT
274*5113495bSYour Name 			 BPSK with DCM and/or duplicate is encoded as '0.'
275*5113495bSYour Name 
276*5113495bSYour Name 
277*5113495bSYour Name 			For details, refer to  the SIG field, related to this pkt_type.
278*5113495bSYour Name 
279*5113495bSYour Name 			(Note that this is slightly different then what is on the
280*5113495bSYour Name 			 MAC side defined as "MCS_TYPE". For this reason, the 'legal
281*5113495bSYour Name 			 values' here are NOT defined as MCS_TYPE)
282*5113495bSYour Name 			<legal all>
283*5113495bSYour Name */
284*5113495bSYour Name 
285*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_MCS_OFFSET                                         0x0000000000000000
286*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_MCS_LSB                                            56
287*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_MCS_MSB                                            59
288*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_MCS_MASK                                           0x0f00000000000000
289*5113495bSYour Name 
290*5113495bSYour Name 
291*5113495bSYour Name /* Description		DCM
292*5113495bSYour Name 
293*5113495bSYour Name 			Field only valid in case of 11ax transmission
294*5113495bSYour Name 
295*5113495bSYour Name 			Indicates whether dual sub-carrier modulation is applied
296*5113495bSYour Name 
297*5113495bSYour Name 			0: No DCM
298*5113495bSYour Name 			1:DCM
299*5113495bSYour Name 			<legal all>
300*5113495bSYour Name */
301*5113495bSYour Name 
302*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DCM_OFFSET                                         0x0000000000000000
303*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DCM_LSB                                            60
304*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DCM_MSB                                            60
305*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DCM_MASK                                           0x1000000000000000
306*5113495bSYour Name 
307*5113495bSYour Name 
308*5113495bSYour Name /* Description		RESERVED_1D
309*5113495bSYour Name 
310*5113495bSYour Name 			<legal 0>
311*5113495bSYour Name */
312*5113495bSYour Name 
313*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1D_OFFSET                                 0x0000000000000000
314*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1D_LSB                                    61
315*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1D_MSB                                    63
316*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1D_MASK                                   0xe000000000000000
317*5113495bSYour Name 
318*5113495bSYour Name 
319*5113495bSYour Name /* Description		FEC_TYPE
320*5113495bSYour Name 
321*5113495bSYour Name 			0: BCC
322*5113495bSYour Name 			1: LDPC
323*5113495bSYour Name 			<legal all>
324*5113495bSYour Name */
325*5113495bSYour Name 
326*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FEC_TYPE_OFFSET                                    0x0000000000000008
327*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FEC_TYPE_LSB                                       0
328*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FEC_TYPE_MSB                                       0
329*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FEC_TYPE_MASK                                      0x0000000000000001
330*5113495bSYour Name 
331*5113495bSYour Name 
332*5113495bSYour Name /* Description		RESERVED_2A
333*5113495bSYour Name 
334*5113495bSYour Name 			<legal 0>
335*5113495bSYour Name */
336*5113495bSYour Name 
337*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2A_OFFSET                                 0x0000000000000008
338*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2A_LSB                                    1
339*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2A_MSB                                    7
340*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2A_MASK                                   0x00000000000000fe
341*5113495bSYour Name 
342*5113495bSYour Name 
343*5113495bSYour Name /* Description		USER_BF_TYPE
344*5113495bSYour Name 
345*5113495bSYour Name 			This field is valid for all packets using multiple antennas
346*5113495bSYour Name 			 because it defines whether the user's tones will be beamformed,
347*5113495bSYour Name 			spatially spread, both or none of the above.
348*5113495bSYour Name 
349*5113495bSYour Name 			<enum 0     USER_NO_BF> Direct mapping from Stream to Chain
350*5113495bSYour Name 
351*5113495bSYour Name 			<enum 1     USER_WALSH_ONLY>  Enable Walsh mapping only
352*5113495bSYour Name 			<enum 2     USER_BF_ONLY> Enable Beamforming only
353*5113495bSYour Name 			<enum 3     USER_WALSH_AND_BF> Enable Walsh and Beamforming
354*5113495bSYour Name 
355*5113495bSYour Name 
356*5113495bSYour Name 			NOTE: USER_NO_BF and USER_BF_ONLY are not allowed if the
357*5113495bSYour Name 			 number of spatial streams (NSS) < the number of Tx chains
358*5113495bSYour Name 			 (NTx).
359*5113495bSYour Name 			<legal all>
360*5113495bSYour Name */
361*5113495bSYour Name 
362*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_USER_BF_TYPE_OFFSET                                0x0000000000000008
363*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_USER_BF_TYPE_LSB                                   8
364*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_USER_BF_TYPE_MSB                                   9
365*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_USER_BF_TYPE_MASK                                  0x0000000000000300
366*5113495bSYour Name 
367*5113495bSYour Name 
368*5113495bSYour Name /* Description		RESERVED_2B
369*5113495bSYour Name 
370*5113495bSYour Name 			<legal 0>
371*5113495bSYour Name */
372*5113495bSYour Name 
373*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2B_OFFSET                                 0x0000000000000008
374*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2B_LSB                                    10
375*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2B_MSB                                    15
376*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2B_MASK                                   0x000000000000fc00
377*5113495bSYour Name 
378*5113495bSYour Name 
379*5113495bSYour Name /* Description		DROP_USER_CBF
380*5113495bSYour Name 
381*5113495bSYour Name 			This user shall be dropped because of CBF FCS failure or
382*5113495bSYour Name 			 no CBF reception.
383*5113495bSYour Name 			<legal all>
384*5113495bSYour Name */
385*5113495bSYour Name 
386*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DROP_USER_CBF_OFFSET                               0x0000000000000008
387*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DROP_USER_CBF_LSB                                  16
388*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DROP_USER_CBF_MSB                                  16
389*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DROP_USER_CBF_MASK                                 0x0000000000010000
390*5113495bSYour Name 
391*5113495bSYour Name 
392*5113495bSYour Name /* Description		RESERVED_2C
393*5113495bSYour Name 
394*5113495bSYour Name 			<legal 0>
395*5113495bSYour Name */
396*5113495bSYour Name 
397*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2C_OFFSET                                 0x0000000000000008
398*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2C_LSB                                    17
399*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2C_MSB                                    23
400*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2C_MASK                                   0x0000000000fe0000
401*5113495bSYour Name 
402*5113495bSYour Name 
403*5113495bSYour Name /* Description		LDPC_EXTRA_SYMBOL
404*5113495bSYour Name 
405*5113495bSYour Name 			Set to 1 if the LDPC PPDU encoding process (if an SU PPDU),
406*5113495bSYour Name 			or at least one LDPC user's PPDU encoding process (if an
407*5113495bSYour Name 			 MU PPDU), results in an extra OFDM symbol (or symbols)
408*5113495bSYour Name 			as described in 22.3.10.5.4 (LDPC coding) and 22.3.10.5.5
409*5113495bSYour Name 			 (Encoding process for MU PPDUs). Set to 0 otherwise.
410*5113495bSYour Name 			<legal all>
411*5113495bSYour Name */
412*5113495bSYour Name 
413*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_LDPC_EXTRA_SYMBOL_OFFSET                           0x0000000000000008
414*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_LDPC_EXTRA_SYMBOL_LSB                              24
415*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_LDPC_EXTRA_SYMBOL_MSB                              24
416*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_LDPC_EXTRA_SYMBOL_MASK                             0x0000000001000000
417*5113495bSYour Name 
418*5113495bSYour Name 
419*5113495bSYour Name /* Description		FORCE_EXTRA_SYMBOL
420*5113495bSYour Name 
421*5113495bSYour Name 			Set to 1 to force an extra OFDM symbol (or symbols) even
422*5113495bSYour Name 			 if none of the users' PPDU encoding process resuls in an
423*5113495bSYour Name 			 extra OFDM symbol (or symbols).
424*5113495bSYour Name 			<legal all>
425*5113495bSYour Name */
426*5113495bSYour Name 
427*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FORCE_EXTRA_SYMBOL_OFFSET                          0x0000000000000008
428*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FORCE_EXTRA_SYMBOL_LSB                             25
429*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FORCE_EXTRA_SYMBOL_MSB                             25
430*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FORCE_EXTRA_SYMBOL_MASK                            0x0000000002000000
431*5113495bSYour Name 
432*5113495bSYour Name 
433*5113495bSYour Name /* Description		RESERVED_2D
434*5113495bSYour Name 
435*5113495bSYour Name 			<legal 0>
436*5113495bSYour Name */
437*5113495bSYour Name 
438*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2D_OFFSET                                 0x0000000000000008
439*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2D_LSB                                    26
440*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2D_MSB                                    31
441*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2D_MASK                                   0x00000000fc000000
442*5113495bSYour Name 
443*5113495bSYour Name 
444*5113495bSYour Name /* Description		SW_PEER_ID
445*5113495bSYour Name 
446*5113495bSYour Name 			When set to 0, SW did not populate this field.
447*5113495bSYour Name 
448*5113495bSYour Name 			The SW peer ID for this user
449*5113495bSYour Name 			<legal all>
450*5113495bSYour Name */
451*5113495bSYour Name 
452*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_SW_PEER_ID_OFFSET                                  0x0000000000000008
453*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_SW_PEER_ID_LSB                                     32
454*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_SW_PEER_ID_MSB                                     47
455*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_SW_PEER_ID_MASK                                    0x0000ffff00000000
456*5113495bSYour Name 
457*5113495bSYour Name 
458*5113495bSYour Name /* Description		PER_USER_SUBBAND_MASK
459*5113495bSYour Name 
460*5113495bSYour Name 			This specifies a per-20 MHz (frequency order) subband mask
461*5113495bSYour Name 			 per-user to be used in case of either multi-large-RU or
462*5113495bSYour Name 			 preamble puncturing.
463*5113495bSYour Name 			<legal all>
464*5113495bSYour Name */
465*5113495bSYour Name 
466*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PER_USER_SUBBAND_MASK_OFFSET                       0x0000000000000008
467*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PER_USER_SUBBAND_MASK_LSB                          48
468*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PER_USER_SUBBAND_MASK_MSB                          63
469*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PER_USER_SUBBAND_MASK_MASK                         0xffff000000000000
470*5113495bSYour Name 
471*5113495bSYour Name 
472*5113495bSYour Name 
473*5113495bSYour Name #endif   // MACTX_USER_DESC_PER_USER
474