summaryrefslogtreecommitdiff
path: root/hw/wcn6450/v1/wbm_release_ring.h
blob: 37e37b06e1ccbeeaba307fda7a1252d38d8e6d3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217

/*
 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. 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.
 */



#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"

#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,
                      bm_action                       :  3,
                      buffer_or_desc_type             :  3,
                      first_msdu_index                :  4,
                      tqm_release_reason              :  4,
                      rxdma_push_reason               :  2,
                      rxdma_error_code                :  5,
                      reo_push_reason                 :  2,
                      reo_error_code                  :  5,
                      wbm_internal_error              :  1;
             uint32_t tqm_status_number               : 24,
                      transmit_count                  :  7,
                      msdu_continuation               :  1;
             uint32_t ack_frame_rssi                  :  8,
                      sw_release_details_valid        :  1,
                      first_msdu                      :  1,
                      last_msdu                       :  1,
                      msdu_part_of_amsdu              :  1,
                      fw_tx_notify_frame              :  1,
                      buffer_timestamp                : 19;
    struct            tx_rate_stats_info                       tx_rate_stats;
             uint32_t sw_peer_id                      : 16,
                      tid                             :  4,
                      ring_id                         :  8,
                      looping_count                   :  4;
};

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#define WBM_RELEASE_RING_7_TID_OFFSET                                0x0000001c
#define WBM_RELEASE_RING_7_TID_LSB                                   16
#define WBM_RELEASE_RING_7_TID_MASK                                  0x000f0000

#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

#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