1 /* 2 * Copyright (c) 2017 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #ifndef _RXPCU_PPDU_END_INFO_H_ 20 #define _RXPCU_PPDU_END_INFO_H_ 21 #if !defined(__ASSEMBLER__) 22 #endif 23 24 #include "phyrx_abort_request_info.h" 25 #include "macrx_abort_request_info.h" 26 27 // ################ START SUMMARY ################# 28 // 29 // Dword Fields 30 // 0 wb_timestamp_lower_32[31:0] 31 // 1 wb_timestamp_upper_32[31:0] 32 // 2 rx_antenna[23:0], tx_ht_vht_ack[24], unsupported_mu_nc[25], otp_txbf_disable[26], previous_tlv_corrupted[27], phyrx_abort_request_info_valid[28], macrx_abort_request_info_valid[29], reserved[31:30] 33 // 3 coex_bt_tx_from_start_of_rx[0], coex_bt_tx_after_start_of_rx[1], coex_wan_tx_from_start_of_rx[2], coex_wan_tx_after_start_of_rx[3], coex_wlan_tx_from_start_of_rx[4], coex_wlan_tx_after_start_of_rx[5], mpdu_delimiter_errors_seen[6], ftm_tm[8:7], dialog_token[16:9], follow_up_dialog_token[24:17], bb_captured_channel[25], reserved_3[31:26] 34 // 4 before_mpdu_count_passing_fcs[7:0], before_mpdu_count_failing_fcs[15:8], after_mpdu_count_passing_fcs[23:16], after_mpdu_count_failing_fcs[31:24] 35 // 5 phy_timestamp_tx_lower_32[31:0] 36 // 6 phy_timestamp_tx_upper_32[31:0] 37 // 7 bb_length[15:0], bb_data[16], reserved_7[31:17] 38 // 8 rx_ppdu_duration[23:0], reserved_8[31:24] 39 // 9 ast_index[15:0], ast_index_valid[16], reserved_9[31:17] 40 // 10 struct phyrx_abort_request_info phyrx_abort_request_info_details; 41 // 11 struct macrx_abort_request_info macrx_abort_request_info_details; 42 // 12 rx_ppdu_end_marker[31:0] 43 // 44 // ################ END SUMMARY ################# 45 46 #define NUM_OF_DWORDS_RXPCU_PPDU_END_INFO 13 47 48 struct rxpcu_ppdu_end_info { 49 uint32_t wb_timestamp_lower_32 : 32; //[31:0] 50 uint32_t wb_timestamp_upper_32 : 32; //[31:0] 51 uint32_t rx_antenna : 24, //[23:0] 52 tx_ht_vht_ack : 1, //[24] 53 unsupported_mu_nc : 1, //[25] 54 otp_txbf_disable : 1, //[26] 55 previous_tlv_corrupted : 1, //[27] 56 phyrx_abort_request_info_valid : 1, //[28] 57 macrx_abort_request_info_valid : 1, //[29] 58 reserved : 2; //[31:30] 59 uint32_t coex_bt_tx_from_start_of_rx : 1, //[0] 60 coex_bt_tx_after_start_of_rx : 1, //[1] 61 coex_wan_tx_from_start_of_rx : 1, //[2] 62 coex_wan_tx_after_start_of_rx : 1, //[3] 63 coex_wlan_tx_from_start_of_rx : 1, //[4] 64 coex_wlan_tx_after_start_of_rx : 1, //[5] 65 mpdu_delimiter_errors_seen : 1, //[6] 66 ftm_tm : 2, //[8:7] 67 dialog_token : 8, //[16:9] 68 follow_up_dialog_token : 8, //[24:17] 69 bb_captured_channel : 1, //[25] 70 reserved_3 : 6; //[31:26] 71 uint32_t before_mpdu_count_passing_fcs : 8, //[7:0] 72 before_mpdu_count_failing_fcs : 8, //[15:8] 73 after_mpdu_count_passing_fcs : 8, //[23:16] 74 after_mpdu_count_failing_fcs : 8; //[31:24] 75 uint32_t phy_timestamp_tx_lower_32 : 32; //[31:0] 76 uint32_t phy_timestamp_tx_upper_32 : 32; //[31:0] 77 uint32_t bb_length : 16, //[15:0] 78 bb_data : 1, //[16] 79 reserved_7 : 15; //[31:17] 80 uint32_t rx_ppdu_duration : 24, //[23:0] 81 reserved_8 : 8; //[31:24] 82 uint32_t ast_index : 16, //[15:0] 83 ast_index_valid : 1, //[16] 84 reserved_9 : 15; //[31:17] 85 struct phyrx_abort_request_info phyrx_abort_request_info_details; 86 struct macrx_abort_request_info macrx_abort_request_info_details; 87 uint16_t reserved_after_struct16 : 16; //[31:16] 88 uint32_t rx_ppdu_end_marker : 32; //[31:0] 89 }; 90 91 /* 92 93 wb_timestamp_lower_32 94 95 WLAN/BT timestamp is a 1 usec resolution timestamp which 96 does not get updated based on receive beacon like TSF. The 97 same rules for capturing tsf_timestamp are used to capture 98 the wb_timestamp. This field represents the lower 32 bits of 99 the 64-bit timestamp 100 101 wb_timestamp_upper_32 102 103 WLAN/BT timestamp is a 1 usec resolution timestamp which 104 does not get updated based on receive beacon like TSF. The 105 same rules for capturing tsf_timestamp are used to capture 106 the wb_timestamp. This field represents the upper 32 bits of 107 the 64-bit timestamp 108 109 rx_antenna 110 111 Receive antenna value ??? 112 113 tx_ht_vht_ack 114 115 Indicates that a HT or VHT Ack/BA frame was transmitted 116 in response to this receive packet. 117 118 unsupported_mu_nc 119 120 Set if MU Nc > 2 in received NDPA. 121 122 If this bit is set, even though AID and BSSID are 123 matched, MAC doesn't send tx_expect_ndp to PHY, because MU 124 Nc > 2 is not supported in Helium. 125 126 otp_txbf_disable 127 128 Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is 129 set and if RXPU receives directed NDPA frame. Then, RXPCU 130 should not send TX_EXPECT_NDP TLV to SW but set this bit to 131 inform SW. 132 133 previous_tlv_corrupted 134 135 When set, the TLV preceding this RXPCU_END_INFO TLV 136 within the RX_PPDU_END TLV, is corrupted. Not the entire TLV 137 was received.... Likely due to an abort scenario... If abort 138 is to blame, see the abort data datastructure for details. 139 140 <legal all> 141 142 phyrx_abort_request_info_valid 143 144 When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to 145 RXPCU. The abort fields embedded in this TLV contain valid 146 info. 147 148 <legal all> 149 150 macrx_abort_request_info_valid 151 152 When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to 153 RXPCU. The abort fields embedded in this TLV contain valid 154 info. 155 156 <legal all> 157 158 reserved 159 160 <legal 0> 161 162 coex_bt_tx_from_start_of_rx 163 164 Set when BT TX was ongoing when WLAN RX started 165 166 coex_bt_tx_after_start_of_rx 167 168 169 coex_wan_tx_from_start_of_rx 170 171 Set when WAN TX was ongoing when WLAN RX started 172 173 coex_wan_tx_after_start_of_rx 174 175 Set when WAN TX started while WLAN RX was already 176 ongoing 177 178 coex_wlan_tx_from_start_of_rx 179 180 Set when other WLAN TX was ongoing when WLAN RX started 181 182 coex_wlan_tx_after_start_of_rx 183 184 Set when other WLAN TX started while WLAN RX was already 185 ongoing 186 187 mpdu_delimiter_errors_seen 188 189 When set, MPDU delimiter errors have been detected 190 during this PPDU reception 191 192 ftm_tm 193 194 Indicate the timestamp is for the FTM or TM frame 195 196 197 198 0: non TM or FTM frame 199 200 1: FTM frame 201 202 2: TM frame 203 204 3: reserved 205 206 <legal all> 207 208 dialog_token 209 210 The dialog token in the FTM or TM frame. Only valid when 211 the FTM is set. Clear to 254 for a non-FTM frame 212 213 <legal all> 214 215 follow_up_dialog_token 216 217 The follow up dialog token in the FTM or TM frame. Only 218 valid when the FTM is set. Clear to 0 for a non-FTM frame, 219 The follow up dialog token in the FTM frame. Only valid when 220 the FTM is set. Clear to 255 for a non-FTM frame<legal all> 221 222 bb_captured_channel 223 224 Set by RXPCU when the following conditions are met: 225 226 227 228 Directed (=> unicast) TM or FTM frame has been received 229 with passing FCS 230 231 PHYRX_PKT_END. Location_info_valid is set 232 233 234 235 <legal all> 236 237 reserved_3 238 239 <legal 0> 240 241 before_mpdu_count_passing_fcs 242 243 Number of MPDUs received in this PPDU that passed the 244 FCS check before the Coex TX started 245 246 before_mpdu_count_failing_fcs 247 248 Number of MPDUs received in this PPDU that failed the 249 FCS check before the Coex TX started 250 251 after_mpdu_count_passing_fcs 252 253 Number of MPDUs received in this PPDU that passed the 254 FCS check after the moment the Coex TX started 255 256 257 258 (Note: The partially received MPDU when the COEX tx 259 start event came in falls in the after category) 260 261 after_mpdu_count_failing_fcs 262 263 Number of MPDUs received in this PPDU that failed the 264 FCS check after the moment the Coex TX started 265 266 267 268 (Note: The partially received MPDU when the COEX tx 269 start event came in falls in the after category) 270 271 phy_timestamp_tx_lower_32 272 273 The PHY timestamp in the AMPI of the most recent rising 274 edge (TODO: of what ???) after the TX_PHY_DESC. This field 275 indicates the lower 32 bits of the timestamp 276 277 phy_timestamp_tx_upper_32 278 279 The PHY timestamp in the AMPI of the most recent rising 280 edge (TODO: of what ???) after the TX_PHY_DESC. This field 281 indicates the upper 32 bits of the timestamp 282 283 bb_length 284 285 Indicates the number of bytes of baseband information 286 for PPDUs where the BB descriptor preamble type is 0x80 to 287 0xFF which indicates that this is not a normal PPDU but 288 rather contains baseband debug information. 289 290 TODO: Is this still needed ??? 291 292 bb_data 293 294 Indicates that BB data associated with this PPDU will 295 exist in the receive buffer. The exact contents of this BB 296 data can be found by decoding the BB TLV in the buffer 297 associated with the BB data. See vector_fragment in the 298 Helium_mac_phy_interface.docx 299 300 reserved_7 301 302 Reserved: HW should fill with 0, FW should ignore. 303 304 rx_ppdu_duration 305 306 The length of this PPDU reception in us 307 308 reserved_8 309 310 <legal 0> 311 312 ast_index 313 314 The AST index of the receive Ack/BA. This information 315 is provided from the TXPCU to the RXPCU for receive Ack/BA 316 for implicit beamforming. 317 318 <legal all> 319 320 ast_index_valid 321 322 Indicates that ast_index is valid. Should only be set 323 for receive Ack/BA where single stream implicit sounding is 324 captured. 325 326 reserved_9 327 328 <legal 0> 329 330 struct phyrx_abort_request_info phyrx_abort_request_info_details 331 332 Field only valid when Phyrx_abort_request_info_valid is 333 set 334 335 The reason why PHY generated an abort request 336 337 struct macrx_abort_request_info macrx_abort_request_info_details 338 339 Field only valid when macrx_abort_request_info_valid is 340 set 341 342 The reason why MACRX generated an abort request 343 344 rx_ppdu_end_marker 345 346 Field used by SW to double check that their structure 347 alignment is in sync with what HW has done. 348 349 <legal 0xAABBCCDD> 350 */ 351 352 353 /* Description RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32 354 355 WLAN/BT timestamp is a 1 usec resolution timestamp which 356 does not get updated based on receive beacon like TSF. The 357 same rules for capturing tsf_timestamp are used to capture 358 the wb_timestamp. This field represents the lower 32 bits of 359 the 64-bit timestamp 360 */ 361 #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_OFFSET 0x00000000 362 #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_LSB 0 363 #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_MASK 0xffffffff 364 365 /* Description RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32 366 367 WLAN/BT timestamp is a 1 usec resolution timestamp which 368 does not get updated based on receive beacon like TSF. The 369 same rules for capturing tsf_timestamp are used to capture 370 the wb_timestamp. This field represents the upper 32 bits of 371 the 64-bit timestamp 372 */ 373 #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_OFFSET 0x00000004 374 #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_LSB 0 375 #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_MASK 0xffffffff 376 377 /* Description RXPCU_PPDU_END_INFO_2_RX_ANTENNA 378 379 Receive antenna value ??? 380 */ 381 #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_OFFSET 0x00000008 382 #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_LSB 0 383 #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_MASK 0x00ffffff 384 385 /* Description RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK 386 387 Indicates that a HT or VHT Ack/BA frame was transmitted 388 in response to this receive packet. 389 */ 390 #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_OFFSET 0x00000008 391 #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_LSB 24 392 #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_MASK 0x01000000 393 394 /* Description RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC 395 396 Set if MU Nc > 2 in received NDPA. 397 398 If this bit is set, even though AID and BSSID are 399 matched, MAC doesn't send tx_expect_ndp to PHY, because MU 400 Nc > 2 is not supported in Helium. 401 */ 402 #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_OFFSET 0x00000008 403 #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_LSB 25 404 #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_MASK 0x02000000 405 406 /* Description RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE 407 408 Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is 409 set and if RXPU receives directed NDPA frame. Then, RXPCU 410 should not send TX_EXPECT_NDP TLV to SW but set this bit to 411 inform SW. 412 */ 413 #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_OFFSET 0x00000008 414 #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_LSB 26 415 #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_MASK 0x04000000 416 417 /* Description RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED 418 419 When set, the TLV preceding this RXPCU_END_INFO TLV 420 within the RX_PPDU_END TLV, is corrupted. Not the entire TLV 421 was received.... Likely due to an abort scenario... If abort 422 is to blame, see the abort data datastructure for details. 423 424 <legal all> 425 */ 426 #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_OFFSET 0x00000008 427 #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_LSB 27 428 #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_MASK 0x08000000 429 430 /* Description RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID 431 432 When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to 433 RXPCU. The abort fields embedded in this TLV contain valid 434 info. 435 436 <legal all> 437 */ 438 #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_OFFSET 0x00000008 439 #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_LSB 28 440 #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_MASK 0x10000000 441 442 /* Description RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID 443 444 When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to 445 RXPCU. The abort fields embedded in this TLV contain valid 446 info. 447 448 <legal all> 449 */ 450 #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_OFFSET 0x00000008 451 #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_LSB 29 452 #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_MASK 0x20000000 453 454 /* Description RXPCU_PPDU_END_INFO_2_RESERVED 455 456 <legal 0> 457 */ 458 #define RXPCU_PPDU_END_INFO_2_RESERVED_OFFSET 0x00000008 459 #define RXPCU_PPDU_END_INFO_2_RESERVED_LSB 30 460 #define RXPCU_PPDU_END_INFO_2_RESERVED_MASK 0xc0000000 461 462 /* Description RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX 463 464 Set when BT TX was ongoing when WLAN RX started 465 */ 466 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_OFFSET 0x0000000c 467 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_LSB 0 468 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_MASK 0x00000001 469 470 /* Description RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX 471 472 */ 473 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_OFFSET 0x0000000c 474 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_LSB 1 475 #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_MASK 0x00000002 476 477 /* Description RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX 478 479 Set when WAN TX was ongoing when WLAN RX started 480 */ 481 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_OFFSET 0x0000000c 482 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_LSB 2 483 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_MASK 0x00000004 484 485 /* Description RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX 486 487 Set when WAN TX started while WLAN RX was already 488 ongoing 489 */ 490 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_OFFSET 0x0000000c 491 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_LSB 3 492 #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_MASK 0x00000008 493 494 /* Description RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX 495 496 Set when other WLAN TX was ongoing when WLAN RX started 497 */ 498 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_OFFSET 0x0000000c 499 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_LSB 4 500 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_MASK 0x00000010 501 502 /* Description RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX 503 504 Set when other WLAN TX started while WLAN RX was already 505 ongoing 506 */ 507 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_OFFSET 0x0000000c 508 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_LSB 5 509 #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_MASK 0x00000020 510 511 /* Description RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN 512 513 When set, MPDU delimiter errors have been detected 514 during this PPDU reception 515 */ 516 #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_OFFSET 0x0000000c 517 #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_LSB 6 518 #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_MASK 0x00000040 519 520 /* Description RXPCU_PPDU_END_INFO_3_FTM_TM 521 522 Indicate the timestamp is for the FTM or TM frame 523 524 525 526 0: non TM or FTM frame 527 528 1: FTM frame 529 530 2: TM frame 531 532 3: reserved 533 534 <legal all> 535 */ 536 #define RXPCU_PPDU_END_INFO_3_FTM_TM_OFFSET 0x0000000c 537 #define RXPCU_PPDU_END_INFO_3_FTM_TM_LSB 7 538 #define RXPCU_PPDU_END_INFO_3_FTM_TM_MASK 0x00000180 539 540 /* Description RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN 541 542 The dialog token in the FTM or TM frame. Only valid when 543 the FTM is set. Clear to 254 for a non-FTM frame 544 545 <legal all> 546 */ 547 #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_OFFSET 0x0000000c 548 #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_LSB 9 549 #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_MASK 0x0001fe00 550 551 /* Description RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN 552 553 The follow up dialog token in the FTM or TM frame. Only 554 valid when the FTM is set. Clear to 0 for a non-FTM frame, 555 The follow up dialog token in the FTM frame. Only valid when 556 the FTM is set. Clear to 255 for a non-FTM frame<legal all> 557 */ 558 #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_OFFSET 0x0000000c 559 #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_LSB 17 560 #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_MASK 0x01fe0000 561 562 /* Description RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL 563 564 Set by RXPCU when the following conditions are met: 565 566 567 568 Directed (=> unicast) TM or FTM frame has been received 569 with passing FCS 570 571 PHYRX_PKT_END. Location_info_valid is set 572 573 574 575 <legal all> 576 */ 577 #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_OFFSET 0x0000000c 578 #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_LSB 25 579 #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_MASK 0x02000000 580 581 /* Description RXPCU_PPDU_END_INFO_3_RESERVED_3 582 583 <legal 0> 584 */ 585 #define RXPCU_PPDU_END_INFO_3_RESERVED_3_OFFSET 0x0000000c 586 #define RXPCU_PPDU_END_INFO_3_RESERVED_3_LSB 26 587 #define RXPCU_PPDU_END_INFO_3_RESERVED_3_MASK 0xfc000000 588 589 /* Description RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS 590 591 Number of MPDUs received in this PPDU that passed the 592 FCS check before the Coex TX started 593 */ 594 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_OFFSET 0x00000010 595 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_LSB 0 596 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_MASK 0x000000ff 597 598 /* Description RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS 599 600 Number of MPDUs received in this PPDU that failed the 601 FCS check before the Coex TX started 602 */ 603 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_OFFSET 0x00000010 604 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_LSB 8 605 #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_MASK 0x0000ff00 606 607 /* Description RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS 608 609 Number of MPDUs received in this PPDU that passed the 610 FCS check after the moment the Coex TX started 611 612 613 614 (Note: The partially received MPDU when the COEX tx 615 start event came in falls in the after category) 616 */ 617 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_OFFSET 0x00000010 618 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_LSB 16 619 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_MASK 0x00ff0000 620 621 /* Description RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS 622 623 Number of MPDUs received in this PPDU that failed the 624 FCS check after the moment the Coex TX started 625 626 627 628 (Note: The partially received MPDU when the COEX tx 629 start event came in falls in the after category) 630 */ 631 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_OFFSET 0x00000010 632 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_LSB 24 633 #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_MASK 0xff000000 634 635 /* Description RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32 636 637 The PHY timestamp in the AMPI of the most recent rising 638 edge (TODO: of what ???) after the TX_PHY_DESC. This field 639 indicates the lower 32 bits of the timestamp 640 */ 641 #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_OFFSET 0x00000014 642 #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_LSB 0 643 #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_MASK 0xffffffff 644 645 /* Description RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32 646 647 The PHY timestamp in the AMPI of the most recent rising 648 edge (TODO: of what ???) after the TX_PHY_DESC. This field 649 indicates the upper 32 bits of the timestamp 650 */ 651 #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_OFFSET 0x00000018 652 #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_LSB 0 653 #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_MASK 0xffffffff 654 655 /* Description RXPCU_PPDU_END_INFO_7_BB_LENGTH 656 657 Indicates the number of bytes of baseband information 658 for PPDUs where the BB descriptor preamble type is 0x80 to 659 0xFF which indicates that this is not a normal PPDU but 660 rather contains baseband debug information. 661 662 TODO: Is this still needed ??? 663 */ 664 #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_OFFSET 0x0000001c 665 #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_LSB 0 666 #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_MASK 0x0000ffff 667 668 /* Description RXPCU_PPDU_END_INFO_7_BB_DATA 669 670 Indicates that BB data associated with this PPDU will 671 exist in the receive buffer. The exact contents of this BB 672 data can be found by decoding the BB TLV in the buffer 673 associated with the BB data. See vector_fragment in the 674 Helium_mac_phy_interface.docx 675 */ 676 #define RXPCU_PPDU_END_INFO_7_BB_DATA_OFFSET 0x0000001c 677 #define RXPCU_PPDU_END_INFO_7_BB_DATA_LSB 16 678 #define RXPCU_PPDU_END_INFO_7_BB_DATA_MASK 0x00010000 679 680 /* Description RXPCU_PPDU_END_INFO_7_RESERVED_7 681 682 Reserved: HW should fill with 0, FW should ignore. 683 */ 684 #define RXPCU_PPDU_END_INFO_7_RESERVED_7_OFFSET 0x0000001c 685 #define RXPCU_PPDU_END_INFO_7_RESERVED_7_LSB 17 686 #define RXPCU_PPDU_END_INFO_7_RESERVED_7_MASK 0xfffe0000 687 688 /* Description RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION 689 690 The length of this PPDU reception in us 691 */ 692 #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_OFFSET 0x00000020 693 #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_LSB 0 694 #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_MASK 0x00ffffff 695 696 /* Description RXPCU_PPDU_END_INFO_8_RESERVED_8 697 698 <legal 0> 699 */ 700 #define RXPCU_PPDU_END_INFO_8_RESERVED_8_OFFSET 0x00000020 701 #define RXPCU_PPDU_END_INFO_8_RESERVED_8_LSB 24 702 #define RXPCU_PPDU_END_INFO_8_RESERVED_8_MASK 0xff000000 703 704 /* Description RXPCU_PPDU_END_INFO_9_AST_INDEX 705 706 The AST index of the receive Ack/BA. This information 707 is provided from the TXPCU to the RXPCU for receive Ack/BA 708 for implicit beamforming. 709 710 <legal all> 711 */ 712 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_OFFSET 0x00000024 713 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_LSB 0 714 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_MASK 0x0000ffff 715 716 /* Description RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID 717 718 Indicates that ast_index is valid. Should only be set 719 for receive Ack/BA where single stream implicit sounding is 720 captured. 721 */ 722 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_OFFSET 0x00000024 723 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_LSB 16 724 #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_MASK 0x00010000 725 726 /* Description RXPCU_PPDU_END_INFO_9_RESERVED_9 727 728 <legal 0> 729 */ 730 #define RXPCU_PPDU_END_INFO_9_RESERVED_9_OFFSET 0x00000024 731 #define RXPCU_PPDU_END_INFO_9_RESERVED_9_LSB 17 732 #define RXPCU_PPDU_END_INFO_9_RESERVED_9_MASK 0xfffe0000 733 #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_OFFSET 0x00000028 734 #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_LSB 17 735 #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_MASK 0xffffffff 736 #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_OFFSET 0x0000002c 737 #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_LSB 17 738 #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_MASK 0xffffffff 739 740 /* Description RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER 741 742 Field used by SW to double check that their structure 743 alignment is in sync with what HW has done. 744 745 <legal 0xAABBCCDD> 746 */ 747 #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_OFFSET 0x00000030 748 #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_LSB 0 749 #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_MASK 0xffffffff 750 751 752 #endif // _RXPCU_PPDU_END_INFO_H_ 753