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