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