xref: /wlan-driver/fw-api/hw/qca5332/eht_sig_usr_ofdma_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 
2 /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 #ifndef _EHT_SIG_USR_OFDMA_INFO_H_
27 #define _EHT_SIG_USR_OFDMA_INFO_H_
28 #if !defined(__ASSEMBLER__)
29 #endif
30 
31 #define NUM_OF_DWORDS_EHT_SIG_USR_OFDMA_INFO 2
32 
33 
34 struct eht_sig_usr_ofdma_info {
35 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
36              uint32_t sta_id                                                  : 11, // [10:0]
37                       sta_mcs                                                 :  4, // [14:11]
38                       validate_0a                                             :  1, // [15:15]
39                       nss                                                     :  4, // [19:16]
40                       txbf                                                    :  1, // [20:20]
41                       sta_coding                                              :  1, // [21:21]
42                       reserved_0b                                             :  1, // [22:22]
43                       rx_integrity_check_passed                               :  1, // [23:23]
44                       subband80_cc_mask                                       :  8; // [31:24]
45              uint32_t user_order_subband80_0                                  :  8, // [7:0]
46                       user_order_subband80_1                                  :  8, // [15:8]
47                       user_order_subband80_2                                  :  8, // [23:16]
48                       user_order_subband80_3                                  :  8; // [31:24]
49 #else
50              uint32_t subband80_cc_mask                                       :  8, // [31:24]
51                       rx_integrity_check_passed                               :  1, // [23:23]
52                       reserved_0b                                             :  1, // [22:22]
53                       sta_coding                                              :  1, // [21:21]
54                       txbf                                                    :  1, // [20:20]
55                       nss                                                     :  4, // [19:16]
56                       validate_0a                                             :  1, // [15:15]
57                       sta_mcs                                                 :  4, // [14:11]
58                       sta_id                                                  : 11; // [10:0]
59              uint32_t user_order_subband80_3                                  :  8, // [31:24]
60                       user_order_subband80_2                                  :  8, // [23:16]
61                       user_order_subband80_1                                  :  8, // [15:8]
62                       user_order_subband80_0                                  :  8; // [7:0]
63 #endif
64 };
65 
66 
67 /* Description		STA_ID
68 
69 			Identifies the STA that is addressed. Details of STA ID
70 			are TBD
71 */
72 
73 #define EHT_SIG_USR_OFDMA_INFO_STA_ID_OFFSET                                        0x00000000
74 #define EHT_SIG_USR_OFDMA_INFO_STA_ID_LSB                                           0
75 #define EHT_SIG_USR_OFDMA_INFO_STA_ID_MSB                                           10
76 #define EHT_SIG_USR_OFDMA_INFO_STA_ID_MASK                                          0x000007ff
77 
78 
79 /* Description		STA_MCS
80 
81 			Indicates the data MCS
82 			0 - 13: MCS 0 - 13
83 			14: validate
84 			15: MCS 0 with DCM
85 			<legal 0-13, 15>
86 */
87 
88 #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_OFFSET                                       0x00000000
89 #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_LSB                                          11
90 #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_MSB                                          14
91 #define EHT_SIG_USR_OFDMA_INFO_STA_MCS_MASK                                         0x00007800
92 
93 
94 /* Description		VALIDATE_0A
95 
96 			Note: spec indicates this shall be set to 1
97 			<legal 1>
98 */
99 
100 #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_OFFSET                                   0x00000000
101 #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_LSB                                      15
102 #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_MSB                                      15
103 #define EHT_SIG_USR_OFDMA_INFO_VALIDATE_0A_MASK                                     0x00008000
104 
105 
106 /* Description		NSS
107 
108 			Number of spatial streams for this user
109 
110 			The actual number of streams is 1 larger than indicated
111 			in this field.
112 			<legal all>
113 */
114 
115 #define EHT_SIG_USR_OFDMA_INFO_NSS_OFFSET                                           0x00000000
116 #define EHT_SIG_USR_OFDMA_INFO_NSS_LSB                                              16
117 #define EHT_SIG_USR_OFDMA_INFO_NSS_MSB                                              19
118 #define EHT_SIG_USR_OFDMA_INFO_NSS_MASK                                             0x000f0000
119 
120 
121 /* Description		TXBF
122 
123 			Indicates whether beamforming is applied
124 			0: No beamforming
125 			1: beamforming
126 			<legal all>
127 */
128 
129 #define EHT_SIG_USR_OFDMA_INFO_TXBF_OFFSET                                          0x00000000
130 #define EHT_SIG_USR_OFDMA_INFO_TXBF_LSB                                             20
131 #define EHT_SIG_USR_OFDMA_INFO_TXBF_MSB                                             20
132 #define EHT_SIG_USR_OFDMA_INFO_TXBF_MASK                                            0x00100000
133 
134 
135 /* Description		STA_CODING
136 
137 			Distinguishes between BCC/LDPC
138 
139 			0: BCC
140 			1: LDPC
141 			<legal all>
142 */
143 
144 #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_OFFSET                                    0x00000000
145 #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_LSB                                       21
146 #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_MSB                                       21
147 #define EHT_SIG_USR_OFDMA_INFO_STA_CODING_MASK                                      0x00200000
148 
149 
150 /* Description		RESERVED_0B
151 
152 			<legal 0>
153 */
154 
155 #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_OFFSET                                   0x00000000
156 #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_LSB                                      22
157 #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_MSB                                      22
158 #define EHT_SIG_USR_OFDMA_INFO_RESERVED_0B_MASK                                     0x00400000
159 
160 
161 /* Description		RX_INTEGRITY_CHECK_PASSED
162 
163 			TX side: Set to 0
164 			RX side: Set to 1 if PHY determines the CRC check of the
165 			 codeblock containing this EHT-SIG user info has passed,
166 			else set to 0
167 
168 			<legal all>
169 */
170 
171 #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_OFFSET                     0x00000000
172 #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_LSB                        23
173 #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_MSB                        23
174 #define EHT_SIG_USR_OFDMA_INFO_RX_INTEGRITY_CHECK_PASSED_MASK                       0x00800000
175 
176 
177 /* Description		SUBBAND80_CC_MASK
178 
179 			RX side: Set to 0
180 			TX side: Indicates what content channels of what 80 MHz
181 			subbands this User field can go to
182 			Bit 0: lowest 80 MHz content channel 0
183 			Bit 1: lowest 80 MHz content channel 1
184 			Bit 2: 2nd lowest 80 MHz content channel 0
185 			...
186 			Bit 7: highest 80 MHz content channel 1
187 			<legal all>
188 */
189 
190 #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_OFFSET                             0x00000000
191 #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_LSB                                24
192 #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_MSB                                31
193 #define EHT_SIG_USR_OFDMA_INFO_SUBBAND80_CC_MASK_MASK                               0xff000000
194 
195 
196 /* Description		USER_ORDER_SUBBAND80_0
197 
198 			RX side: Set to 0
199 			TX side: Ordering index of the User field within the lowest
200 			 80 MHz
201 			Gaps between the ordering indices of User fields indicate
202 			 that the microcode shall generate "unallocated RU" User
203 			 fields (STAID=2046) to fill the gaps.
204 			<legal all>
205 */
206 
207 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_OFFSET                        0x00000004
208 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_LSB                           0
209 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_MSB                           7
210 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_0_MASK                          0x000000ff
211 
212 
213 /* Description		USER_ORDER_SUBBAND80_1
214 
215 			RX side: Set to 0
216 			TX side: Ordering index of the User field within the 2nd
217 			 lowest 80 MHz
218 			See 'user_order_subband80_0.'
219 			<legal all>
220 */
221 
222 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_OFFSET                        0x00000004
223 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_LSB                           8
224 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_MSB                           15
225 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_1_MASK                          0x0000ff00
226 
227 
228 /* Description		USER_ORDER_SUBBAND80_2
229 
230 			RX side: Set to 0
231 			TX side: Ordering index of the User field within the 2nd
232 			 highest 80 MHz
233 			See 'user_order_subband80_0.'
234 			<legal all>
235 */
236 
237 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_OFFSET                        0x00000004
238 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_LSB                           16
239 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_MSB                           23
240 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_2_MASK                          0x00ff0000
241 
242 
243 /* Description		USER_ORDER_SUBBAND80_3
244 
245 			RX side: Set to 0
246 			TX side: Ordering index of the User field within the highest
247 			 80 MHz
248 			See 'user_order_subband80_0.'
249 			<legal all>
250 */
251 
252 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_OFFSET                        0x00000004
253 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_LSB                           24
254 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_MSB                           31
255 #define EHT_SIG_USR_OFDMA_INFO_USER_ORDER_SUBBAND80_3_MASK                          0xff000000
256 
257 
258 
259 #endif   // EHT_SIG_USR_OFDMA_INFO
260