xref: /wlan-driver/fw-api/hw/wcn6450/v1/wbm_release_ring.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name 
2*5113495bSYour Name /*
3*5113495bSYour Name  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name 
21*5113495bSYour Name 
22*5113495bSYour Name #ifndef _WBM_RELEASE_RING_H_
23*5113495bSYour Name #define _WBM_RELEASE_RING_H_
24*5113495bSYour Name #if !defined(__ASSEMBLER__)
25*5113495bSYour Name #endif
26*5113495bSYour Name 
27*5113495bSYour Name #include "buffer_addr_info.h"
28*5113495bSYour Name #include "tx_rate_stats_info.h"
29*5113495bSYour Name 
30*5113495bSYour Name #define NUM_OF_DWORDS_WBM_RELEASE_RING 8
31*5113495bSYour Name 
32*5113495bSYour Name struct wbm_release_ring {
33*5113495bSYour Name     struct            buffer_addr_info                       released_buff_or_desc_addr_info;
34*5113495bSYour Name              uint32_t release_source_module           :  3,
35*5113495bSYour Name                       bm_action                       :  3,
36*5113495bSYour Name                       buffer_or_desc_type             :  3,
37*5113495bSYour Name                       first_msdu_index                :  4,
38*5113495bSYour Name                       tqm_release_reason              :  4,
39*5113495bSYour Name                       rxdma_push_reason               :  2,
40*5113495bSYour Name                       rxdma_error_code                :  5,
41*5113495bSYour Name                       reo_push_reason                 :  2,
42*5113495bSYour Name                       reo_error_code                  :  5,
43*5113495bSYour Name                       wbm_internal_error              :  1;
44*5113495bSYour Name              uint32_t tqm_status_number               : 24,
45*5113495bSYour Name                       transmit_count                  :  7,
46*5113495bSYour Name                       msdu_continuation               :  1;
47*5113495bSYour Name              uint32_t ack_frame_rssi                  :  8,
48*5113495bSYour Name                       sw_release_details_valid        :  1,
49*5113495bSYour Name                       first_msdu                      :  1,
50*5113495bSYour Name                       last_msdu                       :  1,
51*5113495bSYour Name                       msdu_part_of_amsdu              :  1,
52*5113495bSYour Name                       fw_tx_notify_frame              :  1,
53*5113495bSYour Name                       buffer_timestamp                : 19;
54*5113495bSYour Name     struct            tx_rate_stats_info                       tx_rate_stats;
55*5113495bSYour Name              uint32_t sw_peer_id                      : 16,
56*5113495bSYour Name                       tid                             :  4,
57*5113495bSYour Name                       ring_id                         :  8,
58*5113495bSYour Name                       looping_count                   :  4;
59*5113495bSYour Name };
60*5113495bSYour Name 
61*5113495bSYour Name #define WBM_RELEASE_RING_0_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000000
62*5113495bSYour Name #define WBM_RELEASE_RING_0_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
63*5113495bSYour Name #define WBM_RELEASE_RING_0_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
64*5113495bSYour Name 
65*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000004
66*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
67*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
68*5113495bSYour Name 
69*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000004
70*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
71*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
72*5113495bSYour Name 
73*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000004
74*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
75*5113495bSYour Name #define WBM_RELEASE_RING_1_RELEASED_BUFF_OR_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
76*5113495bSYour Name 
77*5113495bSYour Name #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_OFFSET              0x00000008
78*5113495bSYour Name #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_LSB                 0
79*5113495bSYour Name #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_MASK                0x00000007
80*5113495bSYour Name 
81*5113495bSYour Name #define WBM_RELEASE_RING_2_BM_ACTION_OFFSET                          0x00000008
82*5113495bSYour Name #define WBM_RELEASE_RING_2_BM_ACTION_LSB                             3
83*5113495bSYour Name #define WBM_RELEASE_RING_2_BM_ACTION_MASK                            0x00000038
84*5113495bSYour Name 
85*5113495bSYour Name #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_OFFSET                0x00000008
86*5113495bSYour Name #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_LSB                   6
87*5113495bSYour Name #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_MASK                  0x000001c0
88*5113495bSYour Name 
89*5113495bSYour Name #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_OFFSET                   0x00000008
90*5113495bSYour Name #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_LSB                      9
91*5113495bSYour Name #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_MASK                     0x00001e00
92*5113495bSYour Name 
93*5113495bSYour Name #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_OFFSET                 0x00000008
94*5113495bSYour Name #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_LSB                    13
95*5113495bSYour Name #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_MASK                   0x0001e000
96*5113495bSYour Name 
97*5113495bSYour Name #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_OFFSET                  0x00000008
98*5113495bSYour Name #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_LSB                     17
99*5113495bSYour Name #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_MASK                    0x00060000
100*5113495bSYour Name 
101*5113495bSYour Name #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_OFFSET                   0x00000008
102*5113495bSYour Name #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_LSB                      19
103*5113495bSYour Name #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_MASK                     0x00f80000
104*5113495bSYour Name 
105*5113495bSYour Name #define WBM_RELEASE_RING_2_REO_PUSH_REASON_OFFSET                    0x00000008
106*5113495bSYour Name #define WBM_RELEASE_RING_2_REO_PUSH_REASON_LSB                       24
107*5113495bSYour Name #define WBM_RELEASE_RING_2_REO_PUSH_REASON_MASK                      0x03000000
108*5113495bSYour Name 
109*5113495bSYour Name #define WBM_RELEASE_RING_2_REO_ERROR_CODE_OFFSET                     0x00000008
110*5113495bSYour Name #define WBM_RELEASE_RING_2_REO_ERROR_CODE_LSB                        26
111*5113495bSYour Name #define WBM_RELEASE_RING_2_REO_ERROR_CODE_MASK                       0x7c000000
112*5113495bSYour Name 
113*5113495bSYour Name #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_OFFSET                 0x00000008
114*5113495bSYour Name #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_LSB                    31
115*5113495bSYour Name #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_MASK                   0x80000000
116*5113495bSYour Name 
117*5113495bSYour Name #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_OFFSET                  0x0000000c
118*5113495bSYour Name #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_LSB                     0
119*5113495bSYour Name #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_MASK                    0x00ffffff
120*5113495bSYour Name 
121*5113495bSYour Name #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_OFFSET                     0x0000000c
122*5113495bSYour Name #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_LSB                        24
123*5113495bSYour Name #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_MASK                       0x7f000000
124*5113495bSYour Name 
125*5113495bSYour Name #define WBM_RELEASE_RING_3_MSDU_CONTINUATION_OFFSET                  0x0000000c
126*5113495bSYour Name #define WBM_RELEASE_RING_3_MSDU_CONTINUATION_LSB                     31
127*5113495bSYour Name #define WBM_RELEASE_RING_3_MSDU_CONTINUATION_MASK                    0x80000000
128*5113495bSYour Name 
129*5113495bSYour Name #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_OFFSET                     0x00000010
130*5113495bSYour Name #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_LSB                        0
131*5113495bSYour Name #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_MASK                       0x000000ff
132*5113495bSYour Name 
133*5113495bSYour Name #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_OFFSET           0x00000010
134*5113495bSYour Name #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_LSB              8
135*5113495bSYour Name #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_MASK             0x00000100
136*5113495bSYour Name 
137*5113495bSYour Name #define WBM_RELEASE_RING_4_FIRST_MSDU_OFFSET                         0x00000010
138*5113495bSYour Name #define WBM_RELEASE_RING_4_FIRST_MSDU_LSB                            9
139*5113495bSYour Name #define WBM_RELEASE_RING_4_FIRST_MSDU_MASK                           0x00000200
140*5113495bSYour Name 
141*5113495bSYour Name #define WBM_RELEASE_RING_4_LAST_MSDU_OFFSET                          0x00000010
142*5113495bSYour Name #define WBM_RELEASE_RING_4_LAST_MSDU_LSB                             10
143*5113495bSYour Name #define WBM_RELEASE_RING_4_LAST_MSDU_MASK                            0x00000400
144*5113495bSYour Name 
145*5113495bSYour Name #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_OFFSET                 0x00000010
146*5113495bSYour Name #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_LSB                    11
147*5113495bSYour Name #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_MASK                   0x00000800
148*5113495bSYour Name 
149*5113495bSYour Name #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_OFFSET                 0x00000010
150*5113495bSYour Name #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_LSB                    12
151*5113495bSYour Name #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_MASK                   0x00001000
152*5113495bSYour Name 
153*5113495bSYour Name #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_OFFSET                   0x00000010
154*5113495bSYour Name #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_LSB                      13
155*5113495bSYour Name #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_MASK                     0xffffe000
156*5113495bSYour Name 
157*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TX_RATE_STATS_INFO_VALID_OFFSET 0x00000014
158*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TX_RATE_STATS_INFO_VALID_LSB 0
159*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TX_RATE_STATS_INFO_VALID_MASK 0x00000001
160*5113495bSYour Name 
161*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_BW_OFFSET          0x00000014
162*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_BW_LSB             1
163*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_BW_MASK            0x00000006
164*5113495bSYour Name 
165*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_PKT_TYPE_OFFSET    0x00000014
166*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_PKT_TYPE_LSB       3
167*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_PKT_TYPE_MASK      0x00000078
168*5113495bSYour Name 
169*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_STBC_OFFSET        0x00000014
170*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_STBC_LSB           7
171*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_STBC_MASK          0x00000080
172*5113495bSYour Name 
173*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_LDPC_OFFSET        0x00000014
174*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_LDPC_LSB           8
175*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_LDPC_MASK          0x00000100
176*5113495bSYour Name 
177*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_SGI_OFFSET         0x00000014
178*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_SGI_LSB            9
179*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_SGI_MASK           0x00000600
180*5113495bSYour Name 
181*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_MCS_OFFSET         0x00000014
182*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_MCS_LSB            11
183*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TRANSMIT_MCS_MASK           0x00007800
184*5113495bSYour Name 
185*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_OFDMA_TRANSMISSION_OFFSET   0x00000014
186*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_OFDMA_TRANSMISSION_LSB      15
187*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_OFDMA_TRANSMISSION_MASK     0x00008000
188*5113495bSYour Name 
189*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TONES_IN_RU_OFFSET          0x00000014
190*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TONES_IN_RU_LSB             16
191*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_TONES_IN_RU_MASK            0x0fff0000
192*5113495bSYour Name 
193*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_RESERVED_0A_OFFSET          0x00000014
194*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_RESERVED_0A_LSB             28
195*5113495bSYour Name #define WBM_RELEASE_RING_5_TX_RATE_STATS_RESERVED_0A_MASK            0xf0000000
196*5113495bSYour Name 
197*5113495bSYour Name #define WBM_RELEASE_RING_6_TX_RATE_STATS_PPDU_TRANSMISSION_TSF_OFFSET 0x00000018
198*5113495bSYour Name #define WBM_RELEASE_RING_6_TX_RATE_STATS_PPDU_TRANSMISSION_TSF_LSB   0
199*5113495bSYour Name #define WBM_RELEASE_RING_6_TX_RATE_STATS_PPDU_TRANSMISSION_TSF_MASK  0xffffffff
200*5113495bSYour Name 
201*5113495bSYour Name #define WBM_RELEASE_RING_7_SW_PEER_ID_OFFSET                         0x0000001c
202*5113495bSYour Name #define WBM_RELEASE_RING_7_SW_PEER_ID_LSB                            0
203*5113495bSYour Name #define WBM_RELEASE_RING_7_SW_PEER_ID_MASK                           0x0000ffff
204*5113495bSYour Name 
205*5113495bSYour Name #define WBM_RELEASE_RING_7_TID_OFFSET                                0x0000001c
206*5113495bSYour Name #define WBM_RELEASE_RING_7_TID_LSB                                   16
207*5113495bSYour Name #define WBM_RELEASE_RING_7_TID_MASK                                  0x000f0000
208*5113495bSYour Name 
209*5113495bSYour Name #define WBM_RELEASE_RING_7_RING_ID_OFFSET                            0x0000001c
210*5113495bSYour Name #define WBM_RELEASE_RING_7_RING_ID_LSB                               20
211*5113495bSYour Name #define WBM_RELEASE_RING_7_RING_ID_MASK                              0x0ff00000
212*5113495bSYour Name 
213*5113495bSYour Name #define WBM_RELEASE_RING_7_LOOPING_COUNT_OFFSET                      0x0000001c
214*5113495bSYour Name #define WBM_RELEASE_RING_7_LOOPING_COUNT_LSB                         28
215*5113495bSYour Name #define WBM_RELEASE_RING_7_LOOPING_COUNT_MASK                        0xf0000000
216*5113495bSYour Name 
217*5113495bSYour Name #endif
218