blob: ea7ba41d67da68d0dd38a9f47ff63f09863feab7 [file] [log] [blame]
/*
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
//
// DO NOT EDIT! This file is automatically generated
// These definitions are tied to a particular hardware layout
#ifndef _WBM_RELEASE_RING_H_
#define _WBM_RELEASE_RING_H_
#if !defined(__ASSEMBLER__)
#endif
#include "buffer_addr_info.h"
#include "tx_rate_stats_info.h"
// ################ START SUMMARY #################
//
// Dword Fields
// 0-1 struct buffer_addr_info released_buff_or_desc_addr_info;
// 2 release_source_module[2:0], bm_action[5:3], buffer_or_desc_type[8:6], first_msdu_index[12:9], tqm_release_reason[16:13], rxdma_push_reason[18:17], rxdma_error_code[23:19], reo_push_reason[25:24], reo_error_code[30:26], wbm_internal_error[31]
// 3 tqm_status_number[23:0], transmit_count[30:24], msdu_continuation[31]
// 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]
// 5-6 struct tx_rate_stats_info tx_rate_stats;
// 7 sw_peer_id[15:0], tid[19:16], ring_id[27:20], looping_count[31:28]
//
// ################ END SUMMARY #################
#define NUM_OF_DWORDS_WBM_RELEASE_RING 8
struct wbm_release_ring {
struct buffer_addr_info released_buff_or_desc_addr_info;
uint32_t release_source_module : 3, //[2:0]
bm_action : 3, //[5:3]
buffer_or_desc_type : 3, //[8:6]
first_msdu_index : 4, //[12:9]
tqm_release_reason : 4, //[16:13]
rxdma_push_reason : 2, //[18:17]
rxdma_error_code : 5, //[23:19]
reo_push_reason : 2, //[25:24]
reo_error_code : 5, //[30:26]
wbm_internal_error : 1; //[31]
uint32_t tqm_status_number : 24, //[23:0]
transmit_count : 7, //[30:24]
msdu_continuation : 1; //[31]
uint32_t ack_frame_rssi : 8, //[7:0]
sw_release_details_valid : 1, //[8]
first_msdu : 1, //[9]
last_msdu : 1, //[10]
msdu_part_of_amsdu : 1, //[11]
fw_tx_notify_frame : 1, //[12]
buffer_timestamp : 19; //[31:13]
struct tx_rate_stats_info tx_rate_stats;
uint32_t sw_peer_id : 16, //[15:0]
tid : 4, //[19:16]
ring_id : 8, //[27:20]
looping_count : 4; //[31:28]
};
/*
struct buffer_addr_info released_buff_or_desc_addr_info
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
Details of the physical address of the buffer or link
descriptor that is being released. Note that within this
descriptor, WBM will look at the 'owner' of the released
buffer/descriptor and forward it to SW/FW is WBM is not the
owner.
release_source_module
Indicates which module initiated the release of this
buffer or descriptor
<enum 0 release_source_TQM> TQM released this buffer or
descriptor
<enum 1 release_source_RXDMA> RXDMA released this buffer
or descriptor
<enum 2 release_source_REO> REO released this buffer or
descriptor
<enum 3 release_source_FW> FW released this buffer or
descriptor
<enum 4 release_source_SW> SW released this buffer or
descriptor
<legal 0-4>
bm_action
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
Field only valid when the field return_buffer_manager in
the Released_buff_or_desc_addr_info indicates:
WBM_IDLE_BUF_LIST or
WBM_IDLE_DESC_LIST
An MSDU extension descriptor shall never be marked as
<enum 0 Put_in_idle_list> Put the buffer or descriptor
back in the idle list. In case of MSDU or MDPU link
descriptor, BM does not need to check to release any
individual MSDU buffers
<enum 1 release_msdu_list > This BM action can only be
used in combination with buffer_or_desc_type being
msdu_link_descriptor. Field first_msdu_index points out
which MSDU pointer in the MSDU link descriptor is the first
of an MPDU that is released.
BM shall release all the MSDU buffers linked to this
first MSDU buffer pointer. All related MSDU buffer pointer
entries shall be set to value 0, which represents the 'NULL
pointer. When all MSDU buffer pointers in the MSDU link
descriptor are 'NULL', the MSDU link descriptor itself shall
also be released.
<enum 2 Put_in_idle_list_expanded> CURRENTLY NOT
IMPLEMENTED....
Put the buffer or descriptor back in the idle list. Only
valid in combination with buffer_or_desc_type indicating
MDPU_link_descriptor.
BM shall release the MPDU link descriptor as well as all
MSDUs that are linked to the MPDUs in this descriptor.
<legal 0-2>
buffer_or_desc_type
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
Field only valid when WBM is marked as the
return_buffer_manager in the Released_Buffer_address_info
Indicates that type of buffer or descriptor is being
released
<enum 0 MSDU_rel_buffer> The address points to an MSDU
buffer
<enum 1 msdu_link_descriptor> The address points to an
TX MSDU link descriptor
<enum 2 mpdu_link_descriptor> The address points to an
MPDU link descriptor
<enum 3 msdu_ext_descriptor > The address points to an
MSDU extension descriptor.
In case BM finds this one in a release ring, it passes
it on to FW...
<enum 4 queue_ext_descriptor> The address points to an
TQM queue extension descriptor. WBM should treat this is the
same way as a link descriptor. That is, put the 128 byte
buffer back in the link buffer idle list.
<legal 0-4>
first_msdu_index
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
Field only valid for the bm_action release_msdu_list.
The index of the first MSDU in an MSDU link descriptor
all belonging to the same MPDU.
<legal 0-6>
tqm_release_reason
Consumer: WBM/SW/FW
Producer: TQM
Field only valid when Release_source_module is set to
release_source_TQM
(rr = Release Reason)
<enum 0 tqm_rr_frame_acked> frame is removed because an
ACK of BA for it was received
<enum 1 tqm_rr_rem_cmd_rem> frame is removed because a
remove command of type Remove_mpdus initiated by SW
<enum 2 tqm_rr_rem_cmd_tx> frame is removed because a
remove command of type Remove_transmitted_mpdus initiated by
SW
<enum 3 tqm_rr_rem_cmd_notx> frame is removed because a
remove command of type Remove_untransmitted_mpdus initiated
by SW
<enum 4 tqm_rr_rem_cmd_aged> frame is removed because a
remove command of type Remove_aged_mpdus or
Remove_aged_msdus initiated by SW
<enum 5 tqm_fw_reason1> frame is removed because a
remove command where fw indicated that remove reason is
fw_reason1
<enum 6 tqm_fw_reason2> frame is removed because a
remove command where fw indicated that remove reason is
fw_reason1
<enum 7 tqm_fw_reason3> frame is removed because a
remove command where fw indicated that remove reason is
fw_reason1
<enum 8 tqm_rr_rem_cmd_disable_queue> frame is removed
because a remove command of type
remove_mpdus_and_disable_queue or
remove_msdus_and_disable_flow initiated by SW
<legal 0-8>
rxdma_push_reason
Field only valid when Release_source_module is set to
release_source_RXDMA
Indicates why rxdma pushed the frame to this ring
<enum 0 rxdma_error_detected> RXDMA detected an error an
pushed this frame to this queue
<enum 1 rxdma_routing_instruction> RXDMA pushed the
frame to this queue per received routing instructions. No
error within RXDMA was detected
<enum 2 rxdma_rx_flush> RXDMA received an RX_FLUSH. As a
result the MSDU link descriptor might not have the
last_msdu_in_mpdu_flag set, but instead WBM might just see a
NULL pointer in the MSDU link descriptor. This is to be
considered a normal condition for this scenario.
<legal 0 - 2>
rxdma_error_code
Field only valid when 'rxdma_push_reason' set to
'rxdma_error_detected'.
<enum 0 rxdma_overflow_err>MPDU frame is not complete
due to a FIFO overflow error in RXPCU.
<enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
due to receiving incomplete MPDU from the PHY
<enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
error or CRYPTO received an encrypted frame, but did not get
a valid corresponding key id in the peer entry.
<enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
error
<enum 5 rxdma_unecrypted_err>CRYPTO reported an
unencrypted frame error when encrypted was expected
<enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
length error
<enum 7 rxdma_msdu_limit_err>RX OLE reported that max
number of MSDUs allowed in an MPDU got exceeded
<enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
error
<enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
parsing error
<enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
during SA search
<enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
during DA search
<enum 12 rxdma_flow_timeout_err>RX OLE reported a
timeout during flow search
<enum 13 rxdma_flush_request>RXDMA received a flush
request
<enum 14 rxdma_amsdu_fragment_err>Rx PCU reported A-MSDU
present as well as a fragmented MPDU. A-MSDU defragmentation
is not supported in Lithium SW so this is treated as an
error.
reo_push_reason
Field only valid when Release_source_module is set to
release_source_REO
Indicates why REO pushed the frame to this release ring
<enum 0 reo_error_detected> Reo detected an error an
pushed this frame to this queue
<enum 1 reo_routing_instruction> Reo pushed the frame to
this queue per received routing instructions. No error
within REO was detected
<legal 0 - 1>
reo_error_code
Field only valid when 'Reo_push_reason' set to
'reo_error_detected'.
<enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
provided in the REO_ENTRANCE ring is set to 0
<enum 1 reo_queue_desc_not_valid> Reo queue descriptor
valid bit is NOT set
<enum 2 ampdu_in_non_ba> AMPDU frame received without BA
session having been setup.
<enum 3 non_ba_duplicate> Non-BA session, SN equal to
SSN, Retry bit set: duplicate frame
<enum 4 ba_duplicate> BA session, duplicate frame
<enum 5 regular_frame_2k_jump> A normal (management/data
frame) received with 2K jump in SN
<enum 6 bar_frame_2k_jump> A bar received with 2K jump
in SSN
<enum 7 regular_frame_OOR> A normal (management/data
frame) received with SN falling within the OOR window
<enum 8 bar_frame_OOR> A bar received with SSN falling
within the OOR window
<enum 9 bar_frame_no_ba_session> A bar received without
a BA session
<enum 10 bar_frame_sn_equals_ssn> A bar received with
SSN equal to SN
<enum 11 pn_check_failed> PN Check Failed packet.
<enum 12 2k_error_handling_flag_set> Frame is forwarded
as a result of the 'Seq_2k_error_detected_flag' been set in
the REO Queue descriptor
<enum 13 pn_error_handling_flag_set> Frame is forwarded
as a result of the 'pn_error_detected_flag' been set in the
REO Queue descriptor
<enum 14 queue_descriptor_blocked_set> Frame is
forwarded as a result of the queue descriptor(address) being
blocked as SW/FW seems to be currently in the process of
making updates to this descriptor...
<legal 0-14>
wbm_internal_error
Can only be set by WBM.
Is set when WBM got a buffer pointer but the action was
to push it to the idle link descriptor ring or do link
related activity
OR
Is set when WBM got a link buffer pointer but the action
was to push it to the buffer descriptor ring
<legal all>
tqm_status_number
Field only valid when Release_source_module is set to
release_source_TQM
The value in this field is equal to value of the
'TQM_CMD_Number' field the TQM command or the
'TQM_add_cmd_Number' field from the TQM entrance ring
descriptor
This field helps to correlate the statuses with the TQM
commands.
NOTE that SW could program this number to be equal to
the PPDU_ID number in case direct correlation with the PPDU
ID is desired
<legal all>
transmit_count
Field only valid when Release_source_module is set to
release_source_TQM
The number of times this frame has been transmitted
msdu_continuation
FR53947 requests MSDU_continuation reporting for Rx
MSDUs in Pine and HastingsPrime for which
SW_release_details_valid may not be set.
<legal all>
ack_frame_rssi
This field is only valid when the source is TQM.
If this frame is removed as the result of the reception
of an ACK or BA, this field indicates the RSSI of the
received ACK or BA frame.
When the frame is removed as result of a direct remove
command from the SW, this field is set to 0x0 (which is
never a valid value when real RSSI is available)
<legal all>
sw_release_details_valid
Consumer: SW
Producer: WBM
When set, some WBM specific release info for SW is
valid.
This is set when WMB got a 'release_msdu_list' command
from TQM and the return buffer manager is not WMB. WBM will
then de-aggregate all the MSDUs and pass them one at a time
on to the 'buffer owner'
<legal all>
first_msdu
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
When set, this MSDU is the first MSDU pointed to in the
'release_msdu_list' command.
FR53947 extends this to Rx MSDUs in Pine and
HastingsPrime for which SW_release_details_valid may not be
set.
<legal all>
last_msdu
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
When set, this MSDU is the last MSDU pointed to in the
'release_msdu_list' command.
FR53947 extends this to Rx MSDUs in Pine and
HastingsPrime for which SW_release_details_valid may not be
set.
<legal all>
msdu_part_of_amsdu
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
When set, this MSDU was part of an A-MSDU in MPDU
<legal all>
fw_tx_notify_frame
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
This is the FW_tx_notify_frame field from the
<legal all>
buffer_timestamp
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
This is the Buffer_timestamp field from the
TX_MSDU_DETAILS for this frame from the MSDU link
descriptor.
Timestamp in units of 1024 µs
<legal all>
struct tx_rate_stats_info tx_rate_stats
Consumer: TQM
Producer: SW/SCH(from TXPCU, PDG)
Details for command execution tracking purposes.
sw_peer_id
Field only valid when Release_source_module is set to
release_source_TQM
1) Release of msdu buffer due to drop_frame = 1. Flow is
not fetched and hence sw_peer_id and tid = 0
buffer_or_desc_type = e_num 0
MSDU_rel_buffertqm_release_reason = e_num 1
tqm_rr_rem_cmd_rem
2) Release of msdu buffer due to Flow is not fetched and
hence sw_peer_id and tid = 0
buffer_or_desc_type = e_num 0
MSDU_rel_buffertqm_release_reason = e_num 1
tqm_rr_rem_cmd_rem
3) Release of msdu link due to remove_mpdu or acked_mpdu
command.
buffer_or_desc_type = e_num1
msdu_link_descriptortqm_release_reason can be:e_num 1
tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
Sw_peer_id from the TX_MSDU_FLOW descriptor or
TX_MPDU_QUEUE descriptor
<legal all>
tid
Field only valid when Release_source_module is set to
release_source_TQM
1) Release of msdu buffer due to drop_frame = 1. Flow is
not fetched and hence sw_peer_id and tid = 0
buffer_or_desc_type = e_num 0
MSDU_rel_buffertqm_release_reason = e_num 1
tqm_rr_rem_cmd_rem
2) Release of msdu buffer due to Flow is not fetched and
hence sw_peer_id and tid = 0
buffer_or_desc_type = e_num 0
MSDU_rel_buffertqm_release_reason = e_num 1
tqm_rr_rem_cmd_rem
3) Release of msdu link due to remove_mpdu or acked_mpdu
command.
buffer_or_desc_type = e_num1
msdu_link_descriptortqm_release_reason can be:e_num 1
tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
This field represents the TID from the TX_MSDU_FLOW
descriptor or TX_MPDU_QUEUE descriptor
<legal all>
ring_id
Consumer: TQM/REO/RXDMA/SW
Producer: SRNG (of RXDMA)
For debugging.
This field is filled in by the SRNG module.
It help to identify the ring that is being looked <legal
all>
looping_count
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
A count value that indicates the number of times the
producer of entries into the Buffer Manager Ring has looped
around the ring.
At initialization time, this value is set to 0. On the
first loop, this value is set to 1. After the max value is
reached allowed by the number of bits for this field, the
count value continues with 0 again.
In case SW is the consumer of the ring entries, it can
use this field to figure out up to where the producer of
entries has created new entries. This eliminates the need to
check where the head pointer' of the ring is located once
the SW starts processing an interrupt indicating that new
entries have been put into this ring...
Also note that SW if it wants only needs to look at the
LSB bit of this count value.
<legal all>
*/
/* EXTERNAL REFERENCE : struct buffer_addr_info released_buff_or_desc_addr_info */
/* Description WBM_RELEASE_RING_0_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_31_0
Address (lower 32 bits) of the MSDU buffer OR
MSDU_EXTENSION descriptor OR Link Descriptor
In case of 'NULL' pointer, this field is set to 0
<legal all>
*/
#define WBM_RELEASE_RING_0_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000000
#define WBM_RELEASE_RING_0_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
#define WBM_RELEASE_RING_0_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
/* Description WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_39_32
Address (upper 8 bits) of the MSDU buffer OR
MSDU_EXTENSION descriptor OR Link Descriptor
In case of 'NULL' pointer, this field is set to 0
<legal all>
*/
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000004
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
/* Description WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER
Consumer: WBM
Producer: SW/FW
In case of 'NULL' pointer, this field is set to 0
Indicates to which buffer manager the buffer OR
MSDU_EXTENSION descriptor OR link descriptor that is being
pointed to shall be returned after the frame has been
processed. It is used by WBM for routing purposes.
<enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
to the WMB buffer idle list
<enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
returned to the WMB idle link descriptor idle list
<enum 2 FW_BM> This buffer shall be returned to the FW
<enum 3 SW0_BM> This buffer shall be returned to the SW,
ring 0
<enum 4 SW1_BM> This buffer shall be returned to the SW,
ring 1
<enum 5 SW2_BM> This buffer shall be returned to the SW,
ring 2
<enum 6 SW3_BM> This buffer shall be returned to the SW,
ring 3
<enum 7 SW4_BM> This buffer shall be returned to the SW,
ring 4
<legal all>
*/
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000004
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
/* Description WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_SW_BUFFER_COOKIE
Cookie field exclusively used by SW.
In case of 'NULL' pointer, this field is set to 0
HW ignores the contents, accept that it passes the
programmed value on to other descriptors together with the
physical address
Field can be used by SW to for example associate the
buffers physical address with the virtual address
The bit definitions as used by SW are within SW HLD
specification
NOTE:
The three most significant bits can have a special
meaning in case this struct is embedded in a TX_MPDU_DETAILS
STRUCT, and field transmit_bw_restriction is set
In case of NON punctured transmission:
Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
In case of punctured transmission:
Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
Note: a punctured transmission is indicated by the
presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
TLV
<legal all>
*/
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000004
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
#define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
/* Description WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE
Indicates which module initiated the release of this
buffer or descriptor
<enum 0 release_source_TQM> TQM released this buffer or
descriptor
<enum 1 release_source_RXDMA> RXDMA released this buffer
or descriptor
<enum 2 release_source_REO> REO released this buffer or
descriptor
<enum 3 release_source_FW> FW released this buffer or
descriptor
<enum 4 release_source_SW> SW released this buffer or
descriptor
<legal 0-4>
*/
#define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_LSB 0
#define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_MASK 0x00000007
/* Description WBM_RELEASE_RING_2_BM_ACTION
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
Field only valid when the field return_buffer_manager in
the Released_buff_or_desc_addr_info indicates:
WBM_IDLE_BUF_LIST or
WBM_IDLE_DESC_LIST
An MSDU extension descriptor shall never be marked as
<enum 0 Put_in_idle_list> Put the buffer or descriptor
back in the idle list. In case of MSDU or MDPU link
descriptor, BM does not need to check to release any
individual MSDU buffers
<enum 1 release_msdu_list > This BM action can only be
used in combination with buffer_or_desc_type being
msdu_link_descriptor. Field first_msdu_index points out
which MSDU pointer in the MSDU link descriptor is the first
of an MPDU that is released.
BM shall release all the MSDU buffers linked to this
first MSDU buffer pointer. All related MSDU buffer pointer
entries shall be set to value 0, which represents the 'NULL
pointer. When all MSDU buffer pointers in the MSDU link
descriptor are 'NULL', the MSDU link descriptor itself shall
also be released.
<enum 2 Put_in_idle_list_expanded> CURRENTLY NOT
IMPLEMENTED....
Put the buffer or descriptor back in the idle list. Only
valid in combination with buffer_or_desc_type indicating
MDPU_link_descriptor.
BM shall release the MPDU link descriptor as well as all
MSDUs that are linked to the MPDUs in this descriptor.
<legal 0-2>
*/
#define WBM_RELEASE_RING_2_BM_ACTION_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_BM_ACTION_LSB 3
#define WBM_RELEASE_RING_2_BM_ACTION_MASK 0x00000038
/* Description WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
Field only valid when WBM is marked as the
return_buffer_manager in the Released_Buffer_address_info
Indicates that type of buffer or descriptor is being
released
<enum 0 MSDU_rel_buffer> The address points to an MSDU
buffer
<enum 1 msdu_link_descriptor> The address points to an
TX MSDU link descriptor
<enum 2 mpdu_link_descriptor> The address points to an
MPDU link descriptor
<enum 3 msdu_ext_descriptor > The address points to an
MSDU extension descriptor.
In case BM finds this one in a release ring, it passes
it on to FW...
<enum 4 queue_ext_descriptor> The address points to an
TQM queue extension descriptor. WBM should treat this is the
same way as a link descriptor. That is, put the 128 byte
buffer back in the link buffer idle list.
<legal 0-4>
*/
#define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_LSB 6
#define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_MASK 0x000001c0
/* Description WBM_RELEASE_RING_2_FIRST_MSDU_INDEX
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
Field only valid for the bm_action release_msdu_list.
The index of the first MSDU in an MSDU link descriptor
all belonging to the same MPDU.
<legal 0-6>
*/
#define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_LSB 9
#define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_MASK 0x00001e00
/* Description WBM_RELEASE_RING_2_TQM_RELEASE_REASON
Consumer: WBM/SW/FW
Producer: TQM
Field only valid when Release_source_module is set to
release_source_TQM
(rr = Release Reason)
<enum 0 tqm_rr_frame_acked> frame is removed because an
ACK of BA for it was received
<enum 1 tqm_rr_rem_cmd_rem> frame is removed because a
remove command of type Remove_mpdus initiated by SW
<enum 2 tqm_rr_rem_cmd_tx> frame is removed because a
remove command of type Remove_transmitted_mpdus initiated by
SW
<enum 3 tqm_rr_rem_cmd_notx> frame is removed because a
remove command of type Remove_untransmitted_mpdus initiated
by SW
<enum 4 tqm_rr_rem_cmd_aged> frame is removed because a
remove command of type Remove_aged_mpdus or
Remove_aged_msdus initiated by SW
<enum 5 tqm_fw_reason1> frame is removed because a
remove command where fw indicated that remove reason is
fw_reason1
<enum 6 tqm_fw_reason2> frame is removed because a
remove command where fw indicated that remove reason is
fw_reason1
<enum 7 tqm_fw_reason3> frame is removed because a
remove command where fw indicated that remove reason is
fw_reason1
<enum 8 tqm_rr_rem_cmd_disable_queue> frame is removed
because a remove command of type
remove_mpdus_and_disable_queue or
remove_msdus_and_disable_flow initiated by SW
<legal 0-8>
*/
#define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_LSB 13
#define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_MASK 0x0001e000
/* Description WBM_RELEASE_RING_2_RXDMA_PUSH_REASON
Field only valid when Release_source_module is set to
release_source_RXDMA
Indicates why rxdma pushed the frame to this ring
<enum 0 rxdma_error_detected> RXDMA detected an error an
pushed this frame to this queue
<enum 1 rxdma_routing_instruction> RXDMA pushed the
frame to this queue per received routing instructions. No
error within RXDMA was detected
<enum 2 rxdma_rx_flush> RXDMA received an RX_FLUSH. As a
result the MSDU link descriptor might not have the
last_msdu_in_mpdu_flag set, but instead WBM might just see a
NULL pointer in the MSDU link descriptor. This is to be
considered a normal condition for this scenario.
<legal 0 - 2>
*/
#define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_LSB 17
#define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_MASK 0x00060000
/* Description WBM_RELEASE_RING_2_RXDMA_ERROR_CODE
Field only valid when 'rxdma_push_reason' set to
'rxdma_error_detected'.
<enum 0 rxdma_overflow_err>MPDU frame is not complete
due to a FIFO overflow error in RXPCU.
<enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
due to receiving incomplete MPDU from the PHY
<enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
error or CRYPTO received an encrypted frame, but did not get
a valid corresponding key id in the peer entry.
<enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
error
<enum 5 rxdma_unecrypted_err>CRYPTO reported an
unencrypted frame error when encrypted was expected
<enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
length error
<enum 7 rxdma_msdu_limit_err>RX OLE reported that max
number of MSDUs allowed in an MPDU got exceeded
<enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
error
<enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
parsing error
<enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
during SA search
<enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
during DA search
<enum 12 rxdma_flow_timeout_err>RX OLE reported a
timeout during flow search
<enum 13 rxdma_flush_request>RXDMA received a flush
request
<enum 14 rxdma_amsdu_fragment_err>Rx PCU reported A-MSDU
present as well as a fragmented MPDU. A-MSDU defragmentation
is not supported in Lithium SW so this is treated as an
error.
*/
#define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_LSB 19
#define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_MASK 0x00f80000
/* Description WBM_RELEASE_RING_2_REO_PUSH_REASON
Field only valid when Release_source_module is set to
release_source_REO
Indicates why REO pushed the frame to this release ring
<enum 0 reo_error_detected> Reo detected an error an
pushed this frame to this queue
<enum 1 reo_routing_instruction> Reo pushed the frame to
this queue per received routing instructions. No error
within REO was detected
<legal 0 - 1>
*/
#define WBM_RELEASE_RING_2_REO_PUSH_REASON_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_REO_PUSH_REASON_LSB 24
#define WBM_RELEASE_RING_2_REO_PUSH_REASON_MASK 0x03000000
/* Description WBM_RELEASE_RING_2_REO_ERROR_CODE
Field only valid when 'Reo_push_reason' set to
'reo_error_detected'.
<enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
provided in the REO_ENTRANCE ring is set to 0
<enum 1 reo_queue_desc_not_valid> Reo queue descriptor
valid bit is NOT set
<enum 2 ampdu_in_non_ba> AMPDU frame received without BA
session having been setup.
<enum 3 non_ba_duplicate> Non-BA session, SN equal to
SSN, Retry bit set: duplicate frame
<enum 4 ba_duplicate> BA session, duplicate frame
<enum 5 regular_frame_2k_jump> A normal (management/data
frame) received with 2K jump in SN
<enum 6 bar_frame_2k_jump> A bar received with 2K jump
in SSN
<enum 7 regular_frame_OOR> A normal (management/data
frame) received with SN falling within the OOR window
<enum 8 bar_frame_OOR> A bar received with SSN falling
within the OOR window
<enum 9 bar_frame_no_ba_session> A bar received without
a BA session
<enum 10 bar_frame_sn_equals_ssn> A bar received with
SSN equal to SN
<enum 11 pn_check_failed> PN Check Failed packet.
<enum 12 2k_error_handling_flag_set> Frame is forwarded
as a result of the 'Seq_2k_error_detected_flag' been set in
the REO Queue descriptor
<enum 13 pn_error_handling_flag_set> Frame is forwarded
as a result of the 'pn_error_detected_flag' been set in the
REO Queue descriptor
<enum 14 queue_descriptor_blocked_set> Frame is
forwarded as a result of the queue descriptor(address) being
blocked as SW/FW seems to be currently in the process of
making updates to this descriptor...
<legal 0-14>
*/
#define WBM_RELEASE_RING_2_REO_ERROR_CODE_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_REO_ERROR_CODE_LSB 26
#define WBM_RELEASE_RING_2_REO_ERROR_CODE_MASK 0x7c000000
/* Description WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR
Can only be set by WBM.
Is set when WBM got a buffer pointer but the action was
to push it to the idle link descriptor ring or do link
related activity
OR
Is set when WBM got a link buffer pointer but the action
was to push it to the buffer descriptor ring
<legal all>
*/
#define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_OFFSET 0x00000008
#define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_LSB 31
#define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_MASK 0x80000000
/* Description WBM_RELEASE_RING_3_TQM_STATUS_NUMBER
Field only valid when Release_source_module is set to
release_source_TQM
The value in this field is equal to value of the
'TQM_CMD_Number' field the TQM command or the
'TQM_add_cmd_Number' field from the TQM entrance ring
descriptor
This field helps to correlate the statuses with the TQM
commands.
NOTE that SW could program this number to be equal to
the PPDU_ID number in case direct correlation with the PPDU
ID is desired
<legal all>
*/
#define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_OFFSET 0x0000000c
#define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_LSB 0
#define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_MASK 0x00ffffff
/* Description WBM_RELEASE_RING_3_TRANSMIT_COUNT
Field only valid when Release_source_module is set to
release_source_TQM
The number of times this frame has been transmitted
*/
#define WBM_RELEASE_RING_3_TRANSMIT_COUNT_OFFSET 0x0000000c
#define WBM_RELEASE_RING_3_TRANSMIT_COUNT_LSB 24
#define WBM_RELEASE_RING_3_TRANSMIT_COUNT_MASK 0x7f000000
/* Description WBM_RELEASE_RING_3_MSDU_CONTINUATION
FR53947 requests MSDU_continuation reporting for Rx
MSDUs in Pine and HastingsPrime for which
SW_release_details_valid may not be set.
<legal all>
*/
#define WBM_RELEASE_RING_3_MSDU_CONTINUATION_OFFSET 0x0000000c
#define WBM_RELEASE_RING_3_MSDU_CONTINUATION_LSB 31
#define WBM_RELEASE_RING_3_MSDU_CONTINUATION_MASK 0x80000000
/* Description WBM_RELEASE_RING_4_ACK_FRAME_RSSI
This field is only valid when the source is TQM.
If this frame is removed as the result of the reception
of an ACK or BA, this field indicates the RSSI of the
received ACK or BA frame.
When the frame is removed as result of a direct remove
command from the SW, this field is set to 0x0 (which is
never a valid value when real RSSI is available)
<legal all>
*/
#define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_OFFSET 0x00000010
#define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_LSB 0
#define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_MASK 0x000000ff
/* Description WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID
Consumer: SW
Producer: WBM
When set, some WBM specific release info for SW is
valid.
This is set when WMB got a 'release_msdu_list' command
from TQM and the return buffer manager is not WMB. WBM will
then de-aggregate all the MSDUs and pass them one at a time
on to the 'buffer owner'
<legal all>
*/
#define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_OFFSET 0x00000010
#define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_LSB 8
#define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_MASK 0x00000100
/* Description WBM_RELEASE_RING_4_FIRST_MSDU
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
When set, this MSDU is the first MSDU pointed to in the
'release_msdu_list' command.
FR53947 extends this to Rx MSDUs in Pine and
HastingsPrime for which SW_release_details_valid may not be
set.
<legal all>
*/
#define WBM_RELEASE_RING_4_FIRST_MSDU_OFFSET 0x00000010
#define WBM_RELEASE_RING_4_FIRST_MSDU_LSB 9
#define WBM_RELEASE_RING_4_FIRST_MSDU_MASK 0x00000200
/* Description WBM_RELEASE_RING_4_LAST_MSDU
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
When set, this MSDU is the last MSDU pointed to in the
'release_msdu_list' command.
FR53947 extends this to Rx MSDUs in Pine and
HastingsPrime for which SW_release_details_valid may not be
set.
<legal all>
*/
#define WBM_RELEASE_RING_4_LAST_MSDU_OFFSET 0x00000010
#define WBM_RELEASE_RING_4_LAST_MSDU_LSB 10
#define WBM_RELEASE_RING_4_LAST_MSDU_MASK 0x00000400
/* Description WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
When set, this MSDU was part of an A-MSDU in MPDU
<legal all>
*/
#define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_OFFSET 0x00000010
#define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_LSB 11
#define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_MASK 0x00000800
/* Description WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
This is the FW_tx_notify_frame field from the
<legal all>
*/
#define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_OFFSET 0x00000010
#define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_LSB 12
#define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_MASK 0x00001000
/* Description WBM_RELEASE_RING_4_BUFFER_TIMESTAMP
Field only valid when SW_release_details_valid is set.
Consumer: SW
Producer: WBM
This is the Buffer_timestamp field from the
TX_MSDU_DETAILS for this frame from the MSDU link
descriptor.
Timestamp in units of 1024 µs
<legal all>
*/
#define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_OFFSET 0x00000010
#define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_LSB 13
#define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_MASK 0xffffe000
/* EXTERNAL REFERENCE : struct tx_rate_stats_info tx_rate_stats */
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_TX_RATE_STATS_INFO_VALID
When set all other fields in this STRUCT contain valid
info.
<legal all>
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TX_RATE_STATS_INFO_VALID_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TX_RATE_STATS_INFO_VALID_LSB 0
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TX_RATE_STATS_INFO_VALID_MASK 0x00000001
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_BW
Field only valid when Tx_rate_stats_info_valid is set
Indicates the BW of the upcoming transmission that shall
likely start in about 3 -4 us on the medium
<enum 0 transmit_bw_20_MHz>
<enum 1 transmit_bw_40_MHz>
<enum 2 transmit_bw_80_MHz>
<enum 3 transmit_bw_160_MHz>
<legal all>
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_BW_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_BW_LSB 1
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_BW_MASK 0x00000006
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_PKT_TYPE
Field only valid when Tx_rate_stats_info_valid is set
Field filled in by PDG.
Not valid when in SW transmit mode
The packet type
<enum 0 dot11a>802.11a PPDU type
<enum 1 dot11b>802.11b PPDU type
<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
<enum 3 dot11ac>802.11ac PPDU type
<enum 4 dot11ax>802.11ax PPDU type
<enum 5 dot11ba>802.11ba (WUR) PPDU type
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_PKT_TYPE_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_PKT_TYPE_LSB 3
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_PKT_TYPE_MASK 0x00000078
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_STBC
Field only valid when Tx_rate_stats_info_valid is set
Field filled in by PDG.
Not valid when in SW transmit mode
When set, STBC transmission rate was used.
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_STBC_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_STBC_LSB 7
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_STBC_MASK 0x00000080
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_LDPC
Field only valid when Tx_rate_stats_info_valid is set
Field filled in by PDG.
Not valid when in SW transmit mode
When set, use LDPC transmission rates
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_LDPC_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_LDPC_LSB 8
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_LDPC_MASK 0x00000100
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_SGI
Field only valid when Tx_rate_stats_info_valid is set
Field filled in by PDG.
Not valid when in SW transmit mode
<enum 0 0_8_us_sgi > Legacy normal GI. Can also be
used for HE
<enum 1 0_4_us_sgi > Legacy short GI. Can also be
used for HE
<enum 2 1_6_us_sgi > HE related GI
<enum 3 3_2_us_sgi > HE related GI
<legal 0 - 3>
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_SGI_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_SGI_LSB 9
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_SGI_MASK 0x00000600
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_MCS
Field only valid when Tx_rate_stats_info_valid is set
Field filled in by PDG.
Not valid when in SW transmit mode
For details, refer to MCS_TYPE description
<legal all>
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_MCS_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_MCS_LSB 11
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_MCS_MASK 0x00007800
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_OFDMA_TRANSMISSION
Field only valid when Tx_rate_stats_info_valid is set
Field filled in by PDG.
Set when the transmission was an OFDMA transmission (DL
or UL).
<legal all>
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_OFDMA_TRANSMISSION_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_OFDMA_TRANSMISSION_LSB 15
#define WBM_RELEASE_RING_5_TX_RATE_STATS_OFDMA_TRANSMISSION_MASK 0x00008000
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_TONES_IN_RU
Field only valid when Tx_rate_stats_info_valid is set
Field filled in by PDG.
Not valid when in SW transmit mode
The number of tones in the RU used.
<legal all>
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TONES_IN_RU_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TONES_IN_RU_LSB 16
#define WBM_RELEASE_RING_5_TX_RATE_STATS_TONES_IN_RU_MASK 0x0fff0000
/* Description WBM_RELEASE_RING_5_TX_RATE_STATS_RESERVED_0A
<legal 0>
*/
#define WBM_RELEASE_RING_5_TX_RATE_STATS_RESERVED_0A_OFFSET 0x00000014
#define WBM_RELEASE_RING_5_TX_RATE_STATS_RESERVED_0A_LSB 28
#define WBM_RELEASE_RING_5_TX_RATE_STATS_RESERVED_0A_MASK 0xf0000000
/* Description WBM_RELEASE_RING_6_TX_RATE_STATS_PPDU_TRANSMISSION_TSF
Field only valid when Tx_rate_stats_info_valid is set
Based on a HWSCH configuration register setting, this
field either contains:
Lower 32 bits of the TSF, snapshot of this value when
transmission of the PPDU containing the frame finished.
OR
Lower 32 bits of the TSF, snapshot of this value when
transmission of the PPDU containing the frame started
<legal all>
*/
#define WBM_RELEASE_RING_6_TX_RATE_STATS_PPDU_TRANSMISSION_TSF_OFFSET 0x00000018
#define WBM_RELEASE_RING_6_TX_RATE_STATS_PPDU_TRANSMISSION_TSF_LSB 0
#define WBM_RELEASE_RING_6_TX_RATE_STATS_PPDU_TRANSMISSION_TSF_MASK 0xffffffff
/* Description WBM_RELEASE_RING_7_SW_PEER_ID
Field only valid when Release_source_module is set to
release_source_TQM
1) Release of msdu buffer due to drop_frame = 1. Flow is
not fetched and hence sw_peer_id and tid = 0
buffer_or_desc_type = e_num 0
MSDU_rel_buffertqm_release_reason = e_num 1
tqm_rr_rem_cmd_rem
2) Release of msdu buffer due to Flow is not fetched and
hence sw_peer_id and tid = 0
buffer_or_desc_type = e_num 0
MSDU_rel_buffertqm_release_reason = e_num 1
tqm_rr_rem_cmd_rem
3) Release of msdu link due to remove_mpdu or acked_mpdu
command.
buffer_or_desc_type = e_num1
msdu_link_descriptortqm_release_reason can be:e_num 1
tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
Sw_peer_id from the TX_MSDU_FLOW descriptor or
TX_MPDU_QUEUE descriptor
<legal all>
*/
#define WBM_RELEASE_RING_7_SW_PEER_ID_OFFSET 0x0000001c
#define WBM_RELEASE_RING_7_SW_PEER_ID_LSB 0
#define WBM_RELEASE_RING_7_SW_PEER_ID_MASK 0x0000ffff
/* Description WBM_RELEASE_RING_7_TID
Field only valid when Release_source_module is set to
release_source_TQM
1) Release of msdu buffer due to drop_frame = 1. Flow is
not fetched and hence sw_peer_id and tid = 0
buffer_or_desc_type = e_num 0
MSDU_rel_buffertqm_release_reason = e_num 1
tqm_rr_rem_cmd_rem
2) Release of msdu buffer due to Flow is not fetched and
hence sw_peer_id and tid = 0
buffer_or_desc_type = e_num 0
MSDU_rel_buffertqm_release_reason = e_num 1
tqm_rr_rem_cmd_rem
3) Release of msdu link due to remove_mpdu or acked_mpdu
command.
buffer_or_desc_type = e_num1
msdu_link_descriptortqm_release_reason can be:e_num 1
tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
This field represents the TID from the TX_MSDU_FLOW
descriptor or TX_MPDU_QUEUE descriptor
<legal all>
*/
#define WBM_RELEASE_RING_7_TID_OFFSET 0x0000001c
#define WBM_RELEASE_RING_7_TID_LSB 16
#define WBM_RELEASE_RING_7_TID_MASK 0x000f0000
/* Description WBM_RELEASE_RING_7_RING_ID
Consumer: TQM/REO/RXDMA/SW
Producer: SRNG (of RXDMA)
For debugging.
This field is filled in by the SRNG module.
It help to identify the ring that is being looked <legal
all>
*/
#define WBM_RELEASE_RING_7_RING_ID_OFFSET 0x0000001c
#define WBM_RELEASE_RING_7_RING_ID_LSB 20
#define WBM_RELEASE_RING_7_RING_ID_MASK 0x0ff00000
/* Description WBM_RELEASE_RING_7_LOOPING_COUNT
Consumer: WBM/SW/FW
Producer: SW/TQM/RXDMA/REO/SWITCH
A count value that indicates the number of times the
producer of entries into the Buffer Manager Ring has looped
around the ring.
At initialization time, this value is set to 0. On the
first loop, this value is set to 1. After the max value is
reached allowed by the number of bits for this field, the
count value continues with 0 again.
In case SW is the consumer of the ring entries, it can
use this field to figure out up to where the producer of
entries has created new entries. This eliminates the need to
check where the head pointer' of the ring is located once
the SW starts processing an interrupt indicating that new
entries have been put into this ring...
Also note that SW if it wants only needs to look at the
LSB bit of this count value.
<legal all>
*/
#define WBM_RELEASE_RING_7_LOOPING_COUNT_OFFSET 0x0000001c
#define WBM_RELEASE_RING_7_LOOPING_COUNT_LSB 28
#define WBM_RELEASE_RING_7_LOOPING_COUNT_MASK 0xf0000000
#endif // _WBM_RELEASE_RING_H_