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 _MACTX_PHY_DESC_H_ 27 #define _MACTX_PHY_DESC_H_ 28 #if !defined(__ASSEMBLER__) 29 #endif 30 31 #define NUM_OF_DWORDS_MACTX_PHY_DESC 4 32 33 #define NUM_OF_QWORDS_MACTX_PHY_DESC 2 34 35 36 struct mactx_phy_desc { 37 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 38 uint32_t reserved_0a : 16, // [15:0] 39 bf_type : 2, // [17:16] 40 wait_sifs : 2, // [19:18] 41 dot11b_preamble_type : 1, // [20:20] 42 pkt_type : 4, // [24:21] 43 su_or_mu : 2, // [26:25] 44 mu_type : 1, // [27:27] 45 bandwidth : 3, // [30:28] 46 channel_capture : 1; // [31:31] 47 uint32_t mcs : 4, // [3:0] 48 global_ofdma_mimo_enable : 1, // [4:4] 49 reserved_1a : 1, // [5:5] 50 stbc : 1, // [6:6] 51 dot11ax_su_extended : 1, // [7:7] 52 dot11ax_trigger_frame_embedded : 1, // [8:8] 53 tx_pwr_shared : 8, // [16:9] 54 tx_pwr_unshared : 8, // [24:17] 55 measure_power : 1, // [25:25] 56 tpc_glut_self_cal : 1, // [26:26] 57 back_to_back_transmission_expected : 1, // [27:27] 58 heavy_clip_nss : 3, // [30:28] 59 txbf_per_packet_no_csd_no_walsh : 1; // [31:31] 60 uint32_t ndp : 2, // [1:0] 61 ul_flag : 1, // [2:2] 62 triggered : 1, // [3:3] 63 ap_pkt_bw : 3, // [6:4] 64 ru_position_start : 8, // [14:7] 65 pcu_ppdu_setup_start_reason : 3, // [17:15] 66 tlv_source : 1, // [18:18] 67 reserved_2a : 2, // [20:19] 68 nss : 3, // [23:21] 69 stream_offset : 3, // [26:24] 70 reserved_2b : 2, // [28:27] 71 clpc_enable : 1, // [29:29] 72 mu_ndp : 1, // [30:30] 73 response_expected : 1; // [31:31] 74 uint32_t rx_chain_mask : 8, // [7:0] 75 rx_chain_mask_valid : 1, // [8:8] 76 ant_sel_valid : 1, // [9:9] 77 ant_sel : 1, // [10:10] 78 cp_setting : 2, // [12:11] 79 he_ppdu_subtype : 2, // [14:13] 80 active_channel : 3, // [17:15] 81 generate_phyrx_tx_start_timing : 1, // [18:18] 82 ltf_size : 2, // [20:19] 83 ru_size_updated_v2 : 4, // [24:21] 84 reserved_3c : 1, // [25:25] 85 u_sig_puncture_pattern_encoding : 6; // [31:26] 86 #else 87 uint32_t channel_capture : 1, // [31:31] 88 bandwidth : 3, // [30:28] 89 mu_type : 1, // [27:27] 90 su_or_mu : 2, // [26:25] 91 pkt_type : 4, // [24:21] 92 dot11b_preamble_type : 1, // [20:20] 93 wait_sifs : 2, // [19:18] 94 bf_type : 2, // [17:16] 95 reserved_0a : 16; // [15:0] 96 uint32_t txbf_per_packet_no_csd_no_walsh : 1, // [31:31] 97 heavy_clip_nss : 3, // [30:28] 98 back_to_back_transmission_expected : 1, // [27:27] 99 tpc_glut_self_cal : 1, // [26:26] 100 measure_power : 1, // [25:25] 101 tx_pwr_unshared : 8, // [24:17] 102 tx_pwr_shared : 8, // [16:9] 103 dot11ax_trigger_frame_embedded : 1, // [8:8] 104 dot11ax_su_extended : 1, // [7:7] 105 stbc : 1, // [6:6] 106 reserved_1a : 1, // [5:5] 107 global_ofdma_mimo_enable : 1, // [4:4] 108 mcs : 4; // [3:0] 109 uint32_t response_expected : 1, // [31:31] 110 mu_ndp : 1, // [30:30] 111 clpc_enable : 1, // [29:29] 112 reserved_2b : 2, // [28:27] 113 stream_offset : 3, // [26:24] 114 nss : 3, // [23:21] 115 reserved_2a : 2, // [20:19] 116 tlv_source : 1, // [18:18] 117 pcu_ppdu_setup_start_reason : 3, // [17:15] 118 ru_position_start : 8, // [14:7] 119 ap_pkt_bw : 3, // [6:4] 120 triggered : 1, // [3:3] 121 ul_flag : 1, // [2:2] 122 ndp : 2; // [1:0] 123 uint32_t u_sig_puncture_pattern_encoding : 6, // [31:26] 124 reserved_3c : 1, // [25:25] 125 ru_size_updated_v2 : 4, // [24:21] 126 ltf_size : 2, // [20:19] 127 generate_phyrx_tx_start_timing : 1, // [18:18] 128 active_channel : 3, // [17:15] 129 he_ppdu_subtype : 2, // [14:13] 130 cp_setting : 2, // [12:11] 131 ant_sel : 1, // [10:10] 132 ant_sel_valid : 1, // [9:9] 133 rx_chain_mask_valid : 1, // [8:8] 134 rx_chain_mask : 8; // [7:0] 135 #endif 136 }; 137 138 139 /* Description RESERVED_0A 140 141 <legal 0> 142 */ 143 144 #define MACTX_PHY_DESC_RESERVED_0A_OFFSET 0x0000000000000000 145 #define MACTX_PHY_DESC_RESERVED_0A_LSB 0 146 #define MACTX_PHY_DESC_RESERVED_0A_MSB 15 147 #define MACTX_PHY_DESC_RESERVED_0A_MASK 0x000000000000ffff 148 149 150 /* Description BF_TYPE 151 152 <enum 0 NO_BF> Transmit a non-beamformed packet. NOTE 153 that MAC might have send MACTX_BF_PARAMS... related TLVs 154 to the PHY for this upcoming transmission, but if this 155 field indicates NO_BF, MAC_TX has for some reason decided 156 at the last moment that actual beamform transmission shall 157 not happen anymore... 158 <enum 1 LEGACY_BF> Transmit a legacy beamformed packet. 159 This means beamforming starts at the L-STF. The possible 160 preamble formats are 11a, 11n mixed mode and 11ac. This 161 is used to support legacy implicit beamforming. 162 <enum 2 SU_BF> Transmit a single-user beamformed packet 163 starting at the HT-STF or VHT-STF. 164 <enum 3 MU_BF> Transmit a multi-user beamformed packet 165 starting at the VHT-STF. In case of an MU transmission, 166 where maybe not all users are being transmitted in a 'beamformed' 167 way, but at least one is, this e_num setting will be used 168 as well 169 <legal all> 170 */ 171 172 #define MACTX_PHY_DESC_BF_TYPE_OFFSET 0x0000000000000000 173 #define MACTX_PHY_DESC_BF_TYPE_LSB 16 174 #define MACTX_PHY_DESC_BF_TYPE_MSB 17 175 #define MACTX_PHY_DESC_BF_TYPE_MASK 0x0000000000030000 176 177 178 /* Description WAIT_SIFS 179 180 This bit is evaluated by the PHY TX to determine if this 181 transmission start on the air needs to be exactly SIFS 182 aligned compared to the end of the previous reception or 183 previous transmission. 184 185 This feature is typically required for Triggered UL response 186 transmissions, where SIFS accuracy is really required. 187 For RTT this is also usefull, but not absolutely needed. 188 189 190 191 This field is filled in by TXPCU. 192 193 <enum 0 NO_SIFS_TIMING> Transmission shall start with the 194 normal delay in PHY after receiving this notification 195 <enum 1 SIFS_TIMING_DESIRED> Transmission shall be made 196 at the SIFS boundary. If shall never start before SIFS boundary, 197 but if it a little later, it is not ideal and should be 198 flagged, but transmission shall not be aborted. 199 <enum 2 SIFS_TIMING_MANDATED> Transmission shall be made 200 at exactly SIFS boundary. If this notification is received 201 by the PHY after SIFS boundary already passed, the PHY 202 shall abort the transmission 203 <legal 0-2> 204 */ 205 206 #define MACTX_PHY_DESC_WAIT_SIFS_OFFSET 0x0000000000000000 207 #define MACTX_PHY_DESC_WAIT_SIFS_LSB 18 208 #define MACTX_PHY_DESC_WAIT_SIFS_MSB 19 209 #define MACTX_PHY_DESC_WAIT_SIFS_MASK 0x00000000000c0000 210 211 212 /* Description DOT11B_PREAMBLE_TYPE 213 214 Valid for 802.11b packets only. 215 <enum 0 short_preamble> 216 <enum 1 long_preamble> 217 <legal all> 218 */ 219 220 #define MACTX_PHY_DESC_DOT11B_PREAMBLE_TYPE_OFFSET 0x0000000000000000 221 #define MACTX_PHY_DESC_DOT11B_PREAMBLE_TYPE_LSB 20 222 #define MACTX_PHY_DESC_DOT11B_PREAMBLE_TYPE_MSB 20 223 #define MACTX_PHY_DESC_DOT11B_PREAMBLE_TYPE_MASK 0x0000000000100000 224 225 226 /* Description PKT_TYPE 227 228 Packet type: 229 230 Note: in case of 11ax, see field he_ppdu_subtype for additional 231 info... 232 233 <enum 0 dot11a>802.11a PPDU type 234 <enum 1 dot11b>802.11b PPDU type 235 <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type 236 <enum 3 dot11ac>802.11ac PPDU type 237 <enum 4 dot11ax>802.11ax PPDU type 238 <enum 5 dot11ba>802.11ba (WUR) PPDU type 239 <enum 6 dot11be>802.11be PPDU type 240 <enum 7 dot11az>802.11az (ranging) PPDU type 241 <enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported 242 & aborted) 243 */ 244 245 #define MACTX_PHY_DESC_PKT_TYPE_OFFSET 0x0000000000000000 246 #define MACTX_PHY_DESC_PKT_TYPE_LSB 21 247 #define MACTX_PHY_DESC_PKT_TYPE_MSB 24 248 #define MACTX_PHY_DESC_PKT_TYPE_MASK 0x0000000001e00000 249 250 251 /* Description SU_OR_MU 252 253 Type of transmission: 254 255 For 11ax: 256 <enum 0 SU_transmission> 257 11ax: 258 This setting is used for the following preamble type of 259 transmissions: 260 11ax HE_SU PPDU 261 11ax HE_EXT_SU PPDU 262 11ax HE_TRIG PPDU 263 Note that the above implies all single user transmissions 264 265 266 11ac and other pkt_types: 267 Single user transmission 268 269 <enum 1 MU_transmission> 270 11ax: 271 This setting is used for the following preamble type of 272 transmissions: 273 11ax HE_MU 274 Note that this type of transmission implies multiple users 275 276 277 For 11ac: 278 Multi-user transmission 279 280 <enum 2 MU_SU_transmission> 281 11ax: 282 This setting is used for the following preamble type of 283 transmissions: 284 11ax HE_MU 285 Note that this type of transmission implies a SINGLE user, 286 but using HE_MU preamble type... 287 288 11ac and other pkt_types: 289 Reserved 290 291 <legal 0-2> 292 */ 293 294 #define MACTX_PHY_DESC_SU_OR_MU_OFFSET 0x0000000000000000 295 #define MACTX_PHY_DESC_SU_OR_MU_LSB 25 296 #define MACTX_PHY_DESC_SU_OR_MU_MSB 26 297 #define MACTX_PHY_DESC_SU_OR_MU_MASK 0x0000000006000000 298 299 300 /* Description MU_TYPE 301 302 Field only valid when 303 SU_or_MU == MU_transmission or 304 SU_or_MU == MU_SU_transmission 305 <enum 0 MU_MIMO_Transmission> 306 <enum 1 MU_OFDMA_Transmission> Note that within the RUs, 307 there might still be MU-MIMO... 308 <legal all> 309 */ 310 311 #define MACTX_PHY_DESC_MU_TYPE_OFFSET 0x0000000000000000 312 #define MACTX_PHY_DESC_MU_TYPE_LSB 27 313 #define MACTX_PHY_DESC_MU_TYPE_MSB 27 314 #define MACTX_PHY_DESC_MU_TYPE_MASK 0x0000000008000000 315 316 317 /* Description BANDWIDTH 318 319 Packet bandwidth: 320 321 The physical bandwidth that this device will be transmitting 322 in. 323 324 Note that for 11ax Trigger response transmissions (when 325 Field triggered == is_triggered), this bandwith is min(AP_pkt_bw, 326 STA_ch_bw) 327 328 <enum 0 20_mhz>20 Mhz BW 329 <enum 1 40_mhz>40 Mhz BW 330 <enum 2 80_mhz>80 Mhz BW 331 <enum 3 160_mhz>160 Mhz BW 332 <enum 4 320_mhz>320 Mhz BW 333 <enum 5 240_mhz>240 Mhz BW 334 */ 335 336 #define MACTX_PHY_DESC_BANDWIDTH_OFFSET 0x0000000000000000 337 #define MACTX_PHY_DESC_BANDWIDTH_LSB 28 338 #define MACTX_PHY_DESC_BANDWIDTH_MSB 30 339 #define MACTX_PHY_DESC_BANDWIDTH_MASK 0x0000000070000000 340 341 342 /* Description CHANNEL_CAPTURE 343 344 Indicates that the PHY should be armed to capture the channel 345 on the next received packet. This channel estimate is passed 346 to the MAC if the packet is successfully received. 347 <legal 0-1> 348 This field is not applicable for 11ah since implicit beamforming 349 is not supported 350 */ 351 352 #define MACTX_PHY_DESC_CHANNEL_CAPTURE_OFFSET 0x0000000000000000 353 #define MACTX_PHY_DESC_CHANNEL_CAPTURE_LSB 31 354 #define MACTX_PHY_DESC_CHANNEL_CAPTURE_MSB 31 355 #define MACTX_PHY_DESC_CHANNEL_CAPTURE_MASK 0x0000000080000000 356 357 358 /* Description MCS 359 360 In case of SU_or_MU == SU_transmission 361 362 Note that this includes trigger response transmission 363 364 The MCS to be used for the upcoming transmission. It must 365 match the 4-bit MCS value that is sent in the appropriate 366 signal field for the given packet type, except that EHT 367 BPSK with DCM and/or duplicate is encoded as '0.' 368 369 In case of .11ba (WUR), this field is filled according to 370 what is on the MAC side defined as "MCS_TYPE". 371 372 In case of SU_or_MU == MU_transmission 373 .11ac: highest MCS of all users 374 .11ax or .11be: highest 4-bit MCS field in all the HE_SIG_B 375 or EHT_SIG TLVs that MAC S/W informs to MAC H/W. Actual 376 highest 4-bit MCS to be sent to PHY might be lower after 377 MAC H/W computation. 378 379 For details, refer to the SIG field, related to this pkt_type. 380 381 (Note that this is slightly different then what is on the 382 MAC side defined as "MCS_TYPE". For this reason, the 'legal 383 values' here are NOT defined as MCS_TYPE) 384 <legal all> 385 */ 386 387 #define MACTX_PHY_DESC_MCS_OFFSET 0x0000000000000000 388 #define MACTX_PHY_DESC_MCS_LSB 32 389 #define MACTX_PHY_DESC_MCS_MSB 35 390 #define MACTX_PHY_DESC_MCS_MASK 0x0000000f00000000 391 392 393 /* Description GLOBAL_OFDMA_MIMO_ENABLE 394 395 When set, this transmission contains at least 1 user for 396 which MU-MIMO is enabled in its RU. 397 After per-BW/puncture pattern user disabling, in case of 398 pure OFDMA, PDG will clear this bit, but full BW MU-MIMO 399 is still possible with this bit set. 400 <legal all> 401 */ 402 403 #define MACTX_PHY_DESC_GLOBAL_OFDMA_MIMO_ENABLE_OFFSET 0x0000000000000000 404 #define MACTX_PHY_DESC_GLOBAL_OFDMA_MIMO_ENABLE_LSB 36 405 #define MACTX_PHY_DESC_GLOBAL_OFDMA_MIMO_ENABLE_MSB 36 406 #define MACTX_PHY_DESC_GLOBAL_OFDMA_MIMO_ENABLE_MASK 0x0000001000000000 407 408 409 /* Description RESERVED_1A 410 411 */ 412 413 #define MACTX_PHY_DESC_RESERVED_1A_OFFSET 0x0000000000000000 414 #define MACTX_PHY_DESC_RESERVED_1A_LSB 37 415 #define MACTX_PHY_DESC_RESERVED_1A_MSB 37 416 #define MACTX_PHY_DESC_RESERVED_1A_MASK 0x0000002000000000 417 418 419 /* Description STBC 420 421 When set, this transmission is based on stbc rates. 422 */ 423 424 #define MACTX_PHY_DESC_STBC_OFFSET 0x0000000000000000 425 #define MACTX_PHY_DESC_STBC_LSB 38 426 #define MACTX_PHY_DESC_STBC_MSB 38 427 #define MACTX_PHY_DESC_STBC_MASK 0x0000004000000000 428 429 430 /* Description DOT11AX_SU_EXTENDED 431 432 This field is only valid for pkt_type == 11ax OR pkt_type 433 == 11be 434 435 When set, the 11ax or 11be transmission is extended range 436 SU 437 */ 438 439 #define MACTX_PHY_DESC_DOT11AX_SU_EXTENDED_OFFSET 0x0000000000000000 440 #define MACTX_PHY_DESC_DOT11AX_SU_EXTENDED_LSB 39 441 #define MACTX_PHY_DESC_DOT11AX_SU_EXTENDED_MSB 39 442 #define MACTX_PHY_DESC_DOT11AX_SU_EXTENDED_MASK 0x0000008000000000 443 444 445 /* Description DOT11AX_TRIGGER_FRAME_EMBEDDED 446 447 When set, there is an 11ax trigger frame OR 11be trigger 448 frame embedded in this transmission. PHY shall latch the 449 transmit BW of this transmission and use it to select the 450 'MACTX_UPLINK_COMMON/USER...' TLVs parameters belonging 451 to this BW. Note that these 'MACTX_UPLINK_COMMON/USER...' 452 might already have been received by the PHY, or will come 453 in later. 454 <legal all> 455 */ 456 457 #define MACTX_PHY_DESC_DOT11AX_TRIGGER_FRAME_EMBEDDED_OFFSET 0x0000000000000000 458 #define MACTX_PHY_DESC_DOT11AX_TRIGGER_FRAME_EMBEDDED_LSB 40 459 #define MACTX_PHY_DESC_DOT11AX_TRIGGER_FRAME_EMBEDDED_MSB 40 460 #define MACTX_PHY_DESC_DOT11AX_TRIGGER_FRAME_EMBEDDED_MASK 0x0000010000000000 461 462 463 /* Description TX_PWR_SHARED 464 465 Transmit Power (signed value) in units of 0.25 dBm 466 <legal all> 467 */ 468 469 #define MACTX_PHY_DESC_TX_PWR_SHARED_OFFSET 0x0000000000000000 470 #define MACTX_PHY_DESC_TX_PWR_SHARED_LSB 41 471 #define MACTX_PHY_DESC_TX_PWR_SHARED_MSB 48 472 #define MACTX_PHY_DESC_TX_PWR_SHARED_MASK 0x0001fe0000000000 473 474 475 /* Description TX_PWR_UNSHARED 476 477 Transmit Power (signed value) in units of 0.25 dBm <legal 478 all> 479 */ 480 481 #define MACTX_PHY_DESC_TX_PWR_UNSHARED_OFFSET 0x0000000000000000 482 #define MACTX_PHY_DESC_TX_PWR_UNSHARED_LSB 49 483 #define MACTX_PHY_DESC_TX_PWR_UNSHARED_MSB 56 484 #define MACTX_PHY_DESC_TX_PWR_UNSHARED_MASK 0x01fe000000000000 485 486 487 /* Description MEASURE_POWER 488 489 This field enables the TPC to use power measurement for 490 current packet in CLPC updates. 491 <enum 0 measure_dis> TPC will not latch power measurement 492 result for current packet 493 <enum 1 measure_en> TPC will latch power measurement 494 result for current packet 495 <legal all> 496 */ 497 498 #define MACTX_PHY_DESC_MEASURE_POWER_OFFSET 0x0000000000000000 499 #define MACTX_PHY_DESC_MEASURE_POWER_LSB 57 500 #define MACTX_PHY_DESC_MEASURE_POWER_MSB 57 501 #define MACTX_PHY_DESC_MEASURE_POWER_MASK 0x0200000000000000 502 503 504 /* Description TPC_GLUT_SELF_CAL 505 506 Setting related to transmit power control calibration. 507 <legal all> 508 */ 509 510 #define MACTX_PHY_DESC_TPC_GLUT_SELF_CAL_OFFSET 0x0000000000000000 511 #define MACTX_PHY_DESC_TPC_GLUT_SELF_CAL_LSB 58 512 #define MACTX_PHY_DESC_TPC_GLUT_SELF_CAL_MSB 58 513 #define MACTX_PHY_DESC_TPC_GLUT_SELF_CAL_MASK 0x0400000000000000 514 515 516 /* Description BACK_TO_BACK_TRANSMISSION_EXPECTED 517 518 When set, the next transmission is expected to follow this 519 one in SIFS time (without any response reception in between). 520 521 522 For example used when transmitting beacons followed by the 523 broadcast or multicast frames 524 <legal all> 525 */ 526 527 #define MACTX_PHY_DESC_BACK_TO_BACK_TRANSMISSION_EXPECTED_OFFSET 0x0000000000000000 528 #define MACTX_PHY_DESC_BACK_TO_BACK_TRANSMISSION_EXPECTED_LSB 59 529 #define MACTX_PHY_DESC_BACK_TO_BACK_TRANSMISSION_EXPECTED_MSB 59 530 #define MACTX_PHY_DESC_BACK_TO_BACK_TRANSMISSION_EXPECTED_MASK 0x0800000000000000 531 532 533 /* Description HEAVY_CLIP_NSS 534 535 Number of active spatial streams in current packet. This 536 parameter is used by the heavy clip function in the transmitter. 537 In case of MU PPDU, this is total Nss of all users. 538 539 <enum 0 1_spatial_stream>Single spatial stream 540 <enum 1 2_spatial_streams>2 spatial streams 541 <enum 2 3_spatial_streams>3 spatial streams 542 <enum 3 4_spatial_streams>4 spatial streams 543 <enum 4 5_spatial_streams>5 spatial streams 544 <enum 5 6_spatial_streams>6 spatial streams 545 <enum 6 7_spatial_streams>7 spatial streams 546 <enum 7 8_spatial_streams>8 spatial streams 547 */ 548 549 #define MACTX_PHY_DESC_HEAVY_CLIP_NSS_OFFSET 0x0000000000000000 550 #define MACTX_PHY_DESC_HEAVY_CLIP_NSS_LSB 60 551 #define MACTX_PHY_DESC_HEAVY_CLIP_NSS_MSB 62 552 #define MACTX_PHY_DESC_HEAVY_CLIP_NSS_MASK 0x7000000000000000 553 554 555 /* Description TXBF_PER_PACKET_NO_CSD_NO_WALSH 556 557 This is a global switch that is applied to beamformed packets 558 559 560 If set, no_csd and no_walsh is applied to steering packet. 561 562 */ 563 564 #define MACTX_PHY_DESC_TXBF_PER_PACKET_NO_CSD_NO_WALSH_OFFSET 0x0000000000000000 565 #define MACTX_PHY_DESC_TXBF_PER_PACKET_NO_CSD_NO_WALSH_LSB 63 566 #define MACTX_PHY_DESC_TXBF_PER_PACKET_NO_CSD_NO_WALSH_MSB 63 567 #define MACTX_PHY_DESC_TXBF_PER_PACKET_NO_CSD_NO_WALSH_MASK 0x8000000000000000 568 569 570 /* Description NDP 571 572 When not "0", upcoming transmission is one of the indicated 573 NDP types. 574 575 <enum 0 no_ndp>No NDP transmission 576 <enum 1 beamforming_ndp>Beamforming NDP 577 <enum 2 he_ranging_ndp>11az NDP (HE Ranging NDP) 578 <enum 3 he_feedback_ndp>Short TB (HE Feedback NDP) 579 */ 580 581 #define MACTX_PHY_DESC_NDP_OFFSET 0x0000000000000008 582 #define MACTX_PHY_DESC_NDP_LSB 0 583 #define MACTX_PHY_DESC_NDP_MSB 1 584 #define MACTX_PHY_DESC_NDP_MASK 0x0000000000000003 585 586 587 /* Description UL_FLAG 588 589 This field is only valid for pkt_type == 11ax OR pkt_type 590 == 11be 591 592 593 Used for HE_SIGB 594 <enum 1 uplink> 595 <enum 0 downlink> 596 <legal all> 597 */ 598 599 #define MACTX_PHY_DESC_UL_FLAG_OFFSET 0x0000000000000008 600 #define MACTX_PHY_DESC_UL_FLAG_LSB 2 601 #define MACTX_PHY_DESC_UL_FLAG_MSB 2 602 #define MACTX_PHY_DESC_UL_FLAG_MASK 0x0000000000000004 603 604 605 /* Description TRIGGERED 606 607 This field is only valid for pkt_type == 11ax OR pkt_type 608 == 11be 609 610 611 Denotes whether it's a triggered uplink transmission 612 613 Must be set for HE-TB NDPs used in Secure Ranging NDPs (11az) 614 and Short-NDP (HE TB Feedback NDP). 615 616 <enum 0 non_trigerred> 617 <enum 1 is_triggered> 618 <legal all> 619 */ 620 621 #define MACTX_PHY_DESC_TRIGGERED_OFFSET 0x0000000000000008 622 #define MACTX_PHY_DESC_TRIGGERED_LSB 3 623 #define MACTX_PHY_DESC_TRIGGERED_MSB 3 624 #define MACTX_PHY_DESC_TRIGGERED_MASK 0x0000000000000008 625 626 627 /* Description AP_PKT_BW 628 629 Field only valid when triggered == is_triggered 630 631 This indicates the total bandwidth of the UL_TRIG packet 632 as indicated in the Trigger Frame. 633 634 <enum 0 20_mhz>20 Mhz BW 635 <enum 1 40_mhz>40 Mhz BW 636 <enum 2 80_mhz>80 Mhz BW 637 <enum 3 160_mhz>160 Mhz BW 638 <enum 4 320_mhz>320 Mhz BW 639 <enum 5 240_mhz>240 Mhz BW 640 */ 641 642 #define MACTX_PHY_DESC_AP_PKT_BW_OFFSET 0x0000000000000008 643 #define MACTX_PHY_DESC_AP_PKT_BW_LSB 4 644 #define MACTX_PHY_DESC_AP_PKT_BW_MSB 6 645 #define MACTX_PHY_DESC_AP_PKT_BW_MASK 0x0000000000000070 646 647 648 /* Description RU_POSITION_START 649 650 Field only valid when triggered == is_triggered 651 652 653 This field indicates the start basic (26 tone) RU number 654 assigned to this user 655 656 RU Numbering is based only on the order in which the RUs 657 are allocated over the available BW, starting from 0 and 658 in increasing frequency order and not primary-secondary 659 order. 660 661 The RU number within 80 MHz is available from the RU allocation 662 information in the trigger. For 160 MHz transmissions, 663 the trigger RU allocation only mentions primary/secondary 664 80 MHz. PDG needs to convert this to lower/higher 80 MHz. 665 666 667 If in 'PCU_PPDU_SETUP_START'/'MACTX_PRE_PHY_DESC,' CCA_Subband_channel_bonding_mask 668 bit 0 is mapped to any of bits 4 - 7 of Freq_Subband_channel_bonding_mask, 669 then the primary 80 MHz is the higher 80 MHz and the secondary 670 80 MHz is the lower one. 671 Otherwise (if CCA_Subband_channel_bonding_mask bit 0 is 672 mapped to any of bits 0 - 3 of Freq_Subband_channel_bonding_mask, 673 then the primary 80 MHz is the lower 80 MHz and the secondary 674 80 MHz is the higher one. 675 676 Note: this type of encoding decouples the formatting of 677 the trigger from from how info between MAC-PHY is exchanged 678 679 <legal 0- 147> 680 */ 681 682 #define MACTX_PHY_DESC_RU_POSITION_START_OFFSET 0x0000000000000008 683 #define MACTX_PHY_DESC_RU_POSITION_START_LSB 7 684 #define MACTX_PHY_DESC_RU_POSITION_START_MSB 14 685 #define MACTX_PHY_DESC_RU_POSITION_START_MASK 0x0000000000007f80 686 687 688 /* Description PCU_PPDU_SETUP_START_REASON 689 690 PDG shall fill this with the value it fills in the setup_start_reason 691 in 'PCU_PPDU_SETUP_START.' It indicates what triggered 692 the PDG to start Tx setup. 693 Used for debugging purposes. 694 695 <enum 0 fes_protection_frame> RTS or CTS-to-self transmission 696 preceding the regular PPDU portion of the coming FES. The 697 transmit is initiated by PDG_TX_REQ TLV from TXPCU 698 <enum 1 fes_after_protection > Regular PPDU transmission 699 that follows the transmission of medium protection: Either 700 RTS - CTS exchanges or CTS to self. The transmit is initiated 701 by PDG_TX_REQ TLV from TXPCU 702 <enum 2 fes_only> Regular PPDU transmission without 703 preceding medium protection frame exchanges. The transmit 704 is initiated by PDG_TX_REQ TLV from TXPCU 705 <enum 3 response_frame> response frame transmission. 706 The transmit is initiated by PDG_RESPONSE TLV from TXPCU 707 708 <enum 4 trig_response_frame> 11ax triggered response 709 frame transmission. The transmit is initiated by PDG_TRIG_RESPONSE 710 TLV from TXPCU 711 <enum 5 dynamic_protection_fes_only> Regular PPDU transmission 712 without preceding medium protection frame exchanges, because 713 the dynamic medium protection constraints were not satisfied. 714 The transmit is initiated by PDG_TX_REQ TLV from TXPCU. 715 716 <legal 0-5> 717 */ 718 719 #define MACTX_PHY_DESC_PCU_PPDU_SETUP_START_REASON_OFFSET 0x0000000000000008 720 #define MACTX_PHY_DESC_PCU_PPDU_SETUP_START_REASON_LSB 15 721 #define MACTX_PHY_DESC_PCU_PPDU_SETUP_START_REASON_MSB 17 722 #define MACTX_PHY_DESC_PCU_PPDU_SETUP_START_REASON_MASK 0x0000000000038000 723 724 725 /* Description TLV_SOURCE 726 727 <enum 1 phy_desc_from_pdg> This MACTX_PHY_DESC TLV is generated 728 by PDG. 729 <enum 0 phy_desc_from_fw> PDG is in bypass mode and this 730 MACTX_PHY_DESC TLV is queued by firmware. 731 <legal all> 732 */ 733 734 #define MACTX_PHY_DESC_TLV_SOURCE_OFFSET 0x0000000000000008 735 #define MACTX_PHY_DESC_TLV_SOURCE_LSB 18 736 #define MACTX_PHY_DESC_TLV_SOURCE_MSB 18 737 #define MACTX_PHY_DESC_TLV_SOURCE_MASK 0x0000000000040000 738 739 740 /* Description RESERVED_2A 741 742 <legal 0> 743 */ 744 745 #define MACTX_PHY_DESC_RESERVED_2A_OFFSET 0x0000000000000008 746 #define MACTX_PHY_DESC_RESERVED_2A_LSB 19 747 #define MACTX_PHY_DESC_RESERVED_2A_MSB 20 748 #define MACTX_PHY_DESC_RESERVED_2A_MASK 0x0000000000180000 749 750 751 /* Description NSS 752 753 Field only valid when triggered == is_triggered 754 755 Number of Spatial Streams occupied by the User 756 757 <enum 0 1_spatial_stream>Single spatial stream 758 <enum 1 2_spatial_streams>2 spatial streams 759 <enum 2 3_spatial_streams>3 spatial streams 760 <enum 3 4_spatial_streams>4 spatial streams 761 <enum 4 5_spatial_streams>5 spatial streams 762 <enum 5 6_spatial_streams>6 spatial streams 763 <enum 6 7_spatial_streams>7 spatial streams 764 <enum 7 8_spatial_streams>8 spatial streams 765 */ 766 767 #define MACTX_PHY_DESC_NSS_OFFSET 0x0000000000000008 768 #define MACTX_PHY_DESC_NSS_LSB 21 769 #define MACTX_PHY_DESC_NSS_MSB 23 770 #define MACTX_PHY_DESC_NSS_MASK 0x0000000000e00000 771 772 773 /* Description STREAM_OFFSET 774 775 Field only valid when triggered == is_triggered 776 777 Specify Stream-offset of the user for HE_TB Ranging NDP 778 or Short-NDP 779 780 Stream Offset from which the User occupies the Streams 781 */ 782 783 #define MACTX_PHY_DESC_STREAM_OFFSET_OFFSET 0x0000000000000008 784 #define MACTX_PHY_DESC_STREAM_OFFSET_LSB 24 785 #define MACTX_PHY_DESC_STREAM_OFFSET_MSB 26 786 #define MACTX_PHY_DESC_STREAM_OFFSET_MASK 0x0000000007000000 787 788 789 /* Description RESERVED_2B 790 791 <legal 0> 792 */ 793 794 #define MACTX_PHY_DESC_RESERVED_2B_OFFSET 0x0000000000000008 795 #define MACTX_PHY_DESC_RESERVED_2B_LSB 27 796 #define MACTX_PHY_DESC_RESERVED_2B_MSB 28 797 #define MACTX_PHY_DESC_RESERVED_2B_MASK 0x0000000018000000 798 799 800 /* Description CLPC_ENABLE 801 802 This field enables closed-loop TPC operation by enabling 803 CLPC adjustment of DAC gain for the next packet. 804 <enum 0 clpc_off> TPC error update disabled 805 <enum 1 clpc_on> TPC error will be applied to DAC gain 806 setting for the next packet 807 <legal 0-1> 808 */ 809 810 #define MACTX_PHY_DESC_CLPC_ENABLE_OFFSET 0x0000000000000008 811 #define MACTX_PHY_DESC_CLPC_ENABLE_LSB 29 812 #define MACTX_PHY_DESC_CLPC_ENABLE_MSB 29 813 #define MACTX_PHY_DESC_CLPC_ENABLE_MASK 0x0000000020000000 814 815 816 /* Description MU_NDP 817 818 If set indicates that this packet is an NDP used for MU 819 channel estimation. This bit will be used by the TPC to 820 signal that the analog gain settings can be updated. The 821 analog gain settings will not change for subsequent MU 822 data packets. 823 */ 824 825 #define MACTX_PHY_DESC_MU_NDP_OFFSET 0x0000000000000008 826 #define MACTX_PHY_DESC_MU_NDP_LSB 30 827 #define MACTX_PHY_DESC_MU_NDP_MSB 30 828 #define MACTX_PHY_DESC_MU_NDP_MASK 0x0000000040000000 829 830 831 /* Description RESPONSE_EXPECTED 832 833 When set, a response frame in SIFS time is expected after 834 this transmission. 835 <legal all> 836 */ 837 838 #define MACTX_PHY_DESC_RESPONSE_EXPECTED_OFFSET 0x0000000000000008 839 #define MACTX_PHY_DESC_RESPONSE_EXPECTED_LSB 31 840 #define MACTX_PHY_DESC_RESPONSE_EXPECTED_MSB 31 841 #define MACTX_PHY_DESC_RESPONSE_EXPECTED_MASK 0x0000000080000000 842 843 844 /* Description RX_CHAIN_MASK 845 846 Chain mask to support up to 8 antennas. 847 <legal 1-255> 848 */ 849 850 #define MACTX_PHY_DESC_RX_CHAIN_MASK_OFFSET 0x0000000000000008 851 #define MACTX_PHY_DESC_RX_CHAIN_MASK_LSB 32 852 #define MACTX_PHY_DESC_RX_CHAIN_MASK_MSB 39 853 #define MACTX_PHY_DESC_RX_CHAIN_MASK_MASK 0x000000ff00000000 854 855 856 /* Description RX_CHAIN_MASK_VALID 857 858 Indicates rx_chain_mask field is valid. 859 <enum 0 RX_CHAIN_MASK_IS_NOT_VALID> 860 <enum 1 RX_CHAIN_MASK_IS_VALID> 861 <legal all> 862 */ 863 864 #define MACTX_PHY_DESC_RX_CHAIN_MASK_VALID_OFFSET 0x0000000000000008 865 #define MACTX_PHY_DESC_RX_CHAIN_MASK_VALID_LSB 40 866 #define MACTX_PHY_DESC_RX_CHAIN_MASK_VALID_MSB 40 867 #define MACTX_PHY_DESC_RX_CHAIN_MASK_VALID_MASK 0x0000010000000000 868 869 870 /* Description ANT_SEL_VALID 871 872 Field only valid when ant_sel_valid is set. 873 874 TX Antenna select valid 875 <enum 0 ANT_SEL_IS_NOT_VALID> 876 <enum 1 ANT_SEL_IS_VALID> 877 <legal all> 878 */ 879 880 #define MACTX_PHY_DESC_ANT_SEL_VALID_OFFSET 0x0000000000000008 881 #define MACTX_PHY_DESC_ANT_SEL_VALID_LSB 41 882 #define MACTX_PHY_DESC_ANT_SEL_VALID_MSB 41 883 #define MACTX_PHY_DESC_ANT_SEL_VALID_MASK 0x0000020000000000 884 885 886 /* Description ANT_SEL 887 888 Field only valid when ant_sel_valid is set. 889 890 Antenna select for TX antenna diversity. 891 <enum 0 ANTENNA_0> 892 <enum 1 ANTENNA_1> 893 <legal all> 894 */ 895 896 #define MACTX_PHY_DESC_ANT_SEL_OFFSET 0x0000000000000008 897 #define MACTX_PHY_DESC_ANT_SEL_LSB 42 898 #define MACTX_PHY_DESC_ANT_SEL_MSB 42 899 #define MACTX_PHY_DESC_ANT_SEL_MASK 0x0000040000000000 900 901 902 /* Description CP_SETTING 903 904 Field only valid when pkt type is HT, VHT or HE. 905 906 Specify the right CP for HE-Ranging NDPs (11az)/Short NDP 907 908 909 <enum 0 gi_0_8_us > Legacy normal GI 910 <enum 1 gi_0_4_us > Legacy short GI 911 <enum 2 gi_1_6_us > HE related GI 912 <enum 3 gi_3_2_us > HE related GI 913 <legal 0 - 3> 914 */ 915 916 #define MACTX_PHY_DESC_CP_SETTING_OFFSET 0x0000000000000008 917 #define MACTX_PHY_DESC_CP_SETTING_LSB 43 918 #define MACTX_PHY_DESC_CP_SETTING_MSB 44 919 #define MACTX_PHY_DESC_CP_SETTING_MASK 0x0000180000000000 920 921 922 /* Description HE_PPDU_SUBTYPE 923 924 The subtype of HE transmission: 925 926 Specify as HE-SU for HE-SU Ranging NDP in 11az ; 927 Specify as HE-TB for HE-TB Ranging NDP in 11az ; 928 Specify as HE-TB for Short -NDP 929 Re-use the same for EHT PPDU types also 930 <enum 0 he_subtype_SU> 931 <enum 1 he_subtype_TRIG> 932 <enum 2 he_subtype_MU> 933 <enum 3 he_subtype_EXT_SU> 934 935 <legal all> 936 */ 937 938 #define MACTX_PHY_DESC_HE_PPDU_SUBTYPE_OFFSET 0x0000000000000008 939 #define MACTX_PHY_DESC_HE_PPDU_SUBTYPE_LSB 45 940 #define MACTX_PHY_DESC_HE_PPDU_SUBTYPE_MSB 46 941 #define MACTX_PHY_DESC_HE_PPDU_SUBTYPE_MASK 0x0000600000000000 942 943 944 /* Description ACTIVE_CHANNEL 945 946 Field only valid when triggered == non_trigerred 947 In case of a triggered response transmission, this field 948 will always be set to 0 949 950 This field indicates the active frequency band when the 951 packet bandwidth is less than the channel bandwidth. For 952 non 11ax packets this is same as the primary channel 953 <legal all> 954 */ 955 956 #define MACTX_PHY_DESC_ACTIVE_CHANNEL_OFFSET 0x0000000000000008 957 #define MACTX_PHY_DESC_ACTIVE_CHANNEL_LSB 47 958 #define MACTX_PHY_DESC_ACTIVE_CHANNEL_MSB 49 959 #define MACTX_PHY_DESC_ACTIVE_CHANNEL_MASK 0x0003800000000000 960 961 962 /* Description GENERATE_PHYRX_TX_START_TIMING 963 964 When set, PHY shall generate the PHYRX_TX_START_TIMING TLV 965 at the earliest opportunity during the preamble transmission 966 967 <legal all> 968 */ 969 970 #define MACTX_PHY_DESC_GENERATE_PHYRX_TX_START_TIMING_OFFSET 0x0000000000000008 971 #define MACTX_PHY_DESC_GENERATE_PHYRX_TX_START_TIMING_LSB 50 972 #define MACTX_PHY_DESC_GENERATE_PHYRX_TX_START_TIMING_MSB 50 973 #define MACTX_PHY_DESC_GENERATE_PHYRX_TX_START_TIMING_MASK 0x0004000000000000 974 975 976 /* Description LTF_SIZE 977 978 Field only valid when pkt type is HE. 979 980 Ltf size 981 982 Specify right LTF-size for HE-Ranging NDPs (11az)/Short-NDP 983 984 985 <enum 0 ltf_1x > 986 <enum 1 ltf_2x > 987 <enum 2 ltf_4x > 988 <legal 0 - 2> 989 */ 990 991 #define MACTX_PHY_DESC_LTF_SIZE_OFFSET 0x0000000000000008 992 #define MACTX_PHY_DESC_LTF_SIZE_LSB 51 993 #define MACTX_PHY_DESC_LTF_SIZE_MSB 52 994 #define MACTX_PHY_DESC_LTF_SIZE_MASK 0x0018000000000000 995 996 997 /* Description RU_SIZE_UPDATED_V2 998 999 Field only valid for pkt_type == 11ax or 11be and 1000 SU_or_MU == SU_transmission or 1001 SU_or_MU == MU_SU_transmission 1002 1003 The RU size of the upcoming transmission. 1004 1005 PHY uses this info to apply different min/max BO if payload 1006 bandwidth is less than 10MHz 1007 1008 In case of HE extended range transmission, e-num 2 (10MHz) 1009 or e-num 7 (20MHz) are used. 1010 1011 In case of trig transmission or OFDMA single user or MU-MIMO 1012 single user transmission, if the ru_size allocated to the 1013 user is the fullBW (with respect to AP_bw) ru size then 1014 the e-num 7 is used. 1015 For all other cases, e-nums corresponding to the ru size 1016 allocated to the user is used. 1017 1018 In case of EHT duplicate transmissions, this field indicates 1019 the width of the actual content before duplication, e.g. 1020 a 40 MHz PPDU duplicated to 160 MHz will have the bandwidth 1021 fields indicating 160 MHz and this field set to e-num 4 1022 (RU_484). 1023 1024 <enum 0 RU_26> 1025 <enum 1 RU_52> 1026 <enum 2 RU_106> 1027 <enum 3 RU_242><enum 4 RU_484><enum 5 RU_996><enum 6 RU_1992> 1028 1029 <enum 7 RU_FULLBW> Set when the RU occupies the full packet 1030 bandwidth 1031 Note that for an MU-RTS trigger, the response will also 1032 go out in legacy CTS rate... and thus e-num 7 will be used. 1033 1034 <enum 8 RU_FULLBW_240> Set when the RU occupies the full 1035 packet bandwidth 1036 <enum 9 RU_FULLBW_320> Set when the RU occupies the full 1037 packet bandwidth 1038 1039 <enum 10 RU_MULTI_LARGE> HW will use per-user sub-band-mask 1040 to infer the actual RU-size for Multi-large-RU/SU-Puncturing 1041 1042 1043 <enum 11 RU_78> multi small RU 1044 <enum 12 RU_132> multi small RU 1045 1046 1047 1048 NOTE: See the table following this TLV definition that explains 1049 the relationship between this field and the RU size allocated 1050 to users. 1051 1052 <legal all> 1053 */ 1054 1055 #define MACTX_PHY_DESC_RU_SIZE_UPDATED_V2_OFFSET 0x0000000000000008 1056 #define MACTX_PHY_DESC_RU_SIZE_UPDATED_V2_LSB 53 1057 #define MACTX_PHY_DESC_RU_SIZE_UPDATED_V2_MSB 56 1058 #define MACTX_PHY_DESC_RU_SIZE_UPDATED_V2_MASK 0x01e0000000000000 1059 1060 1061 /* Description RESERVED_3C 1062 1063 <legal 0> 1064 */ 1065 1066 #define MACTX_PHY_DESC_RESERVED_3C_OFFSET 0x0000000000000008 1067 #define MACTX_PHY_DESC_RESERVED_3C_LSB 57 1068 #define MACTX_PHY_DESC_RESERVED_3C_MSB 57 1069 #define MACTX_PHY_DESC_RESERVED_3C_MASK 0x0200000000000000 1070 1071 1072 /* Description U_SIG_PUNCTURE_PATTERN_ENCODING 1073 1074 Field only valid for pkt_type == 11be 1075 1076 The 6-bit value to be used in U-SIG and/or EHT-SIG Common 1077 field for the puncture pattern 1078 <legal 0-29> 1079 */ 1080 1081 #define MACTX_PHY_DESC_U_SIG_PUNCTURE_PATTERN_ENCODING_OFFSET 0x0000000000000008 1082 #define MACTX_PHY_DESC_U_SIG_PUNCTURE_PATTERN_ENCODING_LSB 58 1083 #define MACTX_PHY_DESC_U_SIG_PUNCTURE_PATTERN_ENCODING_MSB 63 1084 #define MACTX_PHY_DESC_U_SIG_PUNCTURE_PATTERN_ENCODING_MASK 0xfc00000000000000 1085 1086 1087 1088 #endif // MACTX_PHY_DESC 1089