1 /* 2 * Copyright (c) 2020, The Linux Foundation. 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 #ifndef _PHYRX_HE_SIG_A_MU_DL_H_ 18 #define _PHYRX_HE_SIG_A_MU_DL_H_ 19 #if !defined(__ASSEMBLER__) 20 #endif 21 22 #include "he_sig_a_mu_dl_info.h" 23 24 // ################ START SUMMARY ################# 25 // 26 // Dword Fields 27 // 0-1 struct he_sig_a_mu_dl_info phyrx_he_sig_a_mu_dl_info_details; 28 // 29 // ################ END SUMMARY ################# 30 31 #define NUM_OF_DWORDS_PHYRX_HE_SIG_A_MU_DL 2 32 33 struct phyrx_he_sig_a_mu_dl { 34 struct he_sig_a_mu_dl_info phyrx_he_sig_a_mu_dl_info_details; 35 }; 36 37 /* 38 39 struct he_sig_a_mu_dl_info phyrx_he_sig_a_mu_dl_info_details 40 41 See detailed description of the STRUCT 42 */ 43 44 45 /* EXTERNAL REFERENCE : struct he_sig_a_mu_dl_info phyrx_he_sig_a_mu_dl_info_details */ 46 47 48 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DL_UL_FLAG 49 50 Differentiates between DL and UL transmission 51 52 53 54 <enum 0 DL_UL_FLAG_IS_DL_OR_TDLS> 55 56 <enum 1 DL_UL_FLAG_IS_UL> 57 58 NOTE: This is unsupported for HE MU format (including 59 MU_SU) Tx in Napier and Hastings80. 60 61 <legal all> 62 */ 63 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DL_UL_FLAG_OFFSET 0x00000000 64 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DL_UL_FLAG_LSB 0 65 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DL_UL_FLAG_MASK 0x00000001 66 67 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_MCS_OF_SIG_B 68 69 Indicates the MCS of HE-SIG-B 70 71 <legal 0-5> 72 */ 73 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_MCS_OF_SIG_B_OFFSET 0x00000000 74 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_MCS_OF_SIG_B_LSB 1 75 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_MCS_OF_SIG_B_MASK 0x0000000e 76 77 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DCM_OF_SIG_B 78 79 Indicates whether dual sub-carrier modulation is applied 80 to HE-SIG-B 81 82 83 84 0: No DCM for HE_SIG_B 85 86 1: DCM for HE_SIG_B 87 88 <legal all> 89 */ 90 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DCM_OF_SIG_B_OFFSET 0x00000000 91 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DCM_OF_SIG_B_LSB 4 92 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DCM_OF_SIG_B_MASK 0x00000010 93 94 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_BSS_COLOR_ID 95 96 BSS color ID 97 98 99 100 Field Used by MAC HW 101 102 <legal all> 103 */ 104 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_BSS_COLOR_ID_OFFSET 0x00000000 105 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_BSS_COLOR_ID_LSB 5 106 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_BSS_COLOR_ID_MASK 0x000007e0 107 108 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_SPATIAL_REUSE 109 110 Spatial reuse 111 112 113 114 For 20MHz one SR field corresponding to entire 20MHz 115 (other 3 fields indicate identical values) 116 117 For 40MHz two SR fields for each 20MHz (other 2 fields 118 indicate identical values) 119 120 For 80MHz four SR fields for each 20MHz 121 122 For 160MHz four SR fields for each 40MHz 123 124 <legal all> 125 */ 126 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_SPATIAL_REUSE_OFFSET 0x00000000 127 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_SPATIAL_REUSE_LSB 11 128 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_SPATIAL_REUSE_MASK 0x00007800 129 130 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TRANSMIT_BW 131 132 Bandwidth of the PPDU. 133 134 135 136 <enum 0 HE_SIG_A_MU_DL_BW20> 20 Mhz 137 138 <enum 1 HE_SIG_A_MU_DL_BW40> 40 Mhz 139 140 <enum 2 HE_SIG_A_MU_DL_BW80> 80 MHz non-preamble 141 puncturing mode 142 143 <enum 3 HE_SIG_A_MU_DL_BW160> 160 MHz and 80+80 MHz 144 non-preamble puncturing mode 145 146 <enum 4 HE_SIG_A_MU_DL_BW80_SEC_20_PUNC> for preamble 147 puncturing in 80 MHz, where in the preamble only the 148 secondary 20 MHz is punctured 149 150 <enum 5 HE_SIG_A_MU_DL_BW80_20_PUNC_IN_SEC_40> for 151 preamble puncturing in 80 MHz, where in the preamble only 152 one of the two 20 MHz sub-channels in secondary 40 MHz is 153 punctured. 154 155 <enum 6 HE_SIG_A_MU_DL_BW160_SEC_20_PUNC> for preamble 156 puncturing in 160 MHz or 80+80 MHz, where in the primary 80 157 MHz of the preamble only the secondary 20 MHz is punctured. 158 159 <enum 7 HE_SIG_A_MU_DL_BW160_SEC_40_80_PUNC> for 160 preamble puncturing in 160 MHz or 80+80 MHz, where in the 161 primary 80 MHz of the preamble the primary 40 MHz is 162 present. 163 164 165 166 On RX side, Field Used by MAC HW 167 168 <legal 0-7> 169 */ 170 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TRANSMIT_BW_OFFSET 0x00000000 171 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TRANSMIT_BW_LSB 15 172 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TRANSMIT_BW_MASK 0x00038000 173 174 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_NUM_SIG_B_SYMBOLS 175 176 Number of symbols 177 178 179 180 For OFDMA, the actual number of symbols is 1 larger then 181 indicated in this field. 182 183 184 185 For MU-MIMO this is equal to the number of users - 1: 186 the following encoding is used: 187 188 1 => 2 users 189 190 2 => 3 users 191 192 Etc. 193 194 195 196 <legal all> 197 */ 198 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_NUM_SIG_B_SYMBOLS_OFFSET 0x00000000 199 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_NUM_SIG_B_SYMBOLS_LSB 18 200 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_NUM_SIG_B_SYMBOLS_MASK 0x003c0000 201 202 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_COMP_MODE_SIG_B 203 204 Indicates the compression mode of HE-SIG-B 205 206 207 208 0: Regular [uncomp mode] 209 210 1: compressed mode (full-BW MU-MIMO only) 211 212 <legal all> 213 */ 214 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_COMP_MODE_SIG_B_OFFSET 0x00000000 215 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_COMP_MODE_SIG_B_LSB 22 216 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_COMP_MODE_SIG_B_MASK 0x00400000 217 218 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_CP_LTF_SIZE 219 220 Indicates the CP and HE-LTF type 221 222 223 224 <enum 0 MU_FourX_LTF_0_8CP> 4xLTF + 0.8 us CP 225 226 <enum 1 MU_TwoX_LTF_0_8CP> 2x LTF + 0.8 µs CP 227 228 <enum 2 MU_TwoX_LTF_1_6CP> 2x LTF + 1.6 µs CP 229 230 <enum 3 MU_FourX_LTF_3_2CP> 4x LTF + 3.2 µs CP 231 232 233 234 NOTE: for MU no proprietary modes (for now) 235 236 237 238 <legal all> 239 */ 240 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_CP_LTF_SIZE_OFFSET 0x00000000 241 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_CP_LTF_SIZE_LSB 23 242 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_CP_LTF_SIZE_MASK 0x01800000 243 244 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DOPPLER_INDICATION 245 246 0: No Doppler support 247 248 1: Doppler support 249 250 <legal all> 251 */ 252 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DOPPLER_INDICATION_OFFSET 0x00000000 253 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DOPPLER_INDICATION_LSB 25 254 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DOPPLER_INDICATION_MASK 0x02000000 255 256 /* Description PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_0A 257 258 <legal 0> 259 */ 260 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000000 261 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_0A_LSB 26 262 #define PHYRX_HE_SIG_A_MU_DL_0_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_0A_MASK 0xfc000000 263 264 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TXOP_DURATION 265 266 Indicates the remaining time in the current TXOP 267 268 269 270 Field Used by MAC HW 271 272 <legal all> 273 */ 274 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TXOP_DURATION_OFFSET 0x00000004 275 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TXOP_DURATION_LSB 0 276 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TXOP_DURATION_MASK 0x0000007f 277 278 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_1A 279 280 Note: spec indicates this shall be set to 1 281 282 <legal 1> 283 */ 284 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_1A_OFFSET 0x00000004 285 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_1A_LSB 7 286 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_1A_MASK 0x00000080 287 288 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_NUM_LTF_SYMBOLS 289 290 Indicates the number of HE-LTF symbols 291 292 293 294 0: 1 LTF 295 296 1: 2 LTFs 297 298 2: 4 LTFs 299 300 3: 6 LTFs 301 302 4: 8 LTFs 303 304 305 306 <legal all> 307 */ 308 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_NUM_LTF_SYMBOLS_OFFSET 0x00000004 309 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_NUM_LTF_SYMBOLS_LSB 8 310 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_NUM_LTF_SYMBOLS_MASK 0x00000700 311 312 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_LDPC_EXTRA_SYMBOL 313 314 If LDPC, 315 316 0: LDPC extra symbol not present 317 318 1: LDPC extra symbol present 319 320 Else 321 322 Set to 1 323 324 <legal all> 325 */ 326 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_LDPC_EXTRA_SYMBOL_OFFSET 0x00000004 327 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_LDPC_EXTRA_SYMBOL_LSB 11 328 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_LDPC_EXTRA_SYMBOL_MASK 0x00000800 329 330 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_STBC 331 332 Indicates whether STBC is applied 333 334 0: No STBC 335 336 1: STBC 337 338 <legal all> 339 */ 340 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_STBC_OFFSET 0x00000004 341 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_STBC_LSB 12 342 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_STBC_MASK 0x00001000 343 344 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_PACKET_EXTENSION_A_FACTOR 345 346 the packet extension duration of the trigger-based PPDU 347 response with these two bits indicating the a-factor 348 349 350 351 <enum 0 a_factor_4> 352 353 <enum 1 a_factor_1> 354 355 <enum 2 a_factor_2> 356 357 <enum 3 a_factor_3> 358 359 360 361 <legal all> 362 */ 363 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_PACKET_EXTENSION_A_FACTOR_OFFSET 0x00000004 364 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_PACKET_EXTENSION_A_FACTOR_LSB 13 365 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_PACKET_EXTENSION_A_FACTOR_MASK 0x00006000 366 367 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_PACKET_EXTENSION_PE_DISAMBIGUITY 368 369 the packet extension duration of the trigger-based PPDU 370 response with this bit indicating the PE-Disambiguity 371 372 <legal all> 373 */ 374 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET 0x00000004 375 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB 15 376 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK 0x00008000 377 378 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_CRC 379 380 CRC for HE-SIG-A contents. 381 382 <legal all> 383 */ 384 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_CRC_OFFSET 0x00000004 385 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_CRC_LSB 16 386 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_CRC_MASK 0x000f0000 387 388 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TAIL 389 390 <legal 0> 391 */ 392 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TAIL_OFFSET 0x00000004 393 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TAIL_LSB 20 394 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_TAIL_MASK 0x03f00000 395 396 /* Description PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_1B 397 398 <legal 0> 399 */ 400 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_1B_OFFSET 0x00000004 401 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_1B_LSB 26 402 #define PHYRX_HE_SIG_A_MU_DL_1_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_RESERVED_1B_MASK 0xfc000000 403 404 405 #endif // _PHYRX_HE_SIG_A_MU_DL_H_ 406