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 _REO_GET_QUEUE_STATS_STATUS_H_ 18 #define _REO_GET_QUEUE_STATS_STATUS_H_ 19 #if !defined(__ASSEMBLER__) 20 #endif 21 22 #include "uniform_reo_status_header.h" 23 24 // ################ START SUMMARY ################# 25 // 26 // Dword Fields 27 // 0-1 struct uniform_reo_status_header status_header; 28 // 2 ssn[11:0], current_index[19:12], reserved_2[31:20] 29 // 3 pn_31_0[31:0] 30 // 4 pn_63_32[31:0] 31 // 5 pn_95_64[31:0] 32 // 6 pn_127_96[31:0] 33 // 7 last_rx_enqueue_timestamp[31:0] 34 // 8 last_rx_dequeue_timestamp[31:0] 35 // 9 rx_bitmap_31_0[31:0] 36 // 10 rx_bitmap_63_32[31:0] 37 // 11 rx_bitmap_95_64[31:0] 38 // 12 rx_bitmap_127_96[31:0] 39 // 13 rx_bitmap_159_128[31:0] 40 // 14 rx_bitmap_191_160[31:0] 41 // 15 rx_bitmap_223_192[31:0] 42 // 16 rx_bitmap_255_224[31:0] 43 // 17 current_mpdu_count[6:0], current_msdu_count[31:7] 44 // 18 reserved_18[3:0], timeout_count[9:4], forward_due_to_bar_count[15:10], duplicate_count[31:16] 45 // 19 frames_in_order_count[23:0], bar_received_count[31:24] 46 // 20 mpdu_frames_processed_count[31:0] 47 // 21 msdu_frames_processed_count[31:0] 48 // 22 total_processed_byte_count[31:0] 49 // 23 late_receive_mpdu_count[11:0], window_jump_2k[15:12], hole_count[31:16] 50 // 24 reserved_24a[27:0], looping_count[31:28] 51 // 52 // ################ END SUMMARY ################# 53 54 #define NUM_OF_DWORDS_REO_GET_QUEUE_STATS_STATUS 25 55 56 struct reo_get_queue_stats_status { 57 struct uniform_reo_status_header status_header; 58 uint32_t ssn : 12, //[11:0] 59 current_index : 8, //[19:12] 60 reserved_2 : 12; //[31:20] 61 uint32_t pn_31_0 : 32; //[31:0] 62 uint32_t pn_63_32 : 32; //[31:0] 63 uint32_t pn_95_64 : 32; //[31:0] 64 uint32_t pn_127_96 : 32; //[31:0] 65 uint32_t last_rx_enqueue_timestamp : 32; //[31:0] 66 uint32_t last_rx_dequeue_timestamp : 32; //[31:0] 67 uint32_t rx_bitmap_31_0 : 32; //[31:0] 68 uint32_t rx_bitmap_63_32 : 32; //[31:0] 69 uint32_t rx_bitmap_95_64 : 32; //[31:0] 70 uint32_t rx_bitmap_127_96 : 32; //[31:0] 71 uint32_t rx_bitmap_159_128 : 32; //[31:0] 72 uint32_t rx_bitmap_191_160 : 32; //[31:0] 73 uint32_t rx_bitmap_223_192 : 32; //[31:0] 74 uint32_t rx_bitmap_255_224 : 32; //[31:0] 75 uint32_t current_mpdu_count : 7, //[6:0] 76 current_msdu_count : 25; //[31:7] 77 uint32_t reserved_18 : 4, //[3:0] 78 timeout_count : 6, //[9:4] 79 forward_due_to_bar_count : 6, //[15:10] 80 duplicate_count : 16; //[31:16] 81 uint32_t frames_in_order_count : 24, //[23:0] 82 bar_received_count : 8; //[31:24] 83 uint32_t mpdu_frames_processed_count : 32; //[31:0] 84 uint32_t msdu_frames_processed_count : 32; //[31:0] 85 uint32_t total_processed_byte_count : 32; //[31:0] 86 uint32_t late_receive_mpdu_count : 12, //[11:0] 87 window_jump_2k : 4, //[15:12] 88 hole_count : 16; //[31:16] 89 uint32_t reserved_24a : 28, //[27:0] 90 looping_count : 4; //[31:28] 91 }; 92 93 /* 94 95 struct uniform_reo_status_header status_header 96 97 Consumer: SW 98 99 Producer: REO 100 101 102 103 Details that can link this status with the original 104 command. It also contains info on how long REO took to 105 execute this command. 106 107 ssn 108 109 Starting Sequence number of the session, this changes 110 whenever window moves. (can be filled by SW then maintained 111 by REO) 112 113 <legal all> 114 115 current_index 116 117 Points to last forwarded packet 118 119 <legal all> 120 121 reserved_2 122 123 <legal 0> 124 125 pn_31_0 126 127 128 <legal all> 129 130 pn_63_32 131 132 Bits [63:32] of the PN number. 133 134 <legal all> 135 136 pn_95_64 137 138 Bits [95:64] of the PN number. 139 140 <legal all> 141 142 pn_127_96 143 144 Bits [127:96] of the PN number. 145 146 <legal all> 147 148 last_rx_enqueue_timestamp 149 150 Timestamp of arrival of the last MPDU for this queue 151 152 <legal all> 153 154 last_rx_dequeue_timestamp 155 156 Timestamp of forwarding an MPDU 157 158 159 160 If the queue is empty when a frame gets received, this 161 time shall be initialized to the 'enqueue' timestamp 162 163 164 165 Used for aging 166 167 <legal all> 168 169 rx_bitmap_31_0 170 171 When a bit is set, the corresponding frame is currently 172 held in the re-order queue. 173 174 The bitmap is Fully managed by HW. 175 176 SW shall init this to 0, and then never ever change it 177 178 <legal all> 179 180 rx_bitmap_63_32 181 182 See Rx_bitmap_31_0 description 183 184 <legal all> 185 186 rx_bitmap_95_64 187 188 See Rx_bitmap_31_0 description 189 190 <legal all> 191 192 rx_bitmap_127_96 193 194 See Rx_bitmap_31_0 description 195 196 <legal all> 197 198 rx_bitmap_159_128 199 200 See Rx_bitmap_31_0 description 201 202 <legal all> 203 204 rx_bitmap_191_160 205 206 See Rx_bitmap_31_0 description 207 208 <legal all> 209 210 rx_bitmap_223_192 211 212 See Rx_bitmap_31_0 description 213 214 <legal all> 215 216 rx_bitmap_255_224 217 218 See Rx_bitmap_31_0 description 219 220 <legal all> 221 222 current_mpdu_count 223 224 The number of MPDUs in the queue. 225 226 227 228 <legal all> 229 230 current_msdu_count 231 232 The number of MSDUs in the queue. 233 234 <legal all> 235 236 reserved_18 237 238 <legal 0> 239 240 timeout_count 241 242 The number of times that REO started forwarding frames 243 even though there is a hole in the bitmap. Forwarding reason 244 is Timeout 245 246 247 248 The counter saturates and freezes at 0x3F 249 250 251 252 <legal all> 253 254 forward_due_to_bar_count 255 256 The number of times that REO started forwarding frames 257 even though there is a hole in the bitmap. Forwarding reason 258 is reception of BAR frame. 259 260 261 262 The counter saturates and freezes at 0x3F 263 264 265 266 <legal all> 267 268 duplicate_count 269 270 The number of duplicate frames that have been detected 271 272 <legal all> 273 274 frames_in_order_count 275 276 The number of frames that have been received in order 277 (without a hole that prevented them from being forwarded 278 immediately) 279 280 281 282 This corresponds to the Reorder opcodes: 283 284 'FWDCUR' and 'FWD BUF' 285 286 287 288 <legal all> 289 290 bar_received_count 291 292 The number of times a BAR frame is received. 293 294 295 296 This corresponds to the Reorder opcodes with 'DROP' 297 298 299 300 The counter saturates and freezes at 0xFF 301 302 <legal all> 303 304 mpdu_frames_processed_count 305 306 The total number of MPDU frames that have been processed 307 by REO. This includes the duplicates. 308 309 310 311 <legal all> 312 313 msdu_frames_processed_count 314 315 The total number of MSDU frames that have been processed 316 by REO. This includes the duplicates. 317 318 319 320 <legal all> 321 322 total_processed_byte_count 323 324 An approximation of the number of bytes received for 325 this queue. 326 327 328 329 In 64 byte units 330 331 <legal all> 332 333 late_receive_mpdu_count 334 335 The number of MPDUs received after the window had 336 already moved on. The 'late' sequence window is defined as 337 (Window SSN - 256) - (Window SSN - 1) 338 339 340 341 This corresponds with Out of order detection in 342 duplicate detect FSM 343 344 345 346 The counter saturates and freezes at 0xFFF 347 348 349 350 <legal all> 351 352 window_jump_2k 353 354 The number of times the window moved more then 2K 355 356 357 358 The counter saturates and freezes at 0xF 359 360 361 362 (Note: field name can not start with number: previous 363 2k_window_jump) 364 365 366 367 <legal all> 368 369 hole_count 370 371 The number of times a hole was created in the receive 372 bitmap. 373 374 375 376 This corresponds to the Reorder opcodes with 'QCUR' 377 378 379 380 <legal all> 381 382 reserved_24a 383 384 <legal 0> 385 386 looping_count 387 388 A count value that indicates the number of times the 389 producer of entries into this Ring has looped around the 390 ring. 391 392 At initialization time, this value is set to 0. On the 393 first loop, this value is set to 1. After the max value is 394 reached allowed by the number of bits for this field, the 395 count value continues with 0 again. 396 397 398 399 In case SW is the consumer of the ring entries, it can 400 use this field to figure out up to where the producer of 401 entries has created new entries. This eliminates the need to 402 check where the head pointer' of the ring is located once 403 the SW starts processing an interrupt indicating that new 404 entries have been put into this ring... 405 406 407 408 Also note that SW if it wants only needs to look at the 409 LSB bit of this count value. 410 411 <legal all> 412 */ 413 414 415 /* EXTERNAL REFERENCE : struct uniform_reo_status_header status_header */ 416 417 418 /* Description REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER 419 420 Consumer: SW , DEBUG 421 422 Producer: REO 423 424 425 426 The value in this field is equal to value of the 427 'REO_CMD_Number' field the REO command 428 429 430 431 This field helps to correlate the statuses with the REO 432 commands. 433 434 435 436 <legal all> 437 */ 438 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_OFFSET 0x00000000 439 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_LSB 0 440 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_MASK 0x0000ffff 441 442 /* Description REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME 443 444 Consumer: DEBUG 445 446 Producer: REO 447 448 449 450 The amount of time REO took to excecute the command. 451 Note that this time does not include the duration of the 452 command waiting in the command ring, before the execution 453 started. 454 455 456 457 In us. 458 459 460 461 <legal all> 462 */ 463 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_OFFSET 0x00000000 464 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_LSB 16 465 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_MASK 0x03ff0000 466 467 /* Description REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS 468 469 Consumer: DEBUG 470 471 Producer: REO 472 473 474 475 Execution status of the command. 476 477 478 479 <enum 0 reo_successful_execution> Command has 480 successfully be executed 481 482 <enum 1 reo_blocked_execution> Command could not be 483 executed as the queue or cache was blocked 484 485 <enum 2 reo_failed_execution> Command has encountered 486 problems when executing, like the queue descriptor not being 487 valid. None of the status fields in the entire STATUS TLV 488 are valid. 489 490 <enum 3 reo_resource_blocked> Command is NOT executed 491 because one or more descriptors were blocked. This is SW 492 programming mistake. 493 494 None of the status fields in the entire STATUS TLV are 495 valid. 496 497 498 499 <legal 0-3> 500 */ 501 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_OFFSET 0x00000000 502 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_LSB 26 503 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_MASK 0x0c000000 504 505 /* Description REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_RESERVED_0A 506 507 <legal 0> 508 */ 509 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_RESERVED_0A_OFFSET 0x00000000 510 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_RESERVED_0A_LSB 28 511 #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_RESERVED_0A_MASK 0xf0000000 512 513 /* Description REO_GET_QUEUE_STATS_STATUS_1_STATUS_HEADER_TIMESTAMP 514 515 Timestamp at the moment that this status report is 516 written. 517 518 519 520 <legal all> 521 */ 522 #define REO_GET_QUEUE_STATS_STATUS_1_STATUS_HEADER_TIMESTAMP_OFFSET 0x00000004 523 #define REO_GET_QUEUE_STATS_STATUS_1_STATUS_HEADER_TIMESTAMP_LSB 0 524 #define REO_GET_QUEUE_STATS_STATUS_1_STATUS_HEADER_TIMESTAMP_MASK 0xffffffff 525 526 /* Description REO_GET_QUEUE_STATS_STATUS_2_SSN 527 528 Starting Sequence number of the session, this changes 529 whenever window moves. (can be filled by SW then maintained 530 by REO) 531 532 <legal all> 533 */ 534 #define REO_GET_QUEUE_STATS_STATUS_2_SSN_OFFSET 0x00000008 535 #define REO_GET_QUEUE_STATS_STATUS_2_SSN_LSB 0 536 #define REO_GET_QUEUE_STATS_STATUS_2_SSN_MASK 0x00000fff 537 538 /* Description REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX 539 540 Points to last forwarded packet 541 542 <legal all> 543 */ 544 #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_OFFSET 0x00000008 545 #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_LSB 12 546 #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_MASK 0x000ff000 547 548 /* Description REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2 549 550 <legal 0> 551 */ 552 #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_OFFSET 0x00000008 553 #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_LSB 20 554 #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_MASK 0xfff00000 555 556 /* Description REO_GET_QUEUE_STATS_STATUS_3_PN_31_0 557 558 559 <legal all> 560 */ 561 #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_OFFSET 0x0000000c 562 #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_LSB 0 563 #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_MASK 0xffffffff 564 565 /* Description REO_GET_QUEUE_STATS_STATUS_4_PN_63_32 566 567 Bits [63:32] of the PN number. 568 569 <legal all> 570 */ 571 #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_OFFSET 0x00000010 572 #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_LSB 0 573 #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_MASK 0xffffffff 574 575 /* Description REO_GET_QUEUE_STATS_STATUS_5_PN_95_64 576 577 Bits [95:64] of the PN number. 578 579 <legal all> 580 */ 581 #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_OFFSET 0x00000014 582 #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_LSB 0 583 #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_MASK 0xffffffff 584 585 /* Description REO_GET_QUEUE_STATS_STATUS_6_PN_127_96 586 587 Bits [127:96] of the PN number. 588 589 <legal all> 590 */ 591 #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_OFFSET 0x00000018 592 #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_LSB 0 593 #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_MASK 0xffffffff 594 595 /* Description REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP 596 597 Timestamp of arrival of the last MPDU for this queue 598 599 <legal all> 600 */ 601 #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_OFFSET 0x0000001c 602 #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_LSB 0 603 #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_MASK 0xffffffff 604 605 /* Description REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP 606 607 Timestamp of forwarding an MPDU 608 609 610 611 If the queue is empty when a frame gets received, this 612 time shall be initialized to the 'enqueue' timestamp 613 614 615 616 Used for aging 617 618 <legal all> 619 */ 620 #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_OFFSET 0x00000020 621 #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_LSB 0 622 #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_MASK 0xffffffff 623 624 /* Description REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0 625 626 When a bit is set, the corresponding frame is currently 627 held in the re-order queue. 628 629 The bitmap is Fully managed by HW. 630 631 SW shall init this to 0, and then never ever change it 632 633 <legal all> 634 */ 635 #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_OFFSET 0x00000024 636 #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_LSB 0 637 #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_MASK 0xffffffff 638 639 /* Description REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32 640 641 See Rx_bitmap_31_0 description 642 643 <legal all> 644 */ 645 #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_OFFSET 0x00000028 646 #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_LSB 0 647 #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_MASK 0xffffffff 648 649 /* Description REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64 650 651 See Rx_bitmap_31_0 description 652 653 <legal all> 654 */ 655 #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_OFFSET 0x0000002c 656 #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_LSB 0 657 #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_MASK 0xffffffff 658 659 /* Description REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96 660 661 See Rx_bitmap_31_0 description 662 663 <legal all> 664 */ 665 #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_OFFSET 0x00000030 666 #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_LSB 0 667 #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_MASK 0xffffffff 668 669 /* Description REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128 670 671 See Rx_bitmap_31_0 description 672 673 <legal all> 674 */ 675 #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_OFFSET 0x00000034 676 #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_LSB 0 677 #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_MASK 0xffffffff 678 679 /* Description REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160 680 681 See Rx_bitmap_31_0 description 682 683 <legal all> 684 */ 685 #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_OFFSET 0x00000038 686 #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_LSB 0 687 #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_MASK 0xffffffff 688 689 /* Description REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192 690 691 See Rx_bitmap_31_0 description 692 693 <legal all> 694 */ 695 #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_OFFSET 0x0000003c 696 #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_LSB 0 697 #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_MASK 0xffffffff 698 699 /* Description REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224 700 701 See Rx_bitmap_31_0 description 702 703 <legal all> 704 */ 705 #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_OFFSET 0x00000040 706 #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_LSB 0 707 #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_MASK 0xffffffff 708 709 /* Description REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT 710 711 The number of MPDUs in the queue. 712 713 714 715 <legal all> 716 */ 717 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_OFFSET 0x00000044 718 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_LSB 0 719 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_MASK 0x0000007f 720 721 /* Description REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT 722 723 The number of MSDUs in the queue. 724 725 <legal all> 726 */ 727 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_OFFSET 0x00000044 728 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_LSB 7 729 #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_MASK 0xffffff80 730 731 /* Description REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18 732 733 <legal 0> 734 */ 735 #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_OFFSET 0x00000048 736 #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_LSB 0 737 #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_MASK 0x0000000f 738 739 /* Description REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT 740 741 The number of times that REO started forwarding frames 742 even though there is a hole in the bitmap. Forwarding reason 743 is Timeout 744 745 746 747 The counter saturates and freezes at 0x3F 748 749 750 751 <legal all> 752 */ 753 #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_OFFSET 0x00000048 754 #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_LSB 4 755 #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_MASK 0x000003f0 756 757 /* Description REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT 758 759 The number of times that REO started forwarding frames 760 even though there is a hole in the bitmap. Forwarding reason 761 is reception of BAR frame. 762 763 764 765 The counter saturates and freezes at 0x3F 766 767 768 769 <legal all> 770 */ 771 #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_OFFSET 0x00000048 772 #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_LSB 10 773 #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_MASK 0x0000fc00 774 775 /* Description REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT 776 777 The number of duplicate frames that have been detected 778 779 <legal all> 780 */ 781 #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_OFFSET 0x00000048 782 #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_LSB 16 783 #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_MASK 0xffff0000 784 785 /* Description REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT 786 787 The number of frames that have been received in order 788 (without a hole that prevented them from being forwarded 789 immediately) 790 791 792 793 This corresponds to the Reorder opcodes: 794 795 'FWDCUR' and 'FWD BUF' 796 797 798 799 <legal all> 800 */ 801 #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_OFFSET 0x0000004c 802 #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_LSB 0 803 #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_MASK 0x00ffffff 804 805 /* Description REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT 806 807 The number of times a BAR frame is received. 808 809 810 811 This corresponds to the Reorder opcodes with 'DROP' 812 813 814 815 The counter saturates and freezes at 0xFF 816 817 <legal all> 818 */ 819 #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_OFFSET 0x0000004c 820 #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_LSB 24 821 #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_MASK 0xff000000 822 823 /* Description REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT 824 825 The total number of MPDU frames that have been processed 826 by REO. This includes the duplicates. 827 828 829 830 <legal all> 831 */ 832 #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_OFFSET 0x00000050 833 #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_LSB 0 834 #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff 835 836 /* Description REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT 837 838 The total number of MSDU frames that have been processed 839 by REO. This includes the duplicates. 840 841 842 843 <legal all> 844 */ 845 #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_OFFSET 0x00000054 846 #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_LSB 0 847 #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff 848 849 /* Description REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT 850 851 An approximation of the number of bytes received for 852 this queue. 853 854 855 856 In 64 byte units 857 858 <legal all> 859 */ 860 #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_OFFSET 0x00000058 861 #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_LSB 0 862 #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_MASK 0xffffffff 863 864 /* Description REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT 865 866 The number of MPDUs received after the window had 867 already moved on. The 'late' sequence window is defined as 868 (Window SSN - 256) - (Window SSN - 1) 869 870 871 872 This corresponds with Out of order detection in 873 duplicate detect FSM 874 875 876 877 The counter saturates and freezes at 0xFFF 878 879 880 881 <legal all> 882 */ 883 #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_OFFSET 0x0000005c 884 #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_LSB 0 885 #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_MASK 0x00000fff 886 887 /* Description REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K 888 889 The number of times the window moved more then 2K 890 891 892 893 The counter saturates and freezes at 0xF 894 895 896 897 (Note: field name can not start with number: previous 898 2k_window_jump) 899 900 901 902 <legal all> 903 */ 904 #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_OFFSET 0x0000005c 905 #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_LSB 12 906 #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_MASK 0x0000f000 907 908 /* Description REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT 909 910 The number of times a hole was created in the receive 911 bitmap. 912 913 914 915 This corresponds to the Reorder opcodes with 'QCUR' 916 917 918 919 <legal all> 920 */ 921 #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_OFFSET 0x0000005c 922 #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_LSB 16 923 #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_MASK 0xffff0000 924 925 /* Description REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A 926 927 <legal 0> 928 */ 929 #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_OFFSET 0x00000060 930 #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_LSB 0 931 #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_MASK 0x0fffffff 932 933 /* Description REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT 934 935 A count value that indicates the number of times the 936 producer of entries into this Ring has looped around the 937 ring. 938 939 At initialization time, this value is set to 0. On the 940 first loop, this value is set to 1. After the max value is 941 reached allowed by the number of bits for this field, the 942 count value continues with 0 again. 943 944 945 946 In case SW is the consumer of the ring entries, it can 947 use this field to figure out up to where the producer of 948 entries has created new entries. This eliminates the need to 949 check where the head pointer' of the ring is located once 950 the SW starts processing an interrupt indicating that new 951 entries have been put into this ring... 952 953 954 955 Also note that SW if it wants only needs to look at the 956 LSB bit of this count value. 957 958 <legal all> 959 */ 960 #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_OFFSET 0x00000060 961 #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_LSB 28 962 #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_MASK 0xf0000000 963 964 965 #endif // _REO_GET_QUEUE_STATS_STATUS_H_ 966