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 // $ATH_LICENSE_HW_HDR_C$ 20 // 21 // DO NOT EDIT! This file is automatically generated 22 // These definitions are tied to a particular hardware layout 23 24 25 #ifndef _WBM_RELEASE_RING_H_ 26 #define _WBM_RELEASE_RING_H_ 27 #if !defined(__ASSEMBLER__) 28 #endif 29 30 #include "buffer_addr_info.h" 31 #include "tx_rate_stats_info.h" 32 33 // ################ START SUMMARY ################# 34 // 35 // Dword Fields 36 // 0-1 struct buffer_addr_info released_buff_or_desc_addr_info; 37 // 2 release_source_module[2:0], bm_action[5:3], buffer_or_desc_type[8:6], first_msdu_index[12:9], tqm_release_reason[15:13], rxdma_push_reason[17:16], rxdma_error_code[22:18], reo_push_reason[24:23], reo_error_code[29:25], wbm_internal_error[30], reserved_2[31] 38 // 3 tqm_status_number[23:0], transmit_count[30:24], reserved_3a[31] 39 // 4 ack_frame_rssi[7:0], sw_release_details_valid[8], first_msdu[9], last_msdu[10], msdu_part_of_amsdu[11], fw_tx_notify_frame[12], buffer_timestamp[31:13] 40 // 5-6 struct tx_rate_stats_info tx_rate_stats; 41 // 7 sw_peer_id[15:0], tid[19:16], ring_id[27:20], looping_count[31:28] 42 // 43 // ################ END SUMMARY ################# 44 45 #define NUM_OF_DWORDS_WBM_RELEASE_RING 8 46 47 struct wbm_release_ring { 48 struct buffer_addr_info released_buff_or_desc_addr_info; 49 uint32_t release_source_module : 3, //[2:0] 50 bm_action : 3, //[5:3] 51 buffer_or_desc_type : 3, //[8:6] 52 first_msdu_index : 4, //[12:9] 53 tqm_release_reason : 3, //[15:13] 54 rxdma_push_reason : 2, //[17:16] 55 rxdma_error_code : 5, //[22:18] 56 reo_push_reason : 2, //[24:23] 57 reo_error_code : 5, //[29:25] 58 wbm_internal_error : 1, //[30] 59 reserved_2 : 1; //[31] 60 uint32_t tqm_status_number : 24, //[23:0] 61 transmit_count : 7, //[30:24] 62 reserved_3a : 1; //[31] 63 uint32_t ack_frame_rssi : 8, //[7:0] 64 sw_release_details_valid : 1, //[8] 65 first_msdu : 1, //[9] 66 last_msdu : 1, //[10] 67 msdu_part_of_amsdu : 1, //[11] 68 fw_tx_notify_frame : 1, //[12] 69 buffer_timestamp : 19; //[31:13] 70 struct tx_rate_stats_info tx_rate_stats; 71 uint32_t sw_peer_id : 16, //[15:0] 72 tid : 4, //[19:16] 73 ring_id : 8, //[27:20] 74 looping_count : 4; //[31:28] 75 }; 76 77 /* 78 79 struct buffer_addr_info released_buff_or_desc_addr_info 80 81 Consumer: WBM/SW/FW 82 83 Producer: SW/TQM/RXDMA/REO/SWITCH 84 85 86 87 Details of the physical address of the buffer or link 88 descriptor that is being released. Note that within this 89 descriptor, WBM will look at the 'owner' of the released 90 buffer/descriptor and forward it to SW/FW is WBM is not the 91 owner. 92 93 release_source_module 94 95 Indicates which module initiated the release of this 96 buffer or descriptor 97 98 99 100 <enum 0 release_source_TQM> TQM released this buffer or 101 descriptor 102 103 <enum 1 release_source_RXDMA> RXDMA released this buffer 104 or descriptor 105 106 <enum 2 release_source_REO> REO released this buffer or 107 descriptor 108 109 <enum 3 release_source_FW> FW released this buffer or 110 descriptor 111 112 <enum 4 release_source_SW> SW released this buffer or 113 descriptor 114 115 <legal 0-4> 116 117 bm_action 118 119 Consumer: WBM/SW/FW 120 121 Producer: SW/TQM/RXDMA/REO/SWITCH 122 123 124 125 Field only valid when the field return_buffer_manager in 126 the Released_buff_or_desc_addr_info indicates: 127 128 WBM_IDLE_BUF_LIST or 129 130 WBM_IDLE_DESC_LIST 131 132 133 134 An MSDU extension descriptor shall never be marked as 135 136 137 138 <enum 0 Put_in_idle_list> Put the buffer or descriptor 139 back in the idle list. In case of MSDU or MDPU link 140 descriptor, BM does not need to check to release any 141 individual MSDU buffers 142 143 144 145 <enum 1 release_msdu_list > This BM action can only be 146 used in combination with buffer_or_desc_type being 147 msdu_link_descriptor. Field first_msdu_index points out 148 which MSDU pointer in the MSDU link descriptor is the first 149 of an MPDU that is released. 150 151 BM shall release all the MSDU buffers linked to this 152 first MSDU buffer pointer. All related MSDU buffer pointer 153 entries shall be set to value 0, which represents the 'NULL 154 pointer. When all MSDU buffer pointers in the MSDU link 155 descriptor are 'NULL', the MSDU link descriptor itself shall 156 also be released. 157 158 159 160 <enum 2 Put_in_idle_list_expanded> CURRENTLY NOT 161 IMPLEMENTED.... 162 163 Put the buffer or descriptor back in the idle list. Only 164 valid in combination with buffer_or_desc_type indicating 165 MDPU_link_descriptor. 166 167 BM shall release the MPDU link descriptor as well as all 168 MSDUs that are linked to the MPDUs in this descriptor. 169 170 171 172 <legal 0-2> 173 174 buffer_or_desc_type 175 176 Consumer: WBM/SW/FW 177 178 Producer: SW/TQM/RXDMA/REO/SWITCH 179 180 181 182 Field only valid when WBM is marked as the 183 return_buffer_manager in the Released_Buffer_address_info 184 185 186 187 Indicates that type of buffer or descriptor is being 188 released 189 190 191 192 <enum 0 MSDU_rel_buffer> The address points to an MSDU 193 buffer 194 195 <enum 1 msdu_link_descriptor> The address points to an 196 TX MSDU link descriptor 197 198 <enum 2 mpdu_link_descriptor> The address points to an 199 MPDU link descriptor 200 201 <enum 3 msdu_ext_descriptor > The address points to an 202 MSDU extension descriptor. 203 204 In case BM finds this one in a release ring, it passes 205 it on to FW... 206 207 <enum 4 queue_ext_descriptor> The address points to an 208 TQM queue extension descriptor. WBM should treat this is the 209 same way as a link descriptor. That is, put the 128 byte 210 buffer back in the link buffer idle list. 211 212 213 214 <legal 0-4> 215 216 first_msdu_index 217 218 Consumer: WBM/SW/FW 219 220 Producer: SW/TQM/RXDMA/REO/SWITCH 221 222 223 224 Field only valid for the bm_action release_msdu_list. 225 226 227 228 The index of the first MSDU in an MSDU link descriptor 229 all belonging to the same MPDU. 230 231 232 233 <legal 0-6> 234 235 tqm_release_reason 236 237 Consumer: WBM/SW/FW 238 239 Producer: TQM 240 241 242 243 Field only valid when Release_source_module is set to 244 release_source_TQM 245 246 247 248 (rr = Release Reason) 249 250 <enum 0 tqm_rr_frame_acked> frame is removed because an 251 ACK of BA for it was received 252 253 <enum 1 tqm_rr_rem_cmd_rem> frame is removed because a 254 remove command of type Remove_mpdus initiated by SW 255 256 <enum 2 tqm_rr_rem_cmd_tx> frame is removed because a 257 remove command of type Remove_transmitted_mpdus initiated by 258 SW 259 260 <enum 3 tqm_rr_rem_cmd_notx> frame is removed because a 261 remove command of type Remove_untransmitted_mpdus initiated 262 by SW 263 264 <enum 4 tqm_rr_rem_cmd_aged> frame is removed because a 265 remove command of type Remove_aged_mpdus or 266 Remove_aged_msdus initiated by SW 267 268 <enum 5 tqm_fw_reason1> frame is removed because a 269 remove command where fw indicated that remove reason is 270 fw_reason1 271 272 <enum 6 tqm_fw_reason2> frame is removed because a 273 remove command where fw indicated that remove reason is 274 fw_reason1 275 276 <enum 7 tqm_fw_reason3> frame is removed because a 277 remove command where fw indicated that remove reason is 278 fw_reason1 279 280 281 282 <legal 0-7> 283 284 rxdma_push_reason 285 286 Field only valid when Release_source_module is set to 287 release_source_RXDMA 288 289 290 291 Indicates why rxdma pushed the frame to this ring 292 293 294 295 <enum 0 rxdma_error_detected> RXDMA detected an error an 296 pushed this frame to this queue 297 298 <enum 1 rxdma_routing_instruction> RXDMA pushed the 299 frame to this queue per received routing instructions. No 300 error within RXDMA was detected 301 302 303 304 <legal 0 - 1> 305 306 rxdma_error_code 307 308 Field only valid when 'rxdma_push_reason' set to 309 'rxdma_error_detected'. 310 311 312 313 <enum 0 rxdma_overflow_err>MPDU frame is not complete 314 due to a FIFO overflow error in RXPCU. 315 316 <enum 1 rxdma_mpdu_length_err>MPDU frame is not complete 317 due to receiving incomplete MPDU from the PHY 318 319 320 <enum 3 rxdma_decrypt_err>CRYPTO reported a decryption 321 error or CRYPTO received an encrypted frame, but did not get 322 a valid corresponding key id in the peer entry. 323 324 <enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC 325 error 326 327 <enum 5 rxdma_unecrypted_err>CRYPTO reported an 328 unencrypted frame error when encrypted was expected 329 330 <enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU 331 length error 332 333 <enum 7 rxdma_msdu_limit_err>RX OLE reported that max 334 number of MSDUs allowed in an MPDU got exceeded 335 336 <enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing 337 error 338 339 <enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU 340 parsing error 341 342 <enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout 343 during SA search 344 345 <enum 11 rxdma_da_timeout_err>RX OLE reported a timeout 346 during DA search 347 348 <enum 12 rxdma_flow_timeout_err>RX OLE reported a 349 timeout during flow search 350 351 <enum 13 Rxdma_flush_request>RXDMA received a flush 352 request 353 354 reo_push_reason 355 356 Field only valid when Release_source_module is set to 357 release_source_REO 358 359 360 361 Indicates why REO pushed the frame to this release ring 362 363 364 365 <enum 0 reo_error_detected> Reo detected an error an 366 pushed this frame to this queue 367 368 <enum 1 reo_routing_instruction> Reo pushed the frame to 369 this queue per received routing instructions. No error 370 within REO was detected 371 372 373 374 <legal 0 - 1> 375 376 reo_error_code 377 378 Field only valid when 'Reo_push_reason' set to 379 'reo_error_detected'. 380 381 382 383 <enum 0 reo_queue_desc_addr_zero> Reo queue descriptor 384 provided in the REO_ENTRANCE ring is set to 0 385 386 <enum 1 reo_queue_desc_not_valid> Reo queue descriptor 387 valid bit is NOT set 388 389 <enum 2 ampdu_in_non_ba> AMPDU frame received without BA 390 session having been setup. 391 392 <enum 3 non_ba_duplicate> Non-BA session, SN equal to 393 SSN, Retry bit set: duplicate frame 394 395 <enum 4 ba_duplicate> BA session, duplicate frame 396 397 <enum 5 regular_frame_2k_jump> A normal (management/data 398 frame) received with 2K jump in SN 399 400 <enum 6 bar_frame_2k_jump> A bar received with 2K jump 401 in SSN 402 403 <enum 7 regular_frame_OOR> A normal (management/data 404 frame) received with SN falling within the OOR window 405 406 <enum 8 bar_frame_OOR> A bar received with SSN falling 407 within the OOR window 408 409 <enum 9 bar_frame_no_ba_session> A bar received without 410 a BA session 411 412 <enum 10 bar_frame_sn_equals_ssn> A bar received with 413 SSN equal to SN 414 415 <enum 11 pn_check_failed> PN Check Failed packet. 416 417 <enum 12 2k_error_handling_flag_set> Frame is forwarded 418 as a result of the 'Seq_2k_error_detected_flag' been set in 419 the REO Queue descriptor 420 421 <enum 13 pn_error_handling_flag_set> Frame is forwarded 422 as a result of the 'pn_error_detected_flag' been set in the 423 REO Queue descriptor 424 425 <enum 14 queue_descriptor_blocked_set> Frame is 426 forwarded as a result of the queue descriptor(address) being 427 blocked as SW/FW seems to be currently in the process of 428 making updates to this descriptor... 429 430 431 432 <legal 0-14> 433 434 wbm_internal_error 435 436 Can only be set by WBM. 437 438 439 440 Is set when WBM got a buffer pointer but the action was 441 to push it to the idle link descriptor ring or do link 442 related activity 443 444 OR 445 446 Is set when WBM got a link buffer pointer but the action 447 was to push it to the buffer descriptor ring 448 449 450 451 <legal all> 452 453 reserved_2 454 455 <legal 0> 456 457 tqm_status_number 458 459 Field only valid when Release_source_module is set to 460 release_source_TQM 461 462 463 464 The value in this field is equal to value of the 465 'TQM_CMD_Number' field the TQM command or the 466 'TQM_add_cmd_Number' field from the TQM entrance ring 467 descriptor 468 469 470 471 This field helps to correlate the statuses with the TQM 472 commands. 473 474 475 476 NOTE that SW could program this number to be equal to 477 the PPDU_ID number in case direct correlation with the PPDU 478 ID is desired 479 480 481 482 <legal all> 483 484 transmit_count 485 486 Field only valid when Release_source_module is set to 487 release_source_TQM 488 489 490 491 The number of times this frame has been transmitted 492 493 reserved_3a 494 495 <legal 0> 496 497 ack_frame_rssi 498 499 This field is only valid when the source is TQM. 500 501 502 503 If this frame is removed as the result of the reception 504 of an ACK or BA, this field indicates the RSSI of the 505 received ACK or BA frame. 506 507 508 509 When the frame is removed as result of a direct remove 510 command from the SW, this field is set to 0x0 (which is 511 never a valid value when real RSSI is available) 512 513 514 515 <legal all> 516 517 sw_release_details_valid 518 519 Consumer: SW 520 521 Producer: WBM 522 523 524 525 When set, some WBM specific release info for SW is 526 valid. 527 528 This is set when WMB got a 'release_msdu_list' command 529 from TQM and the return buffer manager is not WMB. WBM will 530 then de-aggregate all the MSDUs and pass them one at a time 531 on to the 'buffer owner' 532 533 534 535 <legal all> 536 537 first_msdu 538 539 Field only valid when SW_release_details_valid is set. 540 541 542 543 Consumer: SW 544 545 Producer: WBM 546 547 548 549 When set, this MSDU is the first MSDU pointed to in the 550 'release_msdu_list' command. 551 552 553 554 <legal all> 555 556 last_msdu 557 558 Field only valid when SW_release_details_valid is set. 559 560 561 562 Consumer: SW 563 564 Producer: WBM 565 566 567 568 When set, this MSDU is the last MSDU pointed to in the 569 'release_msdu_list' command. 570 571 572 573 <legal all> 574 575 msdu_part_of_amsdu 576 577 Field only valid when SW_release_details_valid is set. 578 579 580 581 Consumer: SW 582 583 Producer: WBM 584 585 586 587 When set, this MSDU was part of an A-MSDU in MPDU 588 589 <legal all> 590 591 fw_tx_notify_frame 592 593 Field only valid when SW_release_details_valid is set. 594 595 596 597 Consumer: SW 598 599 Producer: WBM 600 601 602 603 This is the FW_tx_notify_frame field from the 604 605 <legal all> 606 607 buffer_timestamp 608 609 Field only valid when SW_release_details_valid is set. 610 611 612 613 Consumer: SW 614 615 Producer: WBM 616 617 618 619 This is the Buffer_timestamp field from the 620 621 <legal all> 622 623 struct tx_rate_stats_info tx_rate_stats 624 625 Consumer: TQM 626 627 Producer: SW/SCH(from TXPCU, PDG) 628 629 630 631 Details for command execution tracking purposes. 632 633 sw_peer_id 634 635 Field only valid when Release_source_module is set to 636 release_source_TQM 637 638 639 640 1) Release of msdu buffer due to drop_frame = 1. Flow is 641 not fetched and hence sw_peer_id and tid = 0 642 643 buffer_or_desc_type = e_num 0 644 MSDU_rel_buffertqm_release_reason = e_num 1 645 tqm_rr_rem_cmd_rem 646 647 648 649 650 651 2) Release of msdu buffer due to Flow is not fetched and 652 hence sw_peer_id and tid = 0 653 654 buffer_or_desc_type = e_num 0 655 MSDU_rel_buffertqm_release_reason = e_num 1 656 tqm_rr_rem_cmd_rem 657 658 659 660 661 662 3) Release of msdu link due to remove_mpdu or acked_mpdu 663 command. 664 665 buffer_or_desc_type = e_num1 666 msdu_link_descriptortqm_release_reason can be:e_num 1 667 tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx 668 669 e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged 670 671 672 673 Sw_peer_id from the TX_MSDU_FLOW descriptor or 674 TX_MPDU_QUEUE descriptor 675 676 <legal all> 677 678 tid 679 680 Field only valid when Release_source_module is set to 681 release_source_TQM 682 683 684 685 1) Release of msdu buffer due to drop_frame = 1. Flow is 686 not fetched and hence sw_peer_id and tid = 0 687 688 buffer_or_desc_type = e_num 0 689 MSDU_rel_buffertqm_release_reason = e_num 1 690 tqm_rr_rem_cmd_rem 691 692 693 694 695 696 2) Release of msdu buffer due to Flow is not fetched and 697 hence sw_peer_id and tid = 0 698 699 buffer_or_desc_type = e_num 0 700 MSDU_rel_buffertqm_release_reason = e_num 1 701 tqm_rr_rem_cmd_rem 702 703 704 705 706 707 3) Release of msdu link due to remove_mpdu or acked_mpdu 708 command. 709 710 buffer_or_desc_type = e_num1 711 msdu_link_descriptortqm_release_reason can be:e_num 1 712 tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx 713 714 e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged 715 716 717 718 719 720 This field represents the TID from the TX_MSDU_FLOW 721 descriptor or TX_MPDU_QUEUE descriptor 722 723 724 725 <legal all> 726 727 ring_id 728 729 Consumer: TQM/REO/RXDMA/SW 730 731 Producer: SRNG (of RXDMA) 732 733 734 735 For debugging. 736 737 This field is filled in by the SRNG module. 738 739 It help to identify the ring that is being looked <legal 740 all> 741 742 looping_count 743 744 Consumer: WBM/SW/FW 745 746 Producer: SW/TQM/RXDMA/REO/SWITCH 747 748 749 750 A count value that indicates the number of times the 751 producer of entries into the Buffer Manager Ring has looped 752 around the ring. 753 754 At initialization time, this value is set to 0. On the 755 first loop, this value is set to 1. After the max value is 756 reached allowed by the number of bits for this field, the 757 count value continues with 0 again. 758 759 760 761 In case SW is the consumer of the ring entries, it can 762 use this field to figure out up to where the producer of 763 entries has created new entries. This eliminates the need to 764 check where the head pointer' of the ring is located once 765 the SW starts processing an interrupt indicating that new 766 entries have been put into this ring... 767 768 769 770 Also note that SW if it wants only needs to look at the 771 LSB bit of this count value. 772 773 <legal all> 774 */ 775 776 #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_OFFSET 0x00000000 777 #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_LSB 28 778 #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_MASK 0xffffffff 779 #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_OFFSET 0x00000004 780 #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_LSB 28 781 #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_MASK 0xffffffff 782 783 /* Description WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE 784 785 Indicates which module initiated the release of this 786 buffer or descriptor 787 788 789 790 <enum 0 release_source_TQM> TQM released this buffer or 791 descriptor 792 793 <enum 1 release_source_RXDMA> RXDMA released this buffer 794 or descriptor 795 796 <enum 2 release_source_REO> REO released this buffer or 797 descriptor 798 799 <enum 3 release_source_FW> FW released this buffer or 800 descriptor 801 802 <enum 4 release_source_SW> SW released this buffer or 803 descriptor 804 805 <legal 0-4> 806 */ 807 #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_OFFSET 0x00000008 808 #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_LSB 0 809 #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_MASK 0x00000007 810 811 /* Description WBM_RELEASE_RING_2_BM_ACTION 812 813 Consumer: WBM/SW/FW 814 815 Producer: SW/TQM/RXDMA/REO/SWITCH 816 817 818 819 Field only valid when the field return_buffer_manager in 820 the Released_buff_or_desc_addr_info indicates: 821 822 WBM_IDLE_BUF_LIST or 823 824 WBM_IDLE_DESC_LIST 825 826 827 828 An MSDU extension descriptor shall never be marked as 829 830 831 832 <enum 0 Put_in_idle_list> Put the buffer or descriptor 833 back in the idle list. In case of MSDU or MDPU link 834 descriptor, BM does not need to check to release any 835 individual MSDU buffers 836 837 838 839 <enum 1 release_msdu_list > This BM action can only be 840 used in combination with buffer_or_desc_type being 841 msdu_link_descriptor. Field first_msdu_index points out 842 which MSDU pointer in the MSDU link descriptor is the first 843 of an MPDU that is released. 844 845 BM shall release all the MSDU buffers linked to this 846 first MSDU buffer pointer. All related MSDU buffer pointer 847 entries shall be set to value 0, which represents the 'NULL 848 pointer. When all MSDU buffer pointers in the MSDU link 849 descriptor are 'NULL', the MSDU link descriptor itself shall 850 also be released. 851 852 853 854 <enum 2 Put_in_idle_list_expanded> CURRENTLY NOT 855 IMPLEMENTED.... 856 857 Put the buffer or descriptor back in the idle list. Only 858 valid in combination with buffer_or_desc_type indicating 859 MDPU_link_descriptor. 860 861 BM shall release the MPDU link descriptor as well as all 862 MSDUs that are linked to the MPDUs in this descriptor. 863 864 865 866 <legal 0-2> 867 */ 868 #define WBM_RELEASE_RING_2_BM_ACTION_OFFSET 0x00000008 869 #define WBM_RELEASE_RING_2_BM_ACTION_LSB 3 870 #define WBM_RELEASE_RING_2_BM_ACTION_MASK 0x00000038 871 872 /* Description WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE 873 874 Consumer: WBM/SW/FW 875 876 Producer: SW/TQM/RXDMA/REO/SWITCH 877 878 879 880 Field only valid when WBM is marked as the 881 return_buffer_manager in the Released_Buffer_address_info 882 883 884 885 Indicates that type of buffer or descriptor is being 886 released 887 888 889 890 <enum 0 MSDU_rel_buffer> The address points to an MSDU 891 buffer 892 893 <enum 1 msdu_link_descriptor> The address points to an 894 TX MSDU link descriptor 895 896 <enum 2 mpdu_link_descriptor> The address points to an 897 MPDU link descriptor 898 899 <enum 3 msdu_ext_descriptor > The address points to an 900 MSDU extension descriptor. 901 902 In case BM finds this one in a release ring, it passes 903 it on to FW... 904 905 <enum 4 queue_ext_descriptor> The address points to an 906 TQM queue extension descriptor. WBM should treat this is the 907 same way as a link descriptor. That is, put the 128 byte 908 buffer back in the link buffer idle list. 909 910 911 912 <legal 0-4> 913 */ 914 #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_OFFSET 0x00000008 915 #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_LSB 6 916 #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_MASK 0x000001c0 917 918 /* Description WBM_RELEASE_RING_2_FIRST_MSDU_INDEX 919 920 Consumer: WBM/SW/FW 921 922 Producer: SW/TQM/RXDMA/REO/SWITCH 923 924 925 926 Field only valid for the bm_action release_msdu_list. 927 928 929 930 The index of the first MSDU in an MSDU link descriptor 931 all belonging to the same MPDU. 932 933 934 935 <legal 0-6> 936 */ 937 #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_OFFSET 0x00000008 938 #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_LSB 9 939 #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_MASK 0x00001e00 940 941 /* Description WBM_RELEASE_RING_2_TQM_RELEASE_REASON 942 943 Consumer: WBM/SW/FW 944 945 Producer: TQM 946 947 948 949 Field only valid when Release_source_module is set to 950 release_source_TQM 951 952 953 954 (rr = Release Reason) 955 956 <enum 0 tqm_rr_frame_acked> frame is removed because an 957 ACK of BA for it was received 958 959 <enum 1 tqm_rr_rem_cmd_rem> frame is removed because a 960 remove command of type Remove_mpdus initiated by SW 961 962 <enum 2 tqm_rr_rem_cmd_tx> frame is removed because a 963 remove command of type Remove_transmitted_mpdus initiated by 964 SW 965 966 <enum 3 tqm_rr_rem_cmd_notx> frame is removed because a 967 remove command of type Remove_untransmitted_mpdus initiated 968 by SW 969 970 <enum 4 tqm_rr_rem_cmd_aged> frame is removed because a 971 remove command of type Remove_aged_mpdus or 972 Remove_aged_msdus initiated by SW 973 974 <enum 5 tqm_fw_reason1> frame is removed because a 975 remove command where fw indicated that remove reason is 976 fw_reason1 977 978 <enum 6 tqm_fw_reason2> frame is removed because a 979 remove command where fw indicated that remove reason is 980 fw_reason1 981 982 <enum 7 tqm_fw_reason3> frame is removed because a 983 remove command where fw indicated that remove reason is 984 fw_reason1 985 986 987 988 <legal 0-7> 989 */ 990 #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_OFFSET 0x00000008 991 #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_LSB 13 992 #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_MASK 0x0000e000 993 994 /* Description WBM_RELEASE_RING_2_RXDMA_PUSH_REASON 995 996 Field only valid when Release_source_module is set to 997 release_source_RXDMA 998 999 1000 1001 Indicates why rxdma pushed the frame to this ring 1002 1003 1004 1005 <enum 0 rxdma_error_detected> RXDMA detected an error an 1006 pushed this frame to this queue 1007 1008 <enum 1 rxdma_routing_instruction> RXDMA pushed the 1009 frame to this queue per received routing instructions. No 1010 error within RXDMA was detected 1011 1012 1013 1014 <legal 0 - 1> 1015 */ 1016 #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_OFFSET 0x00000008 1017 #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_LSB 16 1018 #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_MASK 0x00030000 1019 1020 /* Description WBM_RELEASE_RING_2_RXDMA_ERROR_CODE 1021 1022 Field only valid when 'rxdma_push_reason' set to 1023 'rxdma_error_detected'. 1024 1025 1026 1027 <enum 0 rxdma_overflow_err>MPDU frame is not complete 1028 due to a FIFO overflow error in RXPCU. 1029 1030 <enum 1 rxdma_mpdu_length_err>MPDU frame is not complete 1031 due to receiving incomplete MPDU from the PHY 1032 1033 1034 <enum 3 rxdma_decrypt_err>CRYPTO reported a decryption 1035 error or CRYPTO received an encrypted frame, but did not get 1036 a valid corresponding key id in the peer entry. 1037 1038 <enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC 1039 error 1040 1041 <enum 5 rxdma_unecrypted_err>CRYPTO reported an 1042 unencrypted frame error when encrypted was expected 1043 1044 <enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU 1045 length error 1046 1047 <enum 7 rxdma_msdu_limit_err>RX OLE reported that max 1048 number of MSDUs allowed in an MPDU got exceeded 1049 1050 <enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing 1051 error 1052 1053 <enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU 1054 parsing error 1055 1056 <enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout 1057 during SA search 1058 1059 <enum 11 rxdma_da_timeout_err>RX OLE reported a timeout 1060 during DA search 1061 1062 <enum 12 rxdma_flow_timeout_err>RX OLE reported a 1063 timeout during flow search 1064 1065 <enum 13 Rxdma_flush_request>RXDMA received a flush 1066 request 1067 */ 1068 #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_OFFSET 0x00000008 1069 #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_LSB 18 1070 #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_MASK 0x007c0000 1071 1072 /* Description WBM_RELEASE_RING_2_REO_PUSH_REASON 1073 1074 Field only valid when Release_source_module is set to 1075 release_source_REO 1076 1077 1078 1079 Indicates why REO pushed the frame to this release ring 1080 1081 1082 1083 <enum 0 reo_error_detected> Reo detected an error an 1084 pushed this frame to this queue 1085 1086 <enum 1 reo_routing_instruction> Reo pushed the frame to 1087 this queue per received routing instructions. No error 1088 within REO was detected 1089 1090 1091 1092 <legal 0 - 1> 1093 */ 1094 #define WBM_RELEASE_RING_2_REO_PUSH_REASON_OFFSET 0x00000008 1095 #define WBM_RELEASE_RING_2_REO_PUSH_REASON_LSB 23 1096 #define WBM_RELEASE_RING_2_REO_PUSH_REASON_MASK 0x01800000 1097 1098 /* Description WBM_RELEASE_RING_2_REO_ERROR_CODE 1099 1100 Field only valid when 'Reo_push_reason' set to 1101 'reo_error_detected'. 1102 1103 1104 1105 <enum 0 reo_queue_desc_addr_zero> Reo queue descriptor 1106 provided in the REO_ENTRANCE ring is set to 0 1107 1108 <enum 1 reo_queue_desc_not_valid> Reo queue descriptor 1109 valid bit is NOT set 1110 1111 <enum 2 ampdu_in_non_ba> AMPDU frame received without BA 1112 session having been setup. 1113 1114 <enum 3 non_ba_duplicate> Non-BA session, SN equal to 1115 SSN, Retry bit set: duplicate frame 1116 1117 <enum 4 ba_duplicate> BA session, duplicate frame 1118 1119 <enum 5 regular_frame_2k_jump> A normal (management/data 1120 frame) received with 2K jump in SN 1121 1122 <enum 6 bar_frame_2k_jump> A bar received with 2K jump 1123 in SSN 1124 1125 <enum 7 regular_frame_OOR> A normal (management/data 1126 frame) received with SN falling within the OOR window 1127 1128 <enum 8 bar_frame_OOR> A bar received with SSN falling 1129 within the OOR window 1130 1131 <enum 9 bar_frame_no_ba_session> A bar received without 1132 a BA session 1133 1134 <enum 10 bar_frame_sn_equals_ssn> A bar received with 1135 SSN equal to SN 1136 1137 <enum 11 pn_check_failed> PN Check Failed packet. 1138 1139 <enum 12 2k_error_handling_flag_set> Frame is forwarded 1140 as a result of the 'Seq_2k_error_detected_flag' been set in 1141 the REO Queue descriptor 1142 1143 <enum 13 pn_error_handling_flag_set> Frame is forwarded 1144 as a result of the 'pn_error_detected_flag' been set in the 1145 REO Queue descriptor 1146 1147 <enum 14 queue_descriptor_blocked_set> Frame is 1148 forwarded as a result of the queue descriptor(address) being 1149 blocked as SW/FW seems to be currently in the process of 1150 making updates to this descriptor... 1151 1152 1153 1154 <legal 0-14> 1155 */ 1156 #define WBM_RELEASE_RING_2_REO_ERROR_CODE_OFFSET 0x00000008 1157 #define WBM_RELEASE_RING_2_REO_ERROR_CODE_LSB 25 1158 #define WBM_RELEASE_RING_2_REO_ERROR_CODE_MASK 0x3e000000 1159 1160 /* Description WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR 1161 1162 Can only be set by WBM. 1163 1164 1165 1166 Is set when WBM got a buffer pointer but the action was 1167 to push it to the idle link descriptor ring or do link 1168 related activity 1169 1170 OR 1171 1172 Is set when WBM got a link buffer pointer but the action 1173 was to push it to the buffer descriptor ring 1174 1175 1176 1177 <legal all> 1178 */ 1179 #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_OFFSET 0x00000008 1180 #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_LSB 30 1181 #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_MASK 0x40000000 1182 1183 /* Description WBM_RELEASE_RING_2_RESERVED_2 1184 1185 <legal 0> 1186 */ 1187 #define WBM_RELEASE_RING_2_RESERVED_2_OFFSET 0x00000008 1188 #define WBM_RELEASE_RING_2_RESERVED_2_LSB 31 1189 #define WBM_RELEASE_RING_2_RESERVED_2_MASK 0x80000000 1190 1191 /* Description WBM_RELEASE_RING_3_TQM_STATUS_NUMBER 1192 1193 Field only valid when Release_source_module is set to 1194 release_source_TQM 1195 1196 1197 1198 The value in this field is equal to value of the 1199 'TQM_CMD_Number' field the TQM command or the 1200 'TQM_add_cmd_Number' field from the TQM entrance ring 1201 descriptor 1202 1203 1204 1205 This field helps to correlate the statuses with the TQM 1206 commands. 1207 1208 1209 1210 NOTE that SW could program this number to be equal to 1211 the PPDU_ID number in case direct correlation with the PPDU 1212 ID is desired 1213 1214 1215 1216 <legal all> 1217 */ 1218 #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_OFFSET 0x0000000c 1219 #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_LSB 0 1220 #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_MASK 0x00ffffff 1221 1222 /* Description WBM_RELEASE_RING_3_TRANSMIT_COUNT 1223 1224 Field only valid when Release_source_module is set to 1225 release_source_TQM 1226 1227 1228 1229 The number of times this frame has been transmitted 1230 */ 1231 #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_OFFSET 0x0000000c 1232 #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_LSB 24 1233 #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_MASK 0x7f000000 1234 1235 /* Description WBM_RELEASE_RING_3_RESERVED_3A 1236 1237 <legal 0> 1238 */ 1239 #define WBM_RELEASE_RING_3_RESERVED_3A_OFFSET 0x0000000c 1240 #define WBM_RELEASE_RING_3_RESERVED_3A_LSB 31 1241 #define WBM_RELEASE_RING_3_RESERVED_3A_MASK 0x80000000 1242 1243 /* Description WBM_RELEASE_RING_4_ACK_FRAME_RSSI 1244 1245 This field is only valid when the source is TQM. 1246 1247 1248 1249 If this frame is removed as the result of the reception 1250 of an ACK or BA, this field indicates the RSSI of the 1251 received ACK or BA frame. 1252 1253 1254 1255 When the frame is removed as result of a direct remove 1256 command from the SW, this field is set to 0x0 (which is 1257 never a valid value when real RSSI is available) 1258 1259 1260 1261 <legal all> 1262 */ 1263 #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_OFFSET 0x00000010 1264 #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_LSB 0 1265 #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_MASK 0x000000ff 1266 1267 /* Description WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID 1268 1269 Consumer: SW 1270 1271 Producer: WBM 1272 1273 1274 1275 When set, some WBM specific release info for SW is 1276 valid. 1277 1278 This is set when WMB got a 'release_msdu_list' command 1279 from TQM and the return buffer manager is not WMB. WBM will 1280 then de-aggregate all the MSDUs and pass them one at a time 1281 on to the 'buffer owner' 1282 1283 1284 1285 <legal all> 1286 */ 1287 #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_OFFSET 0x00000010 1288 #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_LSB 8 1289 #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_MASK 0x00000100 1290 1291 /* Description WBM_RELEASE_RING_4_FIRST_MSDU 1292 1293 Field only valid when SW_release_details_valid is set. 1294 1295 1296 1297 Consumer: SW 1298 1299 Producer: WBM 1300 1301 1302 1303 When set, this MSDU is the first MSDU pointed to in the 1304 'release_msdu_list' command. 1305 1306 1307 1308 <legal all> 1309 */ 1310 #define WBM_RELEASE_RING_4_FIRST_MSDU_OFFSET 0x00000010 1311 #define WBM_RELEASE_RING_4_FIRST_MSDU_LSB 9 1312 #define WBM_RELEASE_RING_4_FIRST_MSDU_MASK 0x00000200 1313 1314 /* Description WBM_RELEASE_RING_4_LAST_MSDU 1315 1316 Field only valid when SW_release_details_valid is set. 1317 1318 1319 1320 Consumer: SW 1321 1322 Producer: WBM 1323 1324 1325 1326 When set, this MSDU is the last MSDU pointed to in the 1327 'release_msdu_list' command. 1328 1329 1330 1331 <legal all> 1332 */ 1333 #define WBM_RELEASE_RING_4_LAST_MSDU_OFFSET 0x00000010 1334 #define WBM_RELEASE_RING_4_LAST_MSDU_LSB 10 1335 #define WBM_RELEASE_RING_4_LAST_MSDU_MASK 0x00000400 1336 1337 /* Description WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU 1338 1339 Field only valid when SW_release_details_valid is set. 1340 1341 1342 1343 Consumer: SW 1344 1345 Producer: WBM 1346 1347 1348 1349 When set, this MSDU was part of an A-MSDU in MPDU 1350 1351 <legal all> 1352 */ 1353 #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_OFFSET 0x00000010 1354 #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_LSB 11 1355 #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_MASK 0x00000800 1356 1357 /* Description WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME 1358 1359 Field only valid when SW_release_details_valid is set. 1360 1361 1362 1363 Consumer: SW 1364 1365 Producer: WBM 1366 1367 1368 1369 This is the FW_tx_notify_frame field from the 1370 1371 <legal all> 1372 */ 1373 #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_OFFSET 0x00000010 1374 #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_LSB 12 1375 #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_MASK 0x00001000 1376 1377 /* Description WBM_RELEASE_RING_4_BUFFER_TIMESTAMP 1378 1379 Field only valid when SW_release_details_valid is set. 1380 1381 1382 1383 Consumer: SW 1384 1385 Producer: WBM 1386 1387 1388 1389 This is the Buffer_timestamp field from the 1390 1391 <legal all> 1392 */ 1393 #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_OFFSET 0x00000010 1394 #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_LSB 13 1395 #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_MASK 0xffffe000 1396 #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_OFFSET 0x00000014 1397 #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_LSB 13 1398 #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_MASK 0xffffffff 1399 #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_OFFSET 0x00000018 1400 #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_LSB 13 1401 #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_MASK 0xffffffff 1402 1403 /* Description WBM_RELEASE_RING_7_SW_PEER_ID 1404 1405 Field only valid when Release_source_module is set to 1406 release_source_TQM 1407 1408 1409 1410 1) Release of msdu buffer due to drop_frame = 1. Flow is 1411 not fetched and hence sw_peer_id and tid = 0 1412 1413 buffer_or_desc_type = e_num 0 1414 MSDU_rel_buffertqm_release_reason = e_num 1 1415 tqm_rr_rem_cmd_rem 1416 1417 1418 1419 1420 1421 2) Release of msdu buffer due to Flow is not fetched and 1422 hence sw_peer_id and tid = 0 1423 1424 buffer_or_desc_type = e_num 0 1425 MSDU_rel_buffertqm_release_reason = e_num 1 1426 tqm_rr_rem_cmd_rem 1427 1428 1429 1430 1431 1432 3) Release of msdu link due to remove_mpdu or acked_mpdu 1433 command. 1434 1435 buffer_or_desc_type = e_num1 1436 msdu_link_descriptortqm_release_reason can be:e_num 1 1437 tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx 1438 1439 e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged 1440 1441 1442 1443 Sw_peer_id from the TX_MSDU_FLOW descriptor or 1444 TX_MPDU_QUEUE descriptor 1445 1446 <legal all> 1447 */ 1448 #define WBM_RELEASE_RING_7_SW_PEER_ID_OFFSET 0x0000001c 1449 #define WBM_RELEASE_RING_7_SW_PEER_ID_LSB 0 1450 #define WBM_RELEASE_RING_7_SW_PEER_ID_MASK 0x0000ffff 1451 1452 /* Description WBM_RELEASE_RING_7_TID 1453 1454 Field only valid when Release_source_module is set to 1455 release_source_TQM 1456 1457 1458 1459 1) Release of msdu buffer due to drop_frame = 1. Flow is 1460 not fetched and hence sw_peer_id and tid = 0 1461 1462 buffer_or_desc_type = e_num 0 1463 MSDU_rel_buffertqm_release_reason = e_num 1 1464 tqm_rr_rem_cmd_rem 1465 1466 1467 1468 1469 1470 2) Release of msdu buffer due to Flow is not fetched and 1471 hence sw_peer_id and tid = 0 1472 1473 buffer_or_desc_type = e_num 0 1474 MSDU_rel_buffertqm_release_reason = e_num 1 1475 tqm_rr_rem_cmd_rem 1476 1477 1478 1479 1480 1481 3) Release of msdu link due to remove_mpdu or acked_mpdu 1482 command. 1483 1484 buffer_or_desc_type = e_num1 1485 msdu_link_descriptortqm_release_reason can be:e_num 1 1486 tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx 1487 1488 e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged 1489 1490 1491 1492 1493 1494 This field represents the TID from the TX_MSDU_FLOW 1495 descriptor or TX_MPDU_QUEUE descriptor 1496 1497 1498 1499 <legal all> 1500 */ 1501 #define WBM_RELEASE_RING_7_TID_OFFSET 0x0000001c 1502 #define WBM_RELEASE_RING_7_TID_LSB 16 1503 #define WBM_RELEASE_RING_7_TID_MASK 0x000f0000 1504 1505 /* Description WBM_RELEASE_RING_7_RING_ID 1506 1507 Consumer: TQM/REO/RXDMA/SW 1508 1509 Producer: SRNG (of RXDMA) 1510 1511 1512 1513 For debugging. 1514 1515 This field is filled in by the SRNG module. 1516 1517 It help to identify the ring that is being looked <legal 1518 all> 1519 */ 1520 #define WBM_RELEASE_RING_7_RING_ID_OFFSET 0x0000001c 1521 #define WBM_RELEASE_RING_7_RING_ID_LSB 20 1522 #define WBM_RELEASE_RING_7_RING_ID_MASK 0x0ff00000 1523 1524 /* Description WBM_RELEASE_RING_7_LOOPING_COUNT 1525 1526 Consumer: WBM/SW/FW 1527 1528 Producer: SW/TQM/RXDMA/REO/SWITCH 1529 1530 1531 1532 A count value that indicates the number of times the 1533 producer of entries into the Buffer Manager Ring has looped 1534 around the ring. 1535 1536 At initialization time, this value is set to 0. On the 1537 first loop, this value is set to 1. After the max value is 1538 reached allowed by the number of bits for this field, the 1539 count value continues with 0 again. 1540 1541 1542 1543 In case SW is the consumer of the ring entries, it can 1544 use this field to figure out up to where the producer of 1545 entries has created new entries. This eliminates the need to 1546 check where the head pointer' of the ring is located once 1547 the SW starts processing an interrupt indicating that new 1548 entries have been put into this ring... 1549 1550 1551 1552 Also note that SW if it wants only needs to look at the 1553 LSB bit of this count value. 1554 1555 <legal all> 1556 */ 1557 #define WBM_RELEASE_RING_7_LOOPING_COUNT_OFFSET 0x0000001c 1558 #define WBM_RELEASE_RING_7_LOOPING_COUNT_LSB 28 1559 #define WBM_RELEASE_RING_7_LOOPING_COUNT_MASK 0xf0000000 1560 1561 1562 #endif // _WBM_RELEASE_RING_H_ 1563