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 // $ATH_LICENSE_HW_HDR_C$ 18 // 19 // DO NOT EDIT! This file is automatically generated 20 // These definitions are tied to a particular hardware layout 21 22 23 #ifndef _RX_PPDU_END_USER_STATS_H_ 24 #define _RX_PPDU_END_USER_STATS_H_ 25 #if !defined(__ASSEMBLER__) 26 #endif 27 28 #include "rx_rxpcu_classification_overview.h" 29 30 // ################ START SUMMARY ################# 31 // 32 // Dword Fields 33 // 0 struct rx_rxpcu_classification_overview rxpcu_classification_details; 34 // 1 sta_full_aid[12:0], mcs[16:13], nss[19:17], ofdma_info_valid[20], dl_ofdma_ru_start_index[27:21], reserved_1a[31:28] 35 // 2 dl_ofdma_ru_width[6:0], reserved_2a[7], user_receive_quality[15:8], mpdu_cnt_fcs_err[25:16], wbm2rxdma_buf_source_used[26], fw2rxdma_buf_source_used[27], sw2rxdma_buf_source_used[28], reserved_2b[31:29] 36 // 3 mpdu_cnt_fcs_ok[8:0], frame_control_info_valid[9], qos_control_info_valid[10], ht_control_info_valid[11], data_sequence_control_info_valid[12], ht_control_info_null_valid[13], reserved_3a[15:14], rxdma2reo_ring_used[16], rxdma2fw_ring_used[17], rxdma2sw_ring_used[18], rxdma_release_ring_used[19], ht_control_field_pkt_type[23:20], reserved_3b[31:24] 37 // 4 ast_index[15:0], frame_control_field[31:16] 38 // 5 first_data_seq_ctrl[15:0], qos_control_field[31:16] 39 // 6 ht_control_field[31:0] 40 // 7 fcs_ok_bitmap_31_0[31:0] 41 // 8 fcs_ok_bitmap_63_32[31:0] 42 // 9 udp_msdu_count[15:0], tcp_msdu_count[31:16] 43 // 10 other_msdu_count[15:0], tcp_ack_msdu_count[31:16] 44 // 11 sw_response_reference_ptr[31:0] 45 // 12 received_qos_data_tid_bitmap[15:0], received_qos_data_tid_eosp_bitmap[31:16] 46 // 13 qosctrl_15_8_tid0[7:0], qosctrl_15_8_tid1[15:8], qosctrl_15_8_tid2[23:16], qosctrl_15_8_tid3[31:24] 47 // 14 qosctrl_15_8_tid4[7:0], qosctrl_15_8_tid5[15:8], qosctrl_15_8_tid6[23:16], qosctrl_15_8_tid7[31:24] 48 // 15 qosctrl_15_8_tid8[7:0], qosctrl_15_8_tid9[15:8], qosctrl_15_8_tid10[23:16], qosctrl_15_8_tid11[31:24] 49 // 16 qosctrl_15_8_tid12[7:0], qosctrl_15_8_tid13[15:8], qosctrl_15_8_tid14[23:16], qosctrl_15_8_tid15[31:24] 50 // 17 mpdu_ok_byte_count[24:0], ampdu_delim_ok_count_6_0[31:25] 51 // 18 ampdu_delim_err_count[24:0], ampdu_delim_ok_count_13_7[31:25] 52 // 19 mpdu_err_byte_count[24:0], ampdu_delim_ok_count_20_14[31:25] 53 // 20 non_consecutive_delimiter_err[15:0], reserved_20a[31:16] 54 // 21 ht_control_null_field[31:0] 55 // 22 sw_response_reference_ptr_ext[31:0] 56 // 57 // ################ END SUMMARY ################# 58 59 #define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 23 60 61 struct rx_ppdu_end_user_stats { 62 struct rx_rxpcu_classification_overview rxpcu_classification_details; 63 uint32_t sta_full_aid : 13, //[12:0] 64 mcs : 4, //[16:13] 65 nss : 3, //[19:17] 66 ofdma_info_valid : 1, //[20] 67 dl_ofdma_ru_start_index : 7, //[27:21] 68 reserved_1a : 4; //[31:28] 69 uint32_t dl_ofdma_ru_width : 7, //[6:0] 70 reserved_2a : 1, //[7] 71 user_receive_quality : 8, //[15:8] 72 mpdu_cnt_fcs_err : 10, //[25:16] 73 wbm2rxdma_buf_source_used : 1, //[26] 74 fw2rxdma_buf_source_used : 1, //[27] 75 sw2rxdma_buf_source_used : 1, //[28] 76 reserved_2b : 3; //[31:29] 77 uint32_t mpdu_cnt_fcs_ok : 9, //[8:0] 78 frame_control_info_valid : 1, //[9] 79 qos_control_info_valid : 1, //[10] 80 ht_control_info_valid : 1, //[11] 81 data_sequence_control_info_valid: 1, //[12] 82 ht_control_info_null_valid : 1, //[13] 83 reserved_3a : 2, //[15:14] 84 rxdma2reo_ring_used : 1, //[16] 85 rxdma2fw_ring_used : 1, //[17] 86 rxdma2sw_ring_used : 1, //[18] 87 rxdma_release_ring_used : 1, //[19] 88 ht_control_field_pkt_type : 4, //[23:20] 89 reserved_3b : 8; //[31:24] 90 uint32_t ast_index : 16, //[15:0] 91 frame_control_field : 16; //[31:16] 92 uint32_t first_data_seq_ctrl : 16, //[15:0] 93 qos_control_field : 16; //[31:16] 94 uint32_t ht_control_field : 32; //[31:0] 95 uint32_t fcs_ok_bitmap_31_0 : 32; //[31:0] 96 uint32_t fcs_ok_bitmap_63_32 : 32; //[31:0] 97 uint32_t udp_msdu_count : 16, //[15:0] 98 tcp_msdu_count : 16; //[31:16] 99 uint32_t other_msdu_count : 16, //[15:0] 100 tcp_ack_msdu_count : 16; //[31:16] 101 uint32_t sw_response_reference_ptr : 32; //[31:0] 102 uint32_t received_qos_data_tid_bitmap : 16, //[15:0] 103 received_qos_data_tid_eosp_bitmap: 16; //[31:16] 104 uint32_t qosctrl_15_8_tid0 : 8, //[7:0] 105 qosctrl_15_8_tid1 : 8, //[15:8] 106 qosctrl_15_8_tid2 : 8, //[23:16] 107 qosctrl_15_8_tid3 : 8; //[31:24] 108 uint32_t qosctrl_15_8_tid4 : 8, //[7:0] 109 qosctrl_15_8_tid5 : 8, //[15:8] 110 qosctrl_15_8_tid6 : 8, //[23:16] 111 qosctrl_15_8_tid7 : 8; //[31:24] 112 uint32_t qosctrl_15_8_tid8 : 8, //[7:0] 113 qosctrl_15_8_tid9 : 8, //[15:8] 114 qosctrl_15_8_tid10 : 8, //[23:16] 115 qosctrl_15_8_tid11 : 8; //[31:24] 116 uint32_t qosctrl_15_8_tid12 : 8, //[7:0] 117 qosctrl_15_8_tid13 : 8, //[15:8] 118 qosctrl_15_8_tid14 : 8, //[23:16] 119 qosctrl_15_8_tid15 : 8; //[31:24] 120 uint32_t mpdu_ok_byte_count : 25, //[24:0] 121 ampdu_delim_ok_count_6_0 : 7; //[31:25] 122 uint32_t ampdu_delim_err_count : 25, //[24:0] 123 ampdu_delim_ok_count_13_7 : 7; //[31:25] 124 uint32_t mpdu_err_byte_count : 25, //[24:0] 125 ampdu_delim_ok_count_20_14 : 7; //[31:25] 126 uint32_t non_consecutive_delimiter_err : 16, //[15:0] 127 reserved_20a : 16; //[31:16] 128 uint32_t ht_control_null_field : 32; //[31:0] 129 uint32_t sw_response_reference_ptr_ext : 32; //[31:0] 130 }; 131 132 /* 133 134 struct rx_rxpcu_classification_overview rxpcu_classification_details 135 136 Details related to what RXPCU classification types of 137 MPDUs have been received 138 139 sta_full_aid 140 141 Consumer: FW 142 143 Producer: RXPCU 144 145 146 147 The full AID of this station. 148 149 150 151 <legal all> 152 153 mcs 154 155 MCS of the received frame 156 157 158 159 For details, refer to MCS_TYPE description 160 161 Note: This is rate in case of 11a/11b 162 163 164 165 <legal all> 166 167 nss 168 169 Number of spatial streams. 170 171 172 173 NOTE: RXPCU derives this from the 'Mimo_ss_bitmap' 174 175 176 177 <enum 0 1_spatial_stream>Single spatial stream 178 179 <enum 1 2_spatial_streams>2 spatial streams 180 181 <enum 2 3_spatial_streams>3 spatial streams 182 183 <enum 3 4_spatial_streams>4 spatial streams 184 185 <enum 4 5_spatial_streams>5 spatial streams 186 187 <enum 5 6_spatial_streams>6 spatial streams 188 189 <enum 6 7_spatial_streams>7 spatial streams 190 191 <enum 7 8_spatial_streams>8 spatial streams 192 193 ofdma_info_valid 194 195 When set, ofdma RU related info in the following fields 196 is valid 197 198 <legal all> 199 200 dl_ofdma_ru_start_index 201 202 Field only valid when Ofdma_info_valid is set 203 204 205 206 RU index number to which User is assigned 207 208 RU numbering is over the entire BW, starting from 0 209 210 <legal 0-73> 211 212 reserved_1a 213 214 <legal 0> 215 216 dl_ofdma_ru_width 217 218 The size of the RU for this user. 219 220 In units of 1 (26 tone) RU 221 222 <legal 1-74> 223 224 reserved_2a 225 226 <legal 0> 227 228 user_receive_quality 229 230 RSSI / EVM for this user ??? 231 232 233 234 Details TBD 235 236 <legal all> 237 238 mpdu_cnt_fcs_err 239 240 The number of MPDUs received from this STA in this PPDU 241 with FCS errors 242 243 <legal all> 244 245 wbm2rxdma_buf_source_used 246 247 Field filled in by RXDMA 248 249 250 251 When set, RXDMA has used the wbm2rxdma_buf ring as 252 source for at least one of the frames in this PPDU. 253 254 fw2rxdma_buf_source_used 255 256 Field filled in by RXDMA 257 258 259 260 When set, RXDMA has used the fw2rxdma_buf ring as source 261 for at least one of the frames in this PPDU. 262 263 sw2rxdma_buf_source_used 264 265 Field filled in by RXDMA 266 267 268 269 When set, RXDMA has used the sw2rxdma_buf ring as source 270 for at least one of the frames in this PPDU. 271 272 reserved_2b 273 274 <legal 0> 275 276 mpdu_cnt_fcs_ok 277 278 The number of MPDUs received from this STA in this PPDU 279 with correct FCS 280 281 <legal all> 282 283 frame_control_info_valid 284 285 When set, the frame_control_info field contains valid 286 information 287 288 <legal all> 289 290 qos_control_info_valid 291 292 When set, the QoS_control_info field contains valid 293 information 294 295 <legal all> 296 297 ht_control_info_valid 298 299 When set, the HT_control_field contains valid 300 information 301 302 <legal all> 303 304 data_sequence_control_info_valid 305 306 When set, the First_data_seq_ctrl field contains valid 307 information 308 309 <legal all> 310 311 ht_control_info_null_valid 312 313 When set, the HT_control_NULL_field contains valid 314 information 315 316 <legal all> 317 318 reserved_3a 319 320 <legal 0> 321 322 rxdma2reo_ring_used 323 324 Field filled in by RXDMA 325 326 327 328 Set when at least one frame during this PPDU got pushed 329 to this ring by RXDMA 330 331 rxdma2fw_ring_used 332 333 Field filled in by RXDMA 334 335 336 337 Set when at least one frame during this PPDU got pushed 338 to this ring by RXDMA 339 340 rxdma2sw_ring_used 341 342 Field filled in by RXDMA 343 344 345 346 Set when at least one frame during this PPDU got pushed 347 to this ring by RXDMA 348 349 rxdma_release_ring_used 350 351 Field filled in by RXDMA 352 353 354 355 Set when at least one frame during this PPDU got pushed 356 to this ring by RXDMA 357 358 ht_control_field_pkt_type 359 360 Field only valid when HT_control_info_valid or 361 HT_control_info_NULL_valid is set. 362 363 364 365 Indicates what the PHY receive type was for receiving 366 this frame. Can help determine if the HT_CONTROL field shall 367 be interpreted as HT/VHT or HE. 368 369 370 371 NOTE: later on in the 11ax IEEE spec a bit within the HT 372 control field was introduced that explicitly indicated how 373 to interpret the HT control field.... As HT, VHT, or HE. 374 375 376 377 <enum 0 dot11a>802.11a PPDU type 378 379 <enum 1 dot11b>802.11b PPDU type 380 381 <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type 382 383 <enum 3 dot11ac>802.11ac PPDU type 384 385 <enum 4 dot11ax>802.11ax PPDU type 386 387 reserved_3b 388 389 <legal 0> 390 391 ast_index 392 393 This field indicates the index of the AST entry 394 corresponding to this MPDU. It is provided by the GSE module 395 instantiated in RXPCU. 396 397 A value of 0xFFFF indicates an invalid AST index, 398 meaning that No AST entry was found or NO AST search was 399 performed 400 401 <legal all> 402 403 frame_control_field 404 405 Field only valid when Frame_control_info_valid is set. 406 407 408 409 Last successfully received Frame_control field of data 410 frame (excluding Data NULL/ QoS Null) for this user 411 412 Mainly used to track the PM state of the transmitted 413 device 414 415 416 417 NOTE: only data frame info is needed, as control and 418 management frames are already routed to the FW. 419 420 <legal all> 421 422 first_data_seq_ctrl 423 424 Field only valid when Data_sequence_control_info_valid 425 is set. 426 427 428 429 Sequence control field of the first data frame 430 (excluding Data NULL or QoS Data null) received for this 431 user with correct FCS 432 433 434 435 NOTE: only data frame info is needed, as control and 436 management frames are already routed to the FW. 437 438 <legal all> 439 440 qos_control_field 441 442 Field only valid when QoS_control_info_valid is set. 443 444 445 446 Last successfully received QoS_control field of data 447 frame (excluding Data NULL/ QoS Null) for this user 448 449 450 451 Note that in case of multi TID, this field can only 452 reflect the last properly received MPDU, and thus can not 453 indicate all potentially different TIDs that had been 454 received earlier. 455 456 457 458 There are however per TID fields, that will contain 459 among other things all buffer status info: See 460 461 QoSCtrl_15_8_tid??? 462 463 <legal all> 464 465 ht_control_field 466 467 Field only valid when HT_control_info_valid is set. 468 469 470 471 Last successfully received 472 HT_CONTROL/VHT_CONTROL/HE_CONTROL field of data frames, 473 excluding QoS Null frames for this user. 474 475 476 477 NOTE: HT control fields from QoS Null frames are 478 captured in field HT_control_NULL_field 479 480 <legal all> 481 482 fcs_ok_bitmap_31_0 483 484 Bitmap indicates in order of received MPDUs, which MPDUs 485 had an passing FCS or had an error. 486 487 1: FCS OK 488 489 0: FCS error 490 491 <legal all> 492 493 fcs_ok_bitmap_63_32 494 495 Bitmap indicates in order of received MPDUs, which MPDUs 496 had an passing FCS or had an error. 497 498 1: FCS OK 499 500 0: FCS error 501 502 503 504 NOTE: for users 0, 1, 2 and 3, additional bitmap info 505 (up to 256 bitmap window) is provided in 506 RX_PPDU_END_USER_STATS_EXT TLV 507 508 <legal all> 509 510 udp_msdu_count 511 512 Field filled in by RX OLE 513 514 Set to 0 by RXPCU 515 516 517 518 The number of MSDUs that are part of MPDUs without FCS 519 error, that contain UDP frames. 520 521 <legal all> 522 523 tcp_msdu_count 524 525 Field filled in by RX OLE 526 527 Set to 0 by RXPCU 528 529 530 531 The number of MSDUs that are part of MPDUs without FCS 532 error, that contain TCP frames. 533 534 535 536 (Note: This does NOT include TCP-ACK) 537 538 <legal all> 539 540 other_msdu_count 541 542 Field filled in by RX OLE 543 544 Set to 0 by RXPCU 545 546 547 548 The number of MSDUs that are part of MPDUs without FCS 549 error, that contain neither UDP or TCP frames. 550 551 552 553 Includes Management and control frames. 554 555 556 557 <legal all> 558 559 tcp_ack_msdu_count 560 561 Field filled in by RX OLE 562 563 Set to 0 by RXPCU 564 565 566 567 The number of MSDUs that are part of MPDUs without FCS 568 error, that contain TCP ack frames. 569 570 <legal all> 571 572 sw_response_reference_ptr 573 574 Pointer that SW uses to refer back to an expected 575 response reception. Used for Rate adaptation purposes. 576 577 When a reception occurrs that is not tied to an expected 578 response, this field is set to 0x0 579 580 581 582 Note: further on in this TLV there is also the field: 583 Sw_response_reference_ptr 584 585 <legal all> 586 587 received_qos_data_tid_bitmap 588 589 Whenever a frame is received that contains a QoS control 590 field (that includes QoS Data and/or QoS Null), the bit in 591 this field that corresponds to the received TID shall be 592 set. 593 594 ...Bitmap[0] = TID0 595 596 ...Bitmap[1] = TID1 597 598 Etc. 599 600 <legal all> 601 602 received_qos_data_tid_eosp_bitmap 603 604 Field initialized to 0 605 606 For every QoS Data frame that is correctly received, the 607 EOSP bit of that frame is copied over into the corresponding 608 TID related field. 609 610 Note that this implies that the bits here represent the 611 EOSP bit status for each TID of the last MPDU received for 612 that TID. 613 614 615 616 received TID shall be set. 617 618 ...eosp_bitmap[0] = eosp of TID0 619 620 ...eosp_bitmap[1] = eosp of TID1 621 622 Etc. 623 624 <legal all> 625 626 qosctrl_15_8_tid0 627 628 Field only valid when Received_qos_data_tid_bitmap[0] is 629 set 630 631 632 633 QoS control field bits 15-8 of the last properly 634 received MPDU with a QoS control field embedded, with TID 635 == 0 636 637 qosctrl_15_8_tid1 638 639 Field only valid when Received_qos_data_tid_bitmap[1] is 640 set 641 642 643 644 QoS control field bits 15-8 of the last properly 645 received MPDU with a QoS control field embedded, with TID 646 == 1 647 648 qosctrl_15_8_tid2 649 650 Field only valid when Received_qos_data_tid_bitmap[2] is 651 set 652 653 654 655 QoS control field bits 15-8 of the last properly 656 received MPDU with a QoS control field embedded, with TID 657 == 2 658 659 qosctrl_15_8_tid3 660 661 Field only valid when Received_qos_data_tid_bitmap[3] is 662 set 663 664 665 666 QoS control field bits 15-8 of the last properly 667 received MPDU with a QoS control field embedded, with TID 668 == 3 669 670 qosctrl_15_8_tid4 671 672 Field only valid when Received_qos_data_tid_bitmap[4] is 673 set 674 675 676 677 QoS control field bits 15-8 of the last properly 678 received MPDU with a QoS control field embedded, with TID 679 == 4 680 681 qosctrl_15_8_tid5 682 683 Field only valid when Received_qos_data_tid_bitmap[5] is 684 set 685 686 687 688 QoS control field bits 15-8 of the last properly 689 received MPDU with a QoS control field embedded, with TID 690 == 5 691 692 qosctrl_15_8_tid6 693 694 Field only valid when Received_qos_data_tid_bitmap[6] is 695 set 696 697 698 699 QoS control field bits 15-8 of the last properly 700 received MPDU with a QoS control field embedded, with TID 701 == 6 702 703 qosctrl_15_8_tid7 704 705 Field only valid when Received_qos_data_tid_bitmap[7] is 706 set 707 708 709 710 QoS control field bits 15-8 of the last properly 711 received MPDU with a QoS control field embedded, with TID 712 == 7 713 714 qosctrl_15_8_tid8 715 716 Field only valid when Received_qos_data_tid_bitmap[8] is 717 set 718 719 720 721 QoS control field bits 15-8 of the last properly 722 received MPDU with a QoS control field embedded, with TID 723 == 8 724 725 qosctrl_15_8_tid9 726 727 Field only valid when Received_qos_data_tid_bitmap[9] is 728 set 729 730 731 732 QoS control field bits 15-8 of the last properly 733 received MPDU with a QoS control field embedded, with TID 734 == 9 735 736 qosctrl_15_8_tid10 737 738 Field only valid when Received_qos_data_tid_bitmap[10] 739 is set 740 741 742 743 QoS control field bits 15-8 of the last properly 744 received MPDU with a QoS control field embedded, with TID 745 == 10 746 747 qosctrl_15_8_tid11 748 749 Field only valid when Received_qos_data_tid_bitmap[11] 750 is set 751 752 753 754 QoS control field bits 15-8 of the last properly 755 received MPDU with a QoS control field embedded, with TID 756 == 11 757 758 qosctrl_15_8_tid12 759 760 Field only valid when Received_qos_data_tid_bitmap[12] 761 is set 762 763 764 765 QoS control field bits 15-8 of the last properly 766 received MPDU with a QoS control field embedded, with TID 767 == 12 768 769 qosctrl_15_8_tid13 770 771 Field only valid when Received_qos_data_tid_bitmap[13] 772 is set 773 774 775 776 QoS control field bits 15-8 of the last properly 777 received MPDU with a QoS control field embedded, with TID 778 == 13 779 780 qosctrl_15_8_tid14 781 782 Field only valid when Received_qos_data_tid_bitmap[14] 783 is set 784 785 786 787 QoS control field bits 15-8 of the last properly 788 received MPDU with a QoS control field embedded, with TID 789 == 14 790 791 qosctrl_15_8_tid15 792 793 Field only valid when Received_qos_data_tid_bitmap[15] 794 is set 795 796 797 798 QoS control field bits 15-8 of the last properly 799 received MPDU with a QoS control field embedded, with TID 800 == 15 801 802 mpdu_ok_byte_count 803 804 The number of bytes received within an MPDU for this 805 user with correct FCS. This includes the FCS field 806 807 808 809 NOTE: 810 811 The sum of the four fields..... 812 813 Mpdu_ok_byte_count + 814 815 mpdu_err_byte_count + 816 817 818 .....is the total number of bytes that were received for 819 this user from the PHY. 820 821 822 823 <legal all> 824 825 ampdu_delim_ok_count_6_0 826 827 Number of AMPDU delimiter received with correct 828 structure 829 830 LSB 7 bits from this counter 831 832 833 834 Note that this is a delimiter count and not byte count. 835 To get to the number of bytes occupied by these delimiters, 836 multiply this number by 4 837 838 839 840 <legal all> 841 842 ampdu_delim_err_count 843 844 The number of MPDU delimiter errors counted for this 845 user. 846 847 848 849 Note that this is a delimiter count and not byte count. 850 To get to the number of bytes occupied by these delimiters, 851 multiply this number by 4 852 853 <legal all> 854 855 ampdu_delim_ok_count_13_7 856 857 Number of AMPDU delimiters received with correct 858 structure 859 860 Bits 13-7 from this counter 861 862 863 864 Note that this is a delimiter count and not byte count. 865 To get to the number of bytes occupied by these delimiters, 866 multiply this number by 4 867 868 <legal all> 869 870 mpdu_err_byte_count 871 872 The number of bytes belonging to MPDUs with an FCS 873 error. This includes the FCS field. 874 875 876 877 <legal all> 878 879 ampdu_delim_ok_count_20_14 880 881 Number of AMPDU delimiters received with correct 882 structure 883 884 Bits 20-14 from this counter 885 886 887 888 Note that this is a delimiter count and not byte count. 889 To get to the number of bytes occupied by these delimiters, 890 multiply this number by 4 891 892 893 894 <legal all> 895 896 non_consecutive_delimiter_err 897 898 The number of times an MPDU delimiter error is detected 899 that is not immediately preceded by another MPDU delimiter 900 also with FCS error. 901 902 903 904 The counter saturates at 0xFFFF 905 906 907 908 <legal all> 909 910 reserved_20a 911 912 <legal 0> 913 914 ht_control_null_field 915 916 917 918 919 Last successfully received 920 HT_CONTROL/VHT_CONTROL/HE_CONTROL field from QoS Null frame 921 for this user. 922 923 <legal all> 924 925 sw_response_reference_ptr_ext 926 927 Extended Pointer that SW uses to refer back to an 928 expected response reception. Used for Rate adaptation 929 purposes. 930 931 When a reception occurrs that is not tied to an expected 932 response, this field is set to 0x0 933 934 935 936 Note: earlier on in this TLV there is also the field: 937 Sw_response_reference_ptr 938 939 <legal all> 940 */ 941 942 943 /* EXTERNAL REFERENCE : struct rx_rxpcu_classification_overview rxpcu_classification_details */ 944 945 946 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS 947 948 When set, at least one Filter Pass MPDU has been 949 received. FCS might or might not have been passing. 950 951 952 953 For MU UL, in TLVs RX_PPDU_END and 954 RX_PPDU_END_STATUS_DONE, this field is the OR of all the 955 users. 956 957 <legal all> 958 */ 959 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_OFFSET 0x00000000 960 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_LSB 0 961 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MASK 0x00000001 962 963 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK 964 965 When set, at least one Filter Pass MPDU has been 966 received that has a correct FCS. 967 968 969 970 For MU UL, in TLVs RX_PPDU_END and 971 RX_PPDU_END_STATUS_DONE, this field is the OR of all the 972 users. 973 974 975 976 <legal all> 977 */ 978 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x00000000 979 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_LSB 1 980 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MASK 0x00000002 981 982 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS 983 984 When set, at least one Monitor Direct MPDU has been 985 received. FCS might or might not have been passing 986 987 988 989 For MU UL, in TLVs RX_PPDU_END and 990 RX_PPDU_END_STATUS_DONE, this field is the OR of all the 991 users. 992 993 <legal all> 994 */ 995 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_OFFSET 0x00000000 996 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_LSB 2 997 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MASK 0x00000004 998 999 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK 1000 1001 When set, at least one Monitor Direct MPDU has been 1002 received that has a correct FCS. 1003 1004 1005 1006 For MU UL, in TLVs RX_PPDU_END and 1007 RX_PPDU_END_STATUS_DONE, this field is the OR of all the 1008 users. 1009 1010 1011 1012 <legal all> 1013 */ 1014 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x00000000 1015 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3 1016 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x00000008 1017 1018 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS 1019 1020 When set, at least one Monitor Direct MPDU has been 1021 received. FCS might or might not have been passing. 1022 1023 1024 1025 For MU UL, in TLVs RX_PPDU_END and 1026 RX_PPDU_END_STATUS_DONE, this field is the OR of all the 1027 users. 1028 1029 <legal all> 1030 */ 1031 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_OFFSET 0x00000000 1032 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_LSB 4 1033 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MASK 0x00000010 1034 1035 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK 1036 1037 When set, at least one Monitor Direct MPDU has been 1038 received that has a correct FCS. 1039 1040 1041 1042 For MU UL, in TLVs RX_PPDU_END and 1043 RX_PPDU_END_STATUS_DONE, this field is the OR of all the 1044 users. 1045 1046 <legal all> 1047 */ 1048 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x00000000 1049 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5 1050 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x00000020 1051 1052 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED 1053 1054 When set, PPDU reception was aborted by the PHY 1055 1056 <legal all> 1057 */ 1058 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_OFFSET 0x00000000 1059 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_LSB 6 1060 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MASK 0x00000040 1061 1062 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0 1063 1064 <legal 0> 1065 */ 1066 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_OFFSET 0x00000000 1067 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_LSB 7 1068 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MASK 0x0000ff80 1069 1070 /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID 1071 1072 A ppdu counter value that PHY increments for every PPDU 1073 received. The counter value wraps around 1074 1075 <legal all> 1076 */ 1077 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_OFFSET 0x00000000 1078 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_LSB 16 1079 #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MASK 0xffff0000 1080 1081 /* Description RX_PPDU_END_USER_STATS_1_STA_FULL_AID 1082 1083 Consumer: FW 1084 1085 Producer: RXPCU 1086 1087 1088 1089 The full AID of this station. 1090 1091 1092 1093 <legal all> 1094 */ 1095 #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_OFFSET 0x00000004 1096 #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_LSB 0 1097 #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_MASK 0x00001fff 1098 1099 /* Description RX_PPDU_END_USER_STATS_1_MCS 1100 1101 MCS of the received frame 1102 1103 1104 1105 For details, refer to MCS_TYPE description 1106 1107 Note: This is rate in case of 11a/11b 1108 1109 1110 1111 <legal all> 1112 */ 1113 #define RX_PPDU_END_USER_STATS_1_MCS_OFFSET 0x00000004 1114 #define RX_PPDU_END_USER_STATS_1_MCS_LSB 13 1115 #define RX_PPDU_END_USER_STATS_1_MCS_MASK 0x0001e000 1116 1117 /* Description RX_PPDU_END_USER_STATS_1_NSS 1118 1119 Number of spatial streams. 1120 1121 1122 1123 NOTE: RXPCU derives this from the 'Mimo_ss_bitmap' 1124 1125 1126 1127 <enum 0 1_spatial_stream>Single spatial stream 1128 1129 <enum 1 2_spatial_streams>2 spatial streams 1130 1131 <enum 2 3_spatial_streams>3 spatial streams 1132 1133 <enum 3 4_spatial_streams>4 spatial streams 1134 1135 <enum 4 5_spatial_streams>5 spatial streams 1136 1137 <enum 5 6_spatial_streams>6 spatial streams 1138 1139 <enum 6 7_spatial_streams>7 spatial streams 1140 1141 <enum 7 8_spatial_streams>8 spatial streams 1142 */ 1143 #define RX_PPDU_END_USER_STATS_1_NSS_OFFSET 0x00000004 1144 #define RX_PPDU_END_USER_STATS_1_NSS_LSB 17 1145 #define RX_PPDU_END_USER_STATS_1_NSS_MASK 0x000e0000 1146 1147 /* Description RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID 1148 1149 When set, ofdma RU related info in the following fields 1150 is valid 1151 1152 <legal all> 1153 */ 1154 #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_OFFSET 0x00000004 1155 #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_LSB 20 1156 #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_MASK 0x00100000 1157 1158 /* Description RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX 1159 1160 Field only valid when Ofdma_info_valid is set 1161 1162 1163 1164 RU index number to which User is assigned 1165 1166 RU numbering is over the entire BW, starting from 0 1167 1168 <legal 0-73> 1169 */ 1170 #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_OFFSET 0x00000004 1171 #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_LSB 21 1172 #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_MASK 0x0fe00000 1173 1174 /* Description RX_PPDU_END_USER_STATS_1_RESERVED_1A 1175 1176 <legal 0> 1177 */ 1178 #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_OFFSET 0x00000004 1179 #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_LSB 28 1180 #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_MASK 0xf0000000 1181 1182 /* Description RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH 1183 1184 The size of the RU for this user. 1185 1186 In units of 1 (26 tone) RU 1187 1188 <legal 1-74> 1189 */ 1190 #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_OFFSET 0x00000008 1191 #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_LSB 0 1192 #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_MASK 0x0000007f 1193 1194 /* Description RX_PPDU_END_USER_STATS_2_RESERVED_2A 1195 1196 <legal 0> 1197 */ 1198 #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_OFFSET 0x00000008 1199 #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_LSB 7 1200 #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_MASK 0x00000080 1201 1202 /* Description RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY 1203 1204 RSSI / EVM for this user ??? 1205 1206 1207 1208 Details TBD 1209 1210 <legal all> 1211 */ 1212 #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_OFFSET 0x00000008 1213 #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_LSB 8 1214 #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_MASK 0x0000ff00 1215 1216 /* Description RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR 1217 1218 The number of MPDUs received from this STA in this PPDU 1219 with FCS errors 1220 1221 <legal all> 1222 */ 1223 #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_OFFSET 0x00000008 1224 #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_LSB 16 1225 #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_MASK 0x03ff0000 1226 1227 /* Description RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED 1228 1229 Field filled in by RXDMA 1230 1231 1232 1233 When set, RXDMA has used the wbm2rxdma_buf ring as 1234 source for at least one of the frames in this PPDU. 1235 */ 1236 #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008 1237 #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_LSB 26 1238 #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_MASK 0x04000000 1239 1240 /* Description RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED 1241 1242 Field filled in by RXDMA 1243 1244 1245 1246 When set, RXDMA has used the fw2rxdma_buf ring as source 1247 for at least one of the frames in this PPDU. 1248 */ 1249 #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008 1250 #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_LSB 27 1251 #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_MASK 0x08000000 1252 1253 /* Description RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED 1254 1255 Field filled in by RXDMA 1256 1257 1258 1259 When set, RXDMA has used the sw2rxdma_buf ring as source 1260 for at least one of the frames in this PPDU. 1261 */ 1262 #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008 1263 #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_LSB 28 1264 #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_MASK 0x10000000 1265 1266 /* Description RX_PPDU_END_USER_STATS_2_RESERVED_2B 1267 1268 <legal 0> 1269 */ 1270 #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_OFFSET 0x00000008 1271 #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_LSB 29 1272 #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_MASK 0xe0000000 1273 1274 /* Description RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK 1275 1276 The number of MPDUs received from this STA in this PPDU 1277 with correct FCS 1278 1279 <legal all> 1280 */ 1281 #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_OFFSET 0x0000000c 1282 #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_LSB 0 1283 #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_MASK 0x000001ff 1284 1285 /* Description RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID 1286 1287 When set, the frame_control_info field contains valid 1288 information 1289 1290 <legal all> 1291 */ 1292 #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_OFFSET 0x0000000c 1293 #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_LSB 9 1294 #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_MASK 0x00000200 1295 1296 /* Description RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID 1297 1298 When set, the QoS_control_info field contains valid 1299 information 1300 1301 <legal all> 1302 */ 1303 #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_OFFSET 0x0000000c 1304 #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_LSB 10 1305 #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_MASK 0x00000400 1306 1307 /* Description RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID 1308 1309 When set, the HT_control_field contains valid 1310 information 1311 1312 <legal all> 1313 */ 1314 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_OFFSET 0x0000000c 1315 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_LSB 11 1316 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_MASK 0x00000800 1317 1318 /* Description RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID 1319 1320 When set, the First_data_seq_ctrl field contains valid 1321 information 1322 1323 <legal all> 1324 */ 1325 #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_OFFSET 0x0000000c 1326 #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_LSB 12 1327 #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_MASK 0x00001000 1328 1329 /* Description RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID 1330 1331 When set, the HT_control_NULL_field contains valid 1332 information 1333 1334 <legal all> 1335 */ 1336 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_OFFSET 0x0000000c 1337 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_LSB 13 1338 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_MASK 0x00002000 1339 1340 /* Description RX_PPDU_END_USER_STATS_3_RESERVED_3A 1341 1342 <legal 0> 1343 */ 1344 #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_OFFSET 0x0000000c 1345 #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_LSB 14 1346 #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_MASK 0x0000c000 1347 1348 /* Description RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED 1349 1350 Field filled in by RXDMA 1351 1352 1353 1354 Set when at least one frame during this PPDU got pushed 1355 to this ring by RXDMA 1356 */ 1357 #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_OFFSET 0x0000000c 1358 #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_LSB 16 1359 #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_MASK 0x00010000 1360 1361 /* Description RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED 1362 1363 Field filled in by RXDMA 1364 1365 1366 1367 Set when at least one frame during this PPDU got pushed 1368 to this ring by RXDMA 1369 */ 1370 #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_OFFSET 0x0000000c 1371 #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_LSB 17 1372 #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_MASK 0x00020000 1373 1374 /* Description RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED 1375 1376 Field filled in by RXDMA 1377 1378 1379 1380 Set when at least one frame during this PPDU got pushed 1381 to this ring by RXDMA 1382 */ 1383 #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_OFFSET 0x0000000c 1384 #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_LSB 18 1385 #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_MASK 0x00040000 1386 1387 /* Description RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED 1388 1389 Field filled in by RXDMA 1390 1391 1392 1393 Set when at least one frame during this PPDU got pushed 1394 to this ring by RXDMA 1395 */ 1396 #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_OFFSET 0x0000000c 1397 #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_LSB 19 1398 #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_MASK 0x00080000 1399 1400 /* Description RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE 1401 1402 Field only valid when HT_control_info_valid or 1403 HT_control_info_NULL_valid is set. 1404 1405 1406 1407 Indicates what the PHY receive type was for receiving 1408 this frame. Can help determine if the HT_CONTROL field shall 1409 be interpreted as HT/VHT or HE. 1410 1411 1412 1413 NOTE: later on in the 11ax IEEE spec a bit within the HT 1414 control field was introduced that explicitly indicated how 1415 to interpret the HT control field.... As HT, VHT, or HE. 1416 1417 1418 1419 <enum 0 dot11a>802.11a PPDU type 1420 1421 <enum 1 dot11b>802.11b PPDU type 1422 1423 <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type 1424 1425 <enum 3 dot11ac>802.11ac PPDU type 1426 1427 <enum 4 dot11ax>802.11ax PPDU type 1428 */ 1429 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_OFFSET 0x0000000c 1430 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_LSB 20 1431 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_MASK 0x00f00000 1432 1433 /* Description RX_PPDU_END_USER_STATS_3_RESERVED_3B 1434 1435 <legal 0> 1436 */ 1437 #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_OFFSET 0x0000000c 1438 #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_LSB 24 1439 #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_MASK 0xff000000 1440 1441 /* Description RX_PPDU_END_USER_STATS_4_AST_INDEX 1442 1443 This field indicates the index of the AST entry 1444 corresponding to this MPDU. It is provided by the GSE module 1445 instantiated in RXPCU. 1446 1447 A value of 0xFFFF indicates an invalid AST index, 1448 meaning that No AST entry was found or NO AST search was 1449 performed 1450 1451 <legal all> 1452 */ 1453 #define RX_PPDU_END_USER_STATS_4_AST_INDEX_OFFSET 0x00000010 1454 #define RX_PPDU_END_USER_STATS_4_AST_INDEX_LSB 0 1455 #define RX_PPDU_END_USER_STATS_4_AST_INDEX_MASK 0x0000ffff 1456 1457 /* Description RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD 1458 1459 Field only valid when Frame_control_info_valid is set. 1460 1461 1462 1463 Last successfully received Frame_control field of data 1464 frame (excluding Data NULL/ QoS Null) for this user 1465 1466 Mainly used to track the PM state of the transmitted 1467 device 1468 1469 1470 1471 NOTE: only data frame info is needed, as control and 1472 management frames are already routed to the FW. 1473 1474 <legal all> 1475 */ 1476 #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_OFFSET 0x00000010 1477 #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_LSB 16 1478 #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_MASK 0xffff0000 1479 1480 /* Description RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL 1481 1482 Field only valid when Data_sequence_control_info_valid 1483 is set. 1484 1485 1486 1487 Sequence control field of the first data frame 1488 (excluding Data NULL or QoS Data null) received for this 1489 user with correct FCS 1490 1491 1492 1493 NOTE: only data frame info is needed, as control and 1494 management frames are already routed to the FW. 1495 1496 <legal all> 1497 */ 1498 #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_OFFSET 0x00000014 1499 #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_LSB 0 1500 #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_MASK 0x0000ffff 1501 1502 /* Description RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD 1503 1504 Field only valid when QoS_control_info_valid is set. 1505 1506 1507 1508 Last successfully received QoS_control field of data 1509 frame (excluding Data NULL/ QoS Null) for this user 1510 1511 1512 1513 Note that in case of multi TID, this field can only 1514 reflect the last properly received MPDU, and thus can not 1515 indicate all potentially different TIDs that had been 1516 received earlier. 1517 1518 1519 1520 There are however per TID fields, that will contain 1521 among other things all buffer status info: See 1522 1523 QoSCtrl_15_8_tid??? 1524 1525 <legal all> 1526 */ 1527 #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_OFFSET 0x00000014 1528 #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_LSB 16 1529 #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_MASK 0xffff0000 1530 1531 /* Description RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD 1532 1533 Field only valid when HT_control_info_valid is set. 1534 1535 1536 1537 Last successfully received 1538 HT_CONTROL/VHT_CONTROL/HE_CONTROL field of data frames, 1539 excluding QoS Null frames for this user. 1540 1541 1542 1543 NOTE: HT control fields from QoS Null frames are 1544 captured in field HT_control_NULL_field 1545 1546 <legal all> 1547 */ 1548 #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_OFFSET 0x00000018 1549 #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_LSB 0 1550 #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_MASK 0xffffffff 1551 1552 /* Description RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0 1553 1554 Bitmap indicates in order of received MPDUs, which MPDUs 1555 had an passing FCS or had an error. 1556 1557 1: FCS OK 1558 1559 0: FCS error 1560 1561 <legal all> 1562 */ 1563 #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_OFFSET 0x0000001c 1564 #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_LSB 0 1565 #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_MASK 0xffffffff 1566 1567 /* Description RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32 1568 1569 Bitmap indicates in order of received MPDUs, which MPDUs 1570 had an passing FCS or had an error. 1571 1572 1: FCS OK 1573 1574 0: FCS error 1575 1576 1577 1578 NOTE: for users 0, 1, 2 and 3, additional bitmap info 1579 (up to 256 bitmap window) is provided in 1580 RX_PPDU_END_USER_STATS_EXT TLV 1581 1582 <legal all> 1583 */ 1584 #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_OFFSET 0x00000020 1585 #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_LSB 0 1586 #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_MASK 0xffffffff 1587 1588 /* Description RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT 1589 1590 Field filled in by RX OLE 1591 1592 Set to 0 by RXPCU 1593 1594 1595 1596 The number of MSDUs that are part of MPDUs without FCS 1597 error, that contain UDP frames. 1598 1599 <legal all> 1600 */ 1601 #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_OFFSET 0x00000024 1602 #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_LSB 0 1603 #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_MASK 0x0000ffff 1604 1605 /* Description RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT 1606 1607 Field filled in by RX OLE 1608 1609 Set to 0 by RXPCU 1610 1611 1612 1613 The number of MSDUs that are part of MPDUs without FCS 1614 error, that contain TCP frames. 1615 1616 1617 1618 (Note: This does NOT include TCP-ACK) 1619 1620 <legal all> 1621 */ 1622 #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_OFFSET 0x00000024 1623 #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_LSB 16 1624 #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_MASK 0xffff0000 1625 1626 /* Description RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT 1627 1628 Field filled in by RX OLE 1629 1630 Set to 0 by RXPCU 1631 1632 1633 1634 The number of MSDUs that are part of MPDUs without FCS 1635 error, that contain neither UDP or TCP frames. 1636 1637 1638 1639 Includes Management and control frames. 1640 1641 1642 1643 <legal all> 1644 */ 1645 #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_OFFSET 0x00000028 1646 #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_LSB 0 1647 #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_MASK 0x0000ffff 1648 1649 /* Description RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT 1650 1651 Field filled in by RX OLE 1652 1653 Set to 0 by RXPCU 1654 1655 1656 1657 The number of MSDUs that are part of MPDUs without FCS 1658 error, that contain TCP ack frames. 1659 1660 <legal all> 1661 */ 1662 #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_OFFSET 0x00000028 1663 #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_LSB 16 1664 #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_MASK 0xffff0000 1665 1666 /* Description RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR 1667 1668 Pointer that SW uses to refer back to an expected 1669 response reception. Used for Rate adaptation purposes. 1670 1671 When a reception occurrs that is not tied to an expected 1672 response, this field is set to 0x0 1673 1674 1675 1676 Note: further on in this TLV there is also the field: 1677 Sw_response_reference_ptr 1678 1679 <legal all> 1680 */ 1681 #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_OFFSET 0x0000002c 1682 #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_LSB 0 1683 #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_MASK 0xffffffff 1684 1685 /* Description RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP 1686 1687 Whenever a frame is received that contains a QoS control 1688 field (that includes QoS Data and/or QoS Null), the bit in 1689 this field that corresponds to the received TID shall be 1690 set. 1691 1692 ...Bitmap[0] = TID0 1693 1694 ...Bitmap[1] = TID1 1695 1696 Etc. 1697 1698 <legal all> 1699 */ 1700 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_OFFSET 0x00000030 1701 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_LSB 0 1702 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_MASK 0x0000ffff 1703 1704 /* Description RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP 1705 1706 Field initialized to 0 1707 1708 For every QoS Data frame that is correctly received, the 1709 EOSP bit of that frame is copied over into the corresponding 1710 TID related field. 1711 1712 Note that this implies that the bits here represent the 1713 EOSP bit status for each TID of the last MPDU received for 1714 that TID. 1715 1716 1717 1718 received TID shall be set. 1719 1720 ...eosp_bitmap[0] = eosp of TID0 1721 1722 ...eosp_bitmap[1] = eosp of TID1 1723 1724 Etc. 1725 1726 <legal all> 1727 */ 1728 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_OFFSET 0x00000030 1729 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_LSB 16 1730 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MASK 0xffff0000 1731 1732 /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0 1733 1734 Field only valid when Received_qos_data_tid_bitmap[0] is 1735 set 1736 1737 1738 1739 QoS control field bits 15-8 of the last properly 1740 received MPDU with a QoS control field embedded, with TID 1741 == 0 1742 */ 1743 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_OFFSET 0x00000034 1744 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_LSB 0 1745 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_MASK 0x000000ff 1746 1747 /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1 1748 1749 Field only valid when Received_qos_data_tid_bitmap[1] is 1750 set 1751 1752 1753 1754 QoS control field bits 15-8 of the last properly 1755 received MPDU with a QoS control field embedded, with TID 1756 == 1 1757 */ 1758 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_OFFSET 0x00000034 1759 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_LSB 8 1760 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_MASK 0x0000ff00 1761 1762 /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2 1763 1764 Field only valid when Received_qos_data_tid_bitmap[2] is 1765 set 1766 1767 1768 1769 QoS control field bits 15-8 of the last properly 1770 received MPDU with a QoS control field embedded, with TID 1771 == 2 1772 */ 1773 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_OFFSET 0x00000034 1774 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_LSB 16 1775 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_MASK 0x00ff0000 1776 1777 /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3 1778 1779 Field only valid when Received_qos_data_tid_bitmap[3] is 1780 set 1781 1782 1783 1784 QoS control field bits 15-8 of the last properly 1785 received MPDU with a QoS control field embedded, with TID 1786 == 3 1787 */ 1788 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_OFFSET 0x00000034 1789 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_LSB 24 1790 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_MASK 0xff000000 1791 1792 /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4 1793 1794 Field only valid when Received_qos_data_tid_bitmap[4] is 1795 set 1796 1797 1798 1799 QoS control field bits 15-8 of the last properly 1800 received MPDU with a QoS control field embedded, with TID 1801 == 4 1802 */ 1803 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_OFFSET 0x00000038 1804 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_LSB 0 1805 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_MASK 0x000000ff 1806 1807 /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5 1808 1809 Field only valid when Received_qos_data_tid_bitmap[5] is 1810 set 1811 1812 1813 1814 QoS control field bits 15-8 of the last properly 1815 received MPDU with a QoS control field embedded, with TID 1816 == 5 1817 */ 1818 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_OFFSET 0x00000038 1819 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_LSB 8 1820 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_MASK 0x0000ff00 1821 1822 /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6 1823 1824 Field only valid when Received_qos_data_tid_bitmap[6] is 1825 set 1826 1827 1828 1829 QoS control field bits 15-8 of the last properly 1830 received MPDU with a QoS control field embedded, with TID 1831 == 6 1832 */ 1833 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_OFFSET 0x00000038 1834 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_LSB 16 1835 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_MASK 0x00ff0000 1836 1837 /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7 1838 1839 Field only valid when Received_qos_data_tid_bitmap[7] is 1840 set 1841 1842 1843 1844 QoS control field bits 15-8 of the last properly 1845 received MPDU with a QoS control field embedded, with TID 1846 == 7 1847 */ 1848 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_OFFSET 0x00000038 1849 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_LSB 24 1850 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_MASK 0xff000000 1851 1852 /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8 1853 1854 Field only valid when Received_qos_data_tid_bitmap[8] is 1855 set 1856 1857 1858 1859 QoS control field bits 15-8 of the last properly 1860 received MPDU with a QoS control field embedded, with TID 1861 == 8 1862 */ 1863 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_OFFSET 0x0000003c 1864 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_LSB 0 1865 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_MASK 0x000000ff 1866 1867 /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9 1868 1869 Field only valid when Received_qos_data_tid_bitmap[9] is 1870 set 1871 1872 1873 1874 QoS control field bits 15-8 of the last properly 1875 received MPDU with a QoS control field embedded, with TID 1876 == 9 1877 */ 1878 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_OFFSET 0x0000003c 1879 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_LSB 8 1880 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_MASK 0x0000ff00 1881 1882 /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10 1883 1884 Field only valid when Received_qos_data_tid_bitmap[10] 1885 is set 1886 1887 1888 1889 QoS control field bits 15-8 of the last properly 1890 received MPDU with a QoS control field embedded, with TID 1891 == 10 1892 */ 1893 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_OFFSET 0x0000003c 1894 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_LSB 16 1895 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_MASK 0x00ff0000 1896 1897 /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11 1898 1899 Field only valid when Received_qos_data_tid_bitmap[11] 1900 is set 1901 1902 1903 1904 QoS control field bits 15-8 of the last properly 1905 received MPDU with a QoS control field embedded, with TID 1906 == 11 1907 */ 1908 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_OFFSET 0x0000003c 1909 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_LSB 24 1910 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_MASK 0xff000000 1911 1912 /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12 1913 1914 Field only valid when Received_qos_data_tid_bitmap[12] 1915 is set 1916 1917 1918 1919 QoS control field bits 15-8 of the last properly 1920 received MPDU with a QoS control field embedded, with TID 1921 == 12 1922 */ 1923 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_OFFSET 0x00000040 1924 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_LSB 0 1925 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_MASK 0x000000ff 1926 1927 /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13 1928 1929 Field only valid when Received_qos_data_tid_bitmap[13] 1930 is set 1931 1932 1933 1934 QoS control field bits 15-8 of the last properly 1935 received MPDU with a QoS control field embedded, with TID 1936 == 13 1937 */ 1938 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_OFFSET 0x00000040 1939 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_LSB 8 1940 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_MASK 0x0000ff00 1941 1942 /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14 1943 1944 Field only valid when Received_qos_data_tid_bitmap[14] 1945 is set 1946 1947 1948 1949 QoS control field bits 15-8 of the last properly 1950 received MPDU with a QoS control field embedded, with TID 1951 == 14 1952 */ 1953 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_OFFSET 0x00000040 1954 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_LSB 16 1955 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_MASK 0x00ff0000 1956 1957 /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15 1958 1959 Field only valid when Received_qos_data_tid_bitmap[15] 1960 is set 1961 1962 1963 1964 QoS control field bits 15-8 of the last properly 1965 received MPDU with a QoS control field embedded, with TID 1966 == 15 1967 */ 1968 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_OFFSET 0x00000040 1969 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_LSB 24 1970 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_MASK 0xff000000 1971 1972 /* Description RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT 1973 1974 The number of bytes received within an MPDU for this 1975 user with correct FCS. This includes the FCS field 1976 1977 1978 1979 NOTE: 1980 1981 The sum of the four fields..... 1982 1983 Mpdu_ok_byte_count + 1984 1985 mpdu_err_byte_count + 1986 1987 1988 .....is the total number of bytes that were received for 1989 this user from the PHY. 1990 1991 1992 1993 <legal all> 1994 */ 1995 #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_OFFSET 0x00000044 1996 #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_LSB 0 1997 #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_MASK 0x01ffffff 1998 1999 /* Description RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0 2000 2001 Number of AMPDU delimiter received with correct 2002 structure 2003 2004 LSB 7 bits from this counter 2005 2006 2007 2008 Note that this is a delimiter count and not byte count. 2009 To get to the number of bytes occupied by these delimiters, 2010 multiply this number by 4 2011 2012 2013 2014 <legal all> 2015 */ 2016 #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_OFFSET 0x00000044 2017 #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_LSB 25 2018 #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_MASK 0xfe000000 2019 2020 /* Description RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT 2021 2022 The number of MPDU delimiter errors counted for this 2023 user. 2024 2025 2026 2027 Note that this is a delimiter count and not byte count. 2028 To get to the number of bytes occupied by these delimiters, 2029 multiply this number by 4 2030 2031 <legal all> 2032 */ 2033 #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_OFFSET 0x00000048 2034 #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_LSB 0 2035 #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_MASK 0x01ffffff 2036 2037 /* Description RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7 2038 2039 Number of AMPDU delimiters received with correct 2040 structure 2041 2042 Bits 13-7 from this counter 2043 2044 2045 2046 Note that this is a delimiter count and not byte count. 2047 To get to the number of bytes occupied by these delimiters, 2048 multiply this number by 4 2049 2050 <legal all> 2051 */ 2052 #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_OFFSET 0x00000048 2053 #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_LSB 25 2054 #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_MASK 0xfe000000 2055 2056 /* Description RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT 2057 2058 The number of bytes belonging to MPDUs with an FCS 2059 error. This includes the FCS field. 2060 2061 2062 2063 <legal all> 2064 */ 2065 #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_OFFSET 0x0000004c 2066 #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_LSB 0 2067 #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_MASK 0x01ffffff 2068 2069 /* Description RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14 2070 2071 Number of AMPDU delimiters received with correct 2072 structure 2073 2074 Bits 20-14 from this counter 2075 2076 2077 2078 Note that this is a delimiter count and not byte count. 2079 To get to the number of bytes occupied by these delimiters, 2080 multiply this number by 4 2081 2082 2083 2084 <legal all> 2085 */ 2086 #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_OFFSET 0x0000004c 2087 #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_LSB 25 2088 #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_MASK 0xfe000000 2089 2090 /* Description RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR 2091 2092 The number of times an MPDU delimiter error is detected 2093 that is not immediately preceded by another MPDU delimiter 2094 also with FCS error. 2095 2096 2097 2098 The counter saturates at 0xFFFF 2099 2100 2101 2102 <legal all> 2103 */ 2104 #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_OFFSET 0x00000050 2105 #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_LSB 0 2106 #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_MASK 0x0000ffff 2107 2108 /* Description RX_PPDU_END_USER_STATS_20_RESERVED_20A 2109 2110 <legal 0> 2111 */ 2112 #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_OFFSET 0x00000050 2113 #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_LSB 16 2114 #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_MASK 0xffff0000 2115 2116 /* Description RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD 2117 2118 2119 2120 2121 Last successfully received 2122 HT_CONTROL/VHT_CONTROL/HE_CONTROL field from QoS Null frame 2123 for this user. 2124 2125 <legal all> 2126 */ 2127 #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_OFFSET 0x00000054 2128 #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_LSB 0 2129 #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_MASK 0xffffffff 2130 2131 /* Description RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT 2132 2133 Extended Pointer that SW uses to refer back to an 2134 expected response reception. Used for Rate adaptation 2135 purposes. 2136 2137 When a reception occurrs that is not tied to an expected 2138 response, this field is set to 0x0 2139 2140 2141 2142 Note: earlier on in this TLV there is also the field: 2143 Sw_response_reference_ptr 2144 2145 <legal all> 2146 */ 2147 #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_OFFSET 0x00000058 2148 #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_LSB 0 2149 #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_MASK 0xffffffff 2150 2151 2152 #endif // _RX_PPDU_END_USER_STATS_H_ 2153