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