1 /*
2 * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
3 * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for
6 * any purpose with or without fee is hereby granted, provided that the
7 * above copyright notice and this permission notice appear in all
8 * copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17 * PERFORMANCE OF THIS SOFTWARE.
18 */
19
20 #include "wlan_ipa_ucfg_api.h"
21 #include "wlan_ipa_main.h"
22 #if defined(CONFIG_HL_SUPPORT)
23 #include "wlan_tgt_def_config_hl.h"
24 #else
25 #include "wlan_tgt_def_config.h"
26 #endif
27
28 #include "qdf_trace.h"
29 #include "qdf_mem.h"
30 #include <cdp_txrx_ops.h>
31 #include "wlan_cfg.h"
32 #include "cfg_ucfg_api.h"
33 #include "hal_api.h"
34 #include "dp_types.h"
35 #include <qdf_module.h>
36
37 /*
38 * The max allowed size for tx comp ring is 8191.
39 * This is limited by h/w ring max size.
40 * As this is not a power of 2 it does not work with nss offload so the
41 * nearest available size which is power of 2 is 4096 chosen for nss
42 */
43
44 #define WLAN_CFG_TX_RING_MASK_0 BIT(0)
45 #define WLAN_CFG_TX_RING_MASK_1 BIT(1)
46 #define WLAN_CFG_TX_RING_MASK_2 BIT(2)
47 #define WLAN_CFG_TX_RING_MASK_3 BIT(3)
48 #define WLAN_CFG_TX_RING_MASK_4 BIT(4)
49 #define WLAN_CFG_TX_RING_MASK_5 BIT(5)
50 #define WLAN_CFG_TX_RING_MASK_6 BIT(6)
51 #define WLAN_CFG_TX_RING_MASK_7 BIT(7)
52
53
54 #define WLAN_CFG_RX_MON_RING_MASK_0 0x1
55 #define WLAN_CFG_RX_MON_RING_MASK_1 0x2
56 #define WLAN_CFG_RX_MON_RING_MASK_2 0x4
57 #define WLAN_CFG_RX_MON_RING_MASK_3 0x0
58
59 #define WLAN_CFG_TX_MON_RING_MASK_0 BIT(0)
60 #define WLAN_CFG_TX_MON_RING_MASK_1 BIT(1)
61
62 #define WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 0x1
63 #define WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1 0x2
64 #define WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2 0x4
65
66 #define WLAN_CFG_HOST2TXMON_RING_MASK_0 0x1
67
68 #define WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 0x1
69 #define WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1 0x2
70 #define WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2 0x4
71
72 #define WLAN_CFG_RX_ERR_RING_MASK_0 0x1
73 #define WLAN_CFG_RX_ERR_RING_MASK_1 0x0
74 #define WLAN_CFG_RX_ERR_RING_MASK_2 0x0
75 #define WLAN_CFG_RX_ERR_RING_MASK_3 0x0
76
77 #define WLAN_CFG_RX_WBM_REL_RING_MASK_0 0x1
78 #define WLAN_CFG_RX_WBM_REL_RING_MASK_1 0x0
79 #define WLAN_CFG_RX_WBM_REL_RING_MASK_2 0x0
80 #define WLAN_CFG_RX_WBM_REL_RING_MASK_3 0x0
81
82 #define WLAN_CFG_REO_STATUS_RING_MASK_0 0x1
83 #define WLAN_CFG_REO_STATUS_RING_MASK_1 0x0
84 #define WLAN_CFG_REO_STATUS_RING_MASK_2 0x0
85 #define WLAN_CFG_REO_STATUS_RING_MASK_3 0x0
86
87 #define WLAN_CFG_RXDMA2HOST_RING_MASK_0 0x1
88 #define WLAN_CFG_RXDMA2HOST_RING_MASK_1 0x2
89 #define WLAN_CFG_RXDMA2HOST_RING_MASK_2 0x4
90 #define WLAN_CFG_RXDMA2HOST_RING_MASK_3 0x0
91
92 #define WLAN_CFG_HOST2RXDMA_RING_MASK_0 0x1
93 #define WLAN_CFG_HOST2RXDMA_RING_MASK_1 0x2
94 #define WLAN_CFG_HOST2RXDMA_RING_MASK_2 0x4
95 #define WLAN_CFG_HOST2RXDMA_RING_MASK_3 0x0
96
97 #define WLAN_CFG_UMAC_RESET_INTR_MASK_0 0x1
98
99 #define WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0 0x1
100 #define WLAN_CFG_REO2PPE_RING_MASK_0 0x1
101 #define WLAN_CFG_PPE2TCL_RING_MASK_0 0x1
102
103 struct dp_int_mask_assignment {
104 uint8_t tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
105 uint8_t rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
106 uint8_t rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
107 uint8_t host2rxdma_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
108 uint8_t rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
109 uint8_t host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
110 uint8_t rxdma2host_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
111 uint8_t rx_err_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
112 uint8_t rx_wbm_rel_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
113 uint8_t reo_status_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
114 uint8_t rx_ring_near_full_irq_1_mask[WLAN_CFG_INT_NUM_CONTEXTS];
115 uint8_t rx_ring_near_full_irq_2_mask[WLAN_CFG_INT_NUM_CONTEXTS];
116 uint8_t tx_ring_near_full_irq_mask[WLAN_CFG_INT_NUM_CONTEXTS];
117 uint8_t host2txmon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
118 uint8_t tx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
119 uint8_t ppeds_wbm_release_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
120 uint8_t reo2ppe_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
121 uint8_t ppe2tcl_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
122 uint8_t umac_reset_intr_mask[WLAN_CFG_INT_NUM_CONTEXTS];
123 };
124
125 #if defined(WLAN_MAX_PDEVS) && (WLAN_MAX_PDEVS == 1)
126 /*
127 * For BE, there are 18 available MSI interrupts, assigned in the manner
128 * below.
129 * TX(5) + RX(8) + (REO ERR + WBM ERR)(1) +
130 * (REO status + RXDMA[0] + RXDMA[1])(1) + NEAR_Full_RX(2) + NEAR_Full_TX(1)
131 * For IPA_OFFLOAD enabled case, 2 TX/RX rings would be assigned to IPA.
132 */
133
134 #ifdef CONFIG_BERYLLIUM
135 #ifdef IPA_OFFLOAD
136 /*
137 * NEAR-FULL IRQ mask should be updated, if any change is made to
138 * the below TX mask.
139 */
140 static const uint8_t tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
141 [0] = WLAN_CFG_TX_RING_MASK_0, [1] = WLAN_CFG_TX_RING_MASK_4,
142 [2] = WLAN_CFG_TX_RING_MASK_2};
143 #else /* !IPA_OFFLOAD */
144 #ifdef QCA_WIFI_KIWI_V2
145 static const uint8_t tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
146 [0] = WLAN_CFG_TX_RING_MASK_0, [1] = WLAN_CFG_TX_RING_MASK_4,
147 [2] = WLAN_CFG_TX_RING_MASK_2, [3] = WLAN_CFG_TX_RING_MASK_5,
148 [4] = WLAN_CFG_TX_RING_MASK_6};
149 #else /* !QCA_WIFI_KIWI_V2 */
150 static const uint8_t tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
151 [0] = WLAN_CFG_TX_RING_MASK_0, [1] = WLAN_CFG_TX_RING_MASK_4,
152 [2] = WLAN_CFG_TX_RING_MASK_2, [3] = WLAN_CFG_TX_RING_MASK_6,
153 [4] = WLAN_CFG_TX_RING_MASK_7};
154 #endif /* QCA_WIFI_KIWI_V2 */
155 #endif /* IPA_OFFLOAD */
156
157 static inline const
wlan_cfg_get_tx_ring_int_mask(struct wlan_cfg_dp_soc_ctxt * cfg_ctx)158 uint8_t *wlan_cfg_get_tx_ring_int_mask(struct wlan_cfg_dp_soc_ctxt *cfg_ctx)
159 {
160 return &tx_ring_mask_msi[0];
161 }
162 #else
163 static const uint8_t tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
164 [0] = WLAN_CFG_TX_RING_MASK_0};
165
166 #ifdef TX_MULTI_TCL
167 static const uint8_t multi_tx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
168 [0] = WLAN_CFG_TX_RING_MASK_0, [4] = WLAN_CFG_TX_RING_MASK_2};
169
170 #ifdef IPA_OFFLOAD
171 static inline const
wlan_cfg_get_tx_ring_int_mask(struct wlan_cfg_dp_soc_ctxt * cfg_ctx)172 uint8_t *wlan_cfg_get_tx_ring_int_mask(struct wlan_cfg_dp_soc_ctxt *cfg_ctx)
173 {
174 if (cfg_ctx->ipa_enabled)
175 return &tx_ring_mask_msi[0];
176
177 return &multi_tx_ring_mask_msi[0];
178 }
179 #else
180 static inline const
wlan_cfg_get_tx_ring_int_mask(struct wlan_cfg_dp_soc_ctxt * cfg_ctx)181 uint8_t *wlan_cfg_get_tx_ring_int_mask(struct wlan_cfg_dp_soc_ctxt *cfg_ctx)
182 {
183 return &multi_tx_ring_mask_msi[0];
184 }
185 #endif /* IPA_OFFLOAD */
186 #else
187 static inline const
wlan_cfg_get_tx_ring_int_mask(struct wlan_cfg_dp_soc_ctxt * cfg_ctx)188 uint8_t *wlan_cfg_get_tx_ring_int_mask(struct wlan_cfg_dp_soc_ctxt *cfg_ctx)
189 {
190 return &tx_ring_mask_msi[0];
191 }
192 #endif /* TX_MULTI_TCL */
193 #endif /* CONFIG_BERYLLIUM */
194
195 #ifdef CONFIG_BERYLLIUM
196 #ifdef IPA_OFFLOAD
197 static const uint8_t rx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
198 [5] = WLAN_CFG_RX_RING_MASK_0, [6] = WLAN_CFG_RX_RING_MASK_1,
199 [7] = WLAN_CFG_RX_RING_MASK_2, [9] = WLAN_CFG_RX_RING_MASK_4,
200 [10] = WLAN_CFG_RX_RING_MASK_5, [11] = WLAN_CFG_RX_RING_MASK_6};
201 #else
202 static const uint8_t rx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
203 [5] = WLAN_CFG_RX_RING_MASK_0, [6] = WLAN_CFG_RX_RING_MASK_1,
204 [7] = WLAN_CFG_RX_RING_MASK_2, [8] = WLAN_CFG_RX_RING_MASK_3,
205 [9] = WLAN_CFG_RX_RING_MASK_4, [10] = WLAN_CFG_RX_RING_MASK_5,
206 [11] = WLAN_CFG_RX_RING_MASK_6, [12] = WLAN_CFG_RX_RING_MASK_7};
207 #endif /* IPA_OFFLOAD */
208 #else /* !defined(CONFIG_BERYLLIUM) */
209 #ifdef IPA_OFFLOAD
210 static const uint8_t rx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
211 [1] = WLAN_CFG_RX_RING_MASK_0, [2] = WLAN_CFG_RX_RING_MASK_1,
212 [3] = WLAN_CFG_RX_RING_MASK_2};
213 #else
214 static const uint8_t rx_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
215 [1] = WLAN_CFG_RX_RING_MASK_0, [2] = WLAN_CFG_RX_RING_MASK_1,
216 [3] = WLAN_CFG_RX_RING_MASK_2 | WLAN_CFG_RX_RING_MASK_3};
217 #endif
218 #endif /* CONFIG_BERYLLIUM */
219
220 #ifdef CONFIG_BERYLLIUM
221 static const uint8_t rxdma2host_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
222 [13] = WLAN_CFG_RXDMA2HOST_RING_MASK_0};
223 #else
224 static const uint8_t rxdma2host_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
225 [6] = WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
226 WLAN_CFG_RXDMA2HOST_RING_MASK_1};
227 #endif /* CONFIG_BERYLLIUM */
228
229 #ifdef CONFIG_BERYLLIUM
230 #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE
231 static const uint8_t rx_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
232 [14] = WLAN_CFG_RX_MON_RING_MASK_0 | WLAN_CFG_RX_MON_RING_MASK_1};
233 #else
234 static const uint8_t rx_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
235 [5] = WLAN_CFG_RX_MON_RING_MASK_0};
236 #endif
237 #else
238 static const uint8_t rx_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
239 [1] = WLAN_CFG_RX_MON_RING_MASK_0, [2] = WLAN_CFG_RX_MON_RING_MASK_1};
240 #endif
241
242 static const uint8_t host2rxdma_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {0};
243
244 static const uint8_t host2rxdma_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {0};
245
246 static const uint8_t rxdma2host_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {0};
247
248 #ifdef CONFIG_BERYLLIUM
249 static const uint8_t rx_err_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
250 [14] = WLAN_CFG_RX_ERR_RING_MASK_0};
251
252 static const uint8_t rx_wbm_rel_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
253 [14] = WLAN_CFG_RX_WBM_REL_RING_MASK_0};
254
255 static const uint8_t reo_status_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
256 [13] = WLAN_CFG_REO_STATUS_RING_MASK_0};
257 #else
258 static const uint8_t rx_err_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
259 [6] = WLAN_CFG_RX_ERR_RING_MASK_0};
260 static const uint8_t rx_wbm_rel_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
261 [6] = WLAN_CFG_RX_WBM_REL_RING_MASK_0};
262 static const uint8_t reo_status_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
263 [6] = WLAN_CFG_REO_STATUS_RING_MASK_0};
264 #endif
265
266 #ifdef CONFIG_BERYLLIUM
267 #ifdef WLAN_FEATURE_NEAR_FULL_IRQ
268 static const uint8_t rx_ring_near_full_irq_1_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
269 [15] = WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_1};
270 static const uint8_t rx_ring_near_full_irq_2_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
271 [16] = WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_1};
272 static const uint8_t tx_ring_near_full_irq_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
273 [17] = WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK};
274 #else
275 static const uint8_t rx_ring_near_full_irq_1_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
276 0 };
277 static const uint8_t rx_ring_near_full_irq_2_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
278 0 };
279 static const uint8_t tx_ring_near_full_irq_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
280 0 };
281 #endif
282 #else
283 static const uint8_t rx_ring_near_full_irq_1_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
284 0 };
285 static const uint8_t rx_ring_near_full_irq_2_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
286 0 };
287 static const uint8_t tx_ring_near_full_irq_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
288 0 };
289 #endif
290
291 #ifdef CONFIG_BERYLLIUM
292 #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE
293 static const uint8_t tx_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {
294 [13] = WLAN_CFG_TX_MON_RING_MASK_0 | WLAN_CFG_TX_MON_RING_MASK_1};
295 #else
296 static const uint8_t tx_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {0};
297 #endif /* WLAN_FEATURE_LOCAL_PKT_CAPTURE */
298 #else
299 static const uint8_t tx_mon_ring_mask_msi[WLAN_CFG_INT_NUM_CONTEXTS] = {0};
300 #endif
301
302 #else
303 /* Integrated configuration + 16 possible MSI configurations */
304 #define NUM_INTERRUPT_COMBINATIONS 17
305 /*
306 * This structure contains the best possible mask assignment for a given
307 * number of MSIs available in the system.
308 */
309 #ifdef IPA_OFFLOAD
310 static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIONS] = {
311 /* Interrupt assignment for integrated configuration */
312 {
313 /* tx ring masks */
314 { WLAN_CFG_TX_RING_MASK_0,
315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
316 /* rx ring masks */
317 { 0, 0, 0, 0, 0, 0, 0,
318 WLAN_CFG_RX_RING_MASK_0,
319 WLAN_CFG_RX_RING_MASK_1,
320 WLAN_CFG_RX_RING_MASK_2,
321 0},
322 /* rx mon ring masks */
323 { 0, 0, 0, 0,
324 WLAN_CFG_RX_MON_RING_MASK_0,
325 WLAN_CFG_RX_MON_RING_MASK_1,
326 WLAN_CFG_RX_MON_RING_MASK_2,
327 0, 0, 0, 0},
328 /* host2rxdma ring masks */
329 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
330 /* rxdma2host ring masks */
331 { WLAN_CFG_RXDMA2HOST_RING_MASK_0,
332 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
333 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
334 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
335 0, 0, 0, 0, 0, 0, 0},
336 /* host2rxdma mon ring masks */
337 { 0, 0, 0, 0,
338 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
339 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
340 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
341 0, 0, 0, 0},
342 /* rxdma2host mon ring masks */
343 { 0, 0, 0, 0,
344 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
345 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
346 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
347 0, 0, 0, 0},
348 /* rx err ring masks */
349 { WLAN_CFG_RX_ERR_RING_MASK_0,
350 WLAN_CFG_RX_ERR_RING_MASK_1,
351 WLAN_CFG_RX_ERR_RING_MASK_2,
352 WLAN_CFG_RX_ERR_RING_MASK_3,
353 0, 0, 0, 0, 0, 0, 0},
354 /* rx wbm rel ring masks */
355 { WLAN_CFG_RX_WBM_REL_RING_MASK_0,
356 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
357 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
358 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
359 0, 0, 0, 0, 0, 0, 0},
360 /* reo status ring masks */
361 { WLAN_CFG_REO_STATUS_RING_MASK_0,
362 WLAN_CFG_REO_STATUS_RING_MASK_1,
363 WLAN_CFG_REO_STATUS_RING_MASK_2,
364 WLAN_CFG_REO_STATUS_RING_MASK_3,
365 0, 0, 0, 0, 0, 0, 0},
366 },
367 /* Interrupt assignment for 1 MSI combination */
368 {
369 /* tx ring masks */
370 { WLAN_CFG_TX_RING_MASK_0,
371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
372 /* rx ring masks */
373 { WLAN_CFG_RX_RING_MASK_0 |
374 WLAN_CFG_RX_RING_MASK_1 |
375 WLAN_CFG_RX_RING_MASK_2,
376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
377 /* rx mon ring masks */
378 { WLAN_CFG_RX_MON_RING_MASK_0 |
379 WLAN_CFG_RX_MON_RING_MASK_1 |
380 WLAN_CFG_RX_MON_RING_MASK_2,
381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
382 /* host2rxdma ring masks */
383 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
384 /* rxdma2host ring masks */
385 { WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
386 WLAN_CFG_RXDMA2HOST_RING_MASK_1 |
387 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
388 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
390 /* host2rxdma mon ring masks */
391 { WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 |
392 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1 |
393 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
395 /* rxdma2host mon ring masks */
396 { WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 |
397 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1 |
398 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
400 /* rx err ring masks */
401 { WLAN_CFG_RX_ERR_RING_MASK_0 |
402 WLAN_CFG_RX_ERR_RING_MASK_1 |
403 WLAN_CFG_RX_ERR_RING_MASK_2 |
404 WLAN_CFG_RX_ERR_RING_MASK_3,
405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
406 /* rx wbm rel ring masks */
407 { WLAN_CFG_RX_WBM_REL_RING_MASK_0 |
408 WLAN_CFG_RX_WBM_REL_RING_MASK_1 |
409 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
410 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
412 /* reo status ring masks */
413 { WLAN_CFG_REO_STATUS_RING_MASK_0 |
414 WLAN_CFG_REO_STATUS_RING_MASK_1 |
415 WLAN_CFG_REO_STATUS_RING_MASK_2 |
416 WLAN_CFG_REO_STATUS_RING_MASK_3,
417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
418 },
419 /* Interrupt assignment for 2 MSI combination */
420 {
421 /* tx ring masks */
422 { WLAN_CFG_TX_RING_MASK_0,
423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
424 /* rx ring masks */
425 { WLAN_CFG_RX_RING_MASK_0 |
426 WLAN_CFG_RX_RING_MASK_1,
427 WLAN_CFG_RX_RING_MASK_2,
428 0, 0, 0, 0, 0, 0, 0, 0, 0},
429 /* rx mon ring masks */
430 { WLAN_CFG_RX_MON_RING_MASK_0 |
431 WLAN_CFG_RX_MON_RING_MASK_1,
432 WLAN_CFG_RX_MON_RING_MASK_2,
433 0, 0, 0, 0, 0, 0, 0, 0, 0},
434 /* host2rxdma ring masks */
435 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
436 /* rxdma2host ring masks */
437 { WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
438 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
439 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
440 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
441 0, 0, 0, 0, 0, 0, 0, 0, 0},
442 /* host2rxdma mon ring masks */
443 { WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 |
444 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
445 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
446 0, 0, 0, 0, 0, 0, 0, 0, 0},
447 /* rxdma2host mon ring masks */
448 { WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 |
449 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
450 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
451 0, 0, 0, 0, 0, 0, 0, 0, 0},
452 /* rx err ring masks */
453 { WLAN_CFG_RX_ERR_RING_MASK_0 |
454 WLAN_CFG_RX_ERR_RING_MASK_1,
455 WLAN_CFG_RX_ERR_RING_MASK_2 |
456 WLAN_CFG_RX_ERR_RING_MASK_3,
457 0, 0, 0, 0, 0, 0, 0, 0, 0},
458 /* rx wbm rel ring masks */
459 { WLAN_CFG_RX_WBM_REL_RING_MASK_0 |
460 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
461 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
462 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
463 0, 0, 0, 0, 0, 0, 0, 0, 0},
464 /* reo status ring masks */
465 { WLAN_CFG_REO_STATUS_RING_MASK_0 |
466 WLAN_CFG_REO_STATUS_RING_MASK_1,
467 WLAN_CFG_REO_STATUS_RING_MASK_2 |
468 WLAN_CFG_REO_STATUS_RING_MASK_3,
469 0, 0, 0, 0, 0, 0, 0, 0, 0},
470 },
471 /* Interrupt assignment for 3 MSI combination */
472 {
473 /* tx ring masks */
474 { WLAN_CFG_TX_RING_MASK_0,
475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
476 /* rx ring masks */
477 { WLAN_CFG_RX_RING_MASK_0,
478 WLAN_CFG_RX_RING_MASK_1,
479 WLAN_CFG_RX_RING_MASK_2,
480 0, 0, 0, 0, 0, 0, 0, 0},
481 /* rx mon ring masks */
482 { 0, 0,
483 WLAN_CFG_RX_MON_RING_MASK_0 |
484 WLAN_CFG_RX_MON_RING_MASK_1 |
485 WLAN_CFG_RX_MON_RING_MASK_2,
486 0, 0, 0, 0, 0, 0, 0, 0},
487 /* host2rxdma ring masks */
488 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
489 /* rxdma2host ring masks */
490 { 0, 0,
491 WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
492 WLAN_CFG_RXDMA2HOST_RING_MASK_1 |
493 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
494 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
495 0, 0, 0, 0, 0, 0, 0, 0},
496 /* host2rxdma mon ring masks */
497 { 0, 0,
498 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 |
499 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1 |
500 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
501 0, 0, 0, 0, 0, 0, 0, 0},
502 /* rxdma2host mon ring masks */
503 { 0, 0,
504 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 |
505 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1 |
506 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
507 0, 0, 0, 0, 0, 0, 0, 0},
508 /* rx err ring masks */
509 { 0, 0,
510 WLAN_CFG_RX_ERR_RING_MASK_0 |
511 WLAN_CFG_RX_ERR_RING_MASK_1 |
512 WLAN_CFG_RX_ERR_RING_MASK_2 |
513 WLAN_CFG_RX_ERR_RING_MASK_3,
514 0, 0, 0, 0, 0, 0, 0, 0},
515 /* rx wbm rel ring masks */
516 { 0, 0,
517 WLAN_CFG_RX_WBM_REL_RING_MASK_0 |
518 WLAN_CFG_RX_WBM_REL_RING_MASK_1 |
519 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
520 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
521 0, 0, 0, 0, 0, 0, 0, 0},
522 /* reo status ring masks */
523 { 0, 0,
524 WLAN_CFG_REO_STATUS_RING_MASK_0 |
525 WLAN_CFG_REO_STATUS_RING_MASK_1 |
526 WLAN_CFG_REO_STATUS_RING_MASK_2 |
527 WLAN_CFG_REO_STATUS_RING_MASK_3,
528 0, 0, 0, 0, 0, 0, 0, 0},
529 },
530 /* Interrupt assignment for 4 MSI combination */
531 {
532 /* tx ring masks */
533 { WLAN_CFG_TX_RING_MASK_0,
534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
535 /* rx ring masks */
536 { WLAN_CFG_RX_RING_MASK_0,
537 WLAN_CFG_RX_RING_MASK_1,
538 WLAN_CFG_RX_RING_MASK_2,
539 0, 0, 0, 0, 0, 0, 0, 0},
540 /* rx mon ring masks */
541 { WLAN_CFG_RX_MON_RING_MASK_0,
542 WLAN_CFG_RX_MON_RING_MASK_1,
543 WLAN_CFG_RX_MON_RING_MASK_2,
544 0, 0, 0, 0, 0, 0, 0, 0},
545 /* host2rxdma ring masks */
546 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
547 /* rxdma2host ring masks */
548 { WLAN_CFG_RXDMA2HOST_RING_MASK_0,
549 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
550 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
551 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
552 0, 0, 0, 0, 0, 0, 0},
553 /* host2rxdma mon ring masks */
554 { WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
555 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
556 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
557 0, 0, 0, 0, 0, 0, 0, 0},
558 /* rxdma2host mon ring masks */
559 { WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
560 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
561 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
562 0, 0, 0, 0, 0, 0, 0, 0},
563 /* rx err ring masks */
564 { WLAN_CFG_RX_ERR_RING_MASK_0,
565 WLAN_CFG_RX_ERR_RING_MASK_1,
566 WLAN_CFG_RX_ERR_RING_MASK_2,
567 WLAN_CFG_RX_ERR_RING_MASK_3,
568 0, 0, 0, 0, 0, 0, 0},
569 /* rx wbm rel ring masks */
570 { WLAN_CFG_RX_WBM_REL_RING_MASK_0,
571 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
572 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
573 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
574 0, 0, 0, 0, 0, 0, 0},
575 /* reo status ring masks */
576 { WLAN_CFG_REO_STATUS_RING_MASK_0,
577 WLAN_CFG_REO_STATUS_RING_MASK_1,
578 WLAN_CFG_REO_STATUS_RING_MASK_2,
579 WLAN_CFG_REO_STATUS_RING_MASK_3,
580 0, 0, 0, 0, 0, 0, 0},
581 },
582 /* Interrupt assignment for 5 MSI combination */
583 {
584 /* tx ring masks */
585 { WLAN_CFG_TX_RING_MASK_0,
586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
587 /* rx ring masks */
588 { WLAN_CFG_RX_RING_MASK_0,
589 WLAN_CFG_RX_RING_MASK_1,
590 WLAN_CFG_RX_RING_MASK_2,
591 0, 0, 0, 0, 0, 0, 0, 0},
592 /* rx mon ring masks */
593 { 0, 0, 0, 0,
594 WLAN_CFG_RX_MON_RING_MASK_0 |
595 WLAN_CFG_RX_MON_RING_MASK_1 |
596 WLAN_CFG_RX_MON_RING_MASK_2,
597 0, 0, 0, 0, 0, 0},
598 /* host2rxdma ring masks */
599 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
600 /* rxdma2host ring masks */
601 { 0, 0, 0, 0,
602 WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
603 WLAN_CFG_RXDMA2HOST_RING_MASK_1 |
604 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
605 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
606 0, 0, 0, 0, 0, 0},
607 /* host2rxdma mon ring masks */
608 { 0, 0, 0, 0,
609 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 |
610 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1 |
611 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
612 0, 0, 0, 0, 0, 0},
613 /* rxdma2host mon ring masks */
614 { 0, 0, 0, 0,
615 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 |
616 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1 |
617 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
618 0, 0, 0, 0, 0, 0},
619 /* rx err ring masks */
620 { 0, 0, 0, 0,
621 WLAN_CFG_RX_ERR_RING_MASK_0 |
622 WLAN_CFG_RX_ERR_RING_MASK_1 |
623 WLAN_CFG_RX_ERR_RING_MASK_2 |
624 WLAN_CFG_RX_ERR_RING_MASK_3,
625 0, 0, 0, 0, 0, 0},
626 /* rx wbm rel ring masks */
627 { 0, 0, 0, 0,
628 WLAN_CFG_RX_WBM_REL_RING_MASK_0 |
629 WLAN_CFG_RX_WBM_REL_RING_MASK_1 |
630 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
631 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
632 0, 0, 0, 0, 0, 0},
633 /* reo status ring masks */
634 { 0, 0, 0, 0,
635 WLAN_CFG_REO_STATUS_RING_MASK_0 |
636 WLAN_CFG_REO_STATUS_RING_MASK_1 |
637 WLAN_CFG_REO_STATUS_RING_MASK_2 |
638 WLAN_CFG_REO_STATUS_RING_MASK_3,
639 0, 0, 0, 0, 0, 0},
640 },
641 /* Interrupt assignment for 6 MSI combination */
642 {
643 /* tx ring masks */
644 { WLAN_CFG_TX_RING_MASK_0,
645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
646 /* rx ring masks */
647 { 0, 0,
648 WLAN_CFG_RX_RING_MASK_0,
649 WLAN_CFG_RX_RING_MASK_1,
650 WLAN_CFG_RX_RING_MASK_2,
651 0, 0, 0, 0, 0, 0},
652 /* rx mon ring masks */
653 { WLAN_CFG_RX_MON_RING_MASK_0,
654 WLAN_CFG_RX_MON_RING_MASK_1,
655 WLAN_CFG_RX_MON_RING_MASK_2,
656 0, 0, 0, 0, 0, 0, 0, 0},
657 /* host2rxdma ring masks */
658 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
659 /* rxdma2host ring masks */
660 { WLAN_CFG_RXDMA2HOST_RING_MASK_0,
661 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
662 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
663 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
664 0, 0, 0, 0, 0, 0, 0},
665 /* host2rxdma mon ring masks */
666 { WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
667 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
668 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
669 0, 0, 0, 0, 0, 0, 0, 0},
670 /* rxdma2host mon ring masks */
671 { WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
672 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
673 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
674 0, 0, 0, 0, 0, 0, 0, 0},
675 /* rx err ring masks */
676 { WLAN_CFG_RX_ERR_RING_MASK_0,
677 WLAN_CFG_RX_ERR_RING_MASK_1,
678 WLAN_CFG_RX_ERR_RING_MASK_2,
679 WLAN_CFG_RX_ERR_RING_MASK_3,
680 0, 0, 0, 0, 0, 0, 0},
681 /* rx wbm rel ring masks */
682 { WLAN_CFG_RX_WBM_REL_RING_MASK_0,
683 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
684 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
685 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
686 0, 0, 0, 0, 0, 0, 0},
687 /* reo status ring masks */
688 { WLAN_CFG_REO_STATUS_RING_MASK_0,
689 WLAN_CFG_REO_STATUS_RING_MASK_1,
690 WLAN_CFG_REO_STATUS_RING_MASK_2,
691 WLAN_CFG_REO_STATUS_RING_MASK_3,
692 0, 0, 0, 0, 0, 0, 0},
693 },
694 /* Interrupt assignment for 7 MSI combination */
695 {
696 /* tx ring masks */
697 { WLAN_CFG_TX_RING_MASK_0,
698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
699 /* rx ring masks */
700 { 0, 0, 0,
701 WLAN_CFG_RX_RING_MASK_0,
702 WLAN_CFG_RX_RING_MASK_1,
703 WLAN_CFG_RX_RING_MASK_2,
704 0, 0, 0, 0},
705 /* rx mon ring masks */
706 { 0, 0, 0,
707 WLAN_CFG_RX_MON_RING_MASK_0,
708 WLAN_CFG_RX_MON_RING_MASK_1,
709 WLAN_CFG_RX_MON_RING_MASK_2,
710 0, 0, 0, 0, 0},
711 /* host2rxdma ring masks */
712 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
713 /* rxdma2host ring masks */
714 { 0, 0, 0,
715 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
716 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
717 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
718 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
719 0, 0, 0, 0},
720 /* host2rxdma mon ring masks */
721 { 0, 0, 0,
722 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
723 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
724 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
725 0, 0, 0, 0, 0},
726 /* rxdma2host mon ring masks */
727 { 0, 0, 0,
728 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
729 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
730 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
731 0, 0, 0, 0, 0},
732 /* rx err ring masks */
733 { 0, 0, 0,
734 WLAN_CFG_RX_ERR_RING_MASK_0,
735 WLAN_CFG_RX_ERR_RING_MASK_1,
736 WLAN_CFG_RX_ERR_RING_MASK_2,
737 WLAN_CFG_RX_ERR_RING_MASK_3,
738 0, 0, 0, 0},
739 /* rx wbm rel ring masks */
740 { 0, 0, 0,
741 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
742 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
743 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
744 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
745 0, 0, 0, 0},
746 /* reo status ring masks */
747 { 0, 0, 0,
748 WLAN_CFG_REO_STATUS_RING_MASK_0,
749 WLAN_CFG_REO_STATUS_RING_MASK_1,
750 WLAN_CFG_REO_STATUS_RING_MASK_2,
751 WLAN_CFG_REO_STATUS_RING_MASK_3,
752 0, 0, 0, 0},
753 },
754 /* Interrupt assignment for 8 MSI combination */
755 {
756 /* tx ring masks */
757 { WLAN_CFG_TX_RING_MASK_0,
758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
759 /* rx ring masks */
760 { 0, 0, 0, 0,
761 WLAN_CFG_RX_RING_MASK_0,
762 WLAN_CFG_RX_RING_MASK_1,
763 WLAN_CFG_RX_RING_MASK_2,
764 0, 0, 0, 0},
765 /* rx mon ring masks */
766 { 0, 0, 0,
767 WLAN_CFG_RX_MON_RING_MASK_0,
768 WLAN_CFG_RX_MON_RING_MASK_1,
769 WLAN_CFG_RX_MON_RING_MASK_2,
770 0, 0, 0, 0, 0},
771 /* host2rxdma ring masks */
772 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
773 /* rxdma2host ring masks */
774 { 0, 0, 0,
775 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
776 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
777 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
778 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
779 0, 0, 0, 0},
780 /* host2rxdma mon ring masks */
781 { 0, 0, 0,
782 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
783 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
784 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
785 0, 0, 0, 0, 0},
786 /* rxdma2host mon ring masks */
787 { 0, 0, 0,
788 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
789 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
790 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
791 0, 0, 0, 0, 0},
792 /* rx err ring masks */
793 { 0, 0, 0,
794 WLAN_CFG_RX_ERR_RING_MASK_0,
795 WLAN_CFG_RX_ERR_RING_MASK_1,
796 WLAN_CFG_RX_ERR_RING_MASK_2,
797 WLAN_CFG_RX_ERR_RING_MASK_3,
798 0, 0, 0, 0},
799 /* rx wbm rel ring masks */
800 { 0, 0, 0,
801 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
802 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
803 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
804 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
805 0, 0, 0, 0},
806 /* reo status ring masks */
807 { 0, 0, 0,
808 WLAN_CFG_REO_STATUS_RING_MASK_0,
809 WLAN_CFG_REO_STATUS_RING_MASK_1,
810 WLAN_CFG_REO_STATUS_RING_MASK_2,
811 WLAN_CFG_REO_STATUS_RING_MASK_3,
812 0, 0, 0, 0},
813 /* ppe2tcl ring masks */
814 { 0, 0, 0,
815 WLAN_CFG_REO_STATUS_RING_MASK_0,
816 WLAN_CFG_REO_STATUS_RING_MASK_1,
817 WLAN_CFG_REO_STATUS_RING_MASK_2,
818 WLAN_CFG_REO_STATUS_RING_MASK_3,
819 0, 0, 0, 0},
820 /* reo2ppe ring masks */
821 { 0, 0, 0,
822 WLAN_CFG_REO_STATUS_RING_MASK_0,
823 WLAN_CFG_REO_STATUS_RING_MASK_1,
824 WLAN_CFG_REO_STATUS_RING_MASK_2,
825 WLAN_CFG_REO_STATUS_RING_MASK_3,
826 0, 0, 0, 0},
827 },
828 /* Interrupt assignment for 9 MSI combination */
829 {
830 /* tx ring masks */
831 { WLAN_CFG_TX_RING_MASK_0,
832 WLAN_CFG_TX_RING_MASK_1,
833 WLAN_CFG_TX_RING_MASK_2,
834 WLAN_CFG_TX_RING_MASK_3,
835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
836 /* rx ring masks */
837 { 0, 0, 0, 0,
838 WLAN_CFG_RX_RING_MASK_0,
839 WLAN_CFG_RX_RING_MASK_1,
840 WLAN_CFG_RX_RING_MASK_2,
841 WLAN_CFG_RX_RING_MASK_3,
842 0, 0, 0, 0, 0, 0, 0, 0},
843 /* rx mon ring masks */
844 { 0, 0, 0,
845 WLAN_CFG_RX_MON_RING_MASK_0,
846 WLAN_CFG_RX_MON_RING_MASK_1,
847 WLAN_CFG_RX_MON_RING_MASK_2,
848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
849 /* host2rxdma ring masks */
850 { 0, 0, 0,
851 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
852 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
853 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
854 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
855 0, 0, 0, 0, 0, 0, 0, 0, 0},
856 /* rxdma2host ring masks */
857 { 0, 0, 0,
858 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
859 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
860 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
861 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
862 0, 0, 0, 0, 0, 0, 0, 0, 0},
863 /* host2rxdma mon ring masks */
864 { 0, 0, 0,
865 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
866 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
867 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
869 /* rxdma2host mon ring masks */
870 { 0, 0, 0,
871 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
872 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
873 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
875 /* rx err ring masks */
876 { 0, 0, 0,
877 WLAN_CFG_RX_ERR_RING_MASK_0,
878 WLAN_CFG_RX_ERR_RING_MASK_1,
879 WLAN_CFG_RX_ERR_RING_MASK_2,
880 WLAN_CFG_RX_ERR_RING_MASK_3,
881 0, 0, 0, 0, 0, 0, 0, 0, 0},
882 /* rx wbm rel ring masks */
883 { 0, 0, 0,
884 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
885 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
886 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
887 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
888 0, 0, 0, 0, 0, 0, 0, 0, 0},
889 /* reo status ring masks */
890 { 0, 0, 0,
891 WLAN_CFG_REO_STATUS_RING_MASK_0,
892 WLAN_CFG_REO_STATUS_RING_MASK_1,
893 WLAN_CFG_REO_STATUS_RING_MASK_2,
894 WLAN_CFG_REO_STATUS_RING_MASK_3,
895 0, 0, 0, 0, 0, 0, 0, 0, 0},
896 /* rx_ring_near_full_irq mask */
897 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
898 /* rx_ring_near_full_irq_2 mask */
899 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
900 /* tx_ring_near_full_irq mask */
901 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
902 /* host2txmon ring masks */
903 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
905 /* tx mon ring masks */
906 { WLAN_CFG_TX_MON_RING_MASK_0,
907 WLAN_CFG_TX_MON_RING_MASK_1,
908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
909 /* ppe ds wbm release ring ring mask */
910 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
911 /* Reo2ppe ring mask */
912 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
913 /* ppe2tcl ring mask */
914 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
915 /* umac reset mask */
916 {0, 0, 0, 0, 0, 0, 0, 0,
917 WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, 0},
918 },
919 /* Interrupt assignment for 10 MSI combination */
920 {
921 /* tx ring masks */
922 { WLAN_CFG_TX_RING_MASK_0,
923 WLAN_CFG_TX_RING_MASK_1,
924 WLAN_CFG_TX_RING_MASK_2,
925 WLAN_CFG_TX_RING_MASK_3,
926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
927 /* rx ring masks */
928 { 0, 0, 0, 0,
929 WLAN_CFG_RX_RING_MASK_0,
930 WLAN_CFG_RX_RING_MASK_1,
931 WLAN_CFG_RX_RING_MASK_2,
932 WLAN_CFG_RX_RING_MASK_3,
933 0, 0, 0, 0, 0, 0, 0, 0},
934 /* rx mon ring masks */
935 { 0, 0, 0,
936 WLAN_CFG_RX_MON_RING_MASK_0,
937 WLAN_CFG_RX_MON_RING_MASK_1,
938 WLAN_CFG_RX_MON_RING_MASK_2,
939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
940 /* host2rxdma ring masks */
941 { 0, 0, 0,
942 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
943 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
944 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
945 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
946 0, 0, 0, 0, 0, 0, 0, 0, 0},
947 /* rxdma2host ring masks */
948 { 0, 0, 0,
949 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
950 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
951 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
952 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
953 0, 0, 0, 0, 0, 0, 0, 0, 0},
954 /* host2rxdma mon ring masks */
955 { 0, 0, 0,
956 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
957 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
958 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
960 /* rxdma2host mon ring masks */
961 { 0, 0, 0,
962 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
963 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
964 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
966 /* rx err ring masks */
967 { 0, 0, 0,
968 WLAN_CFG_RX_ERR_RING_MASK_0,
969 WLAN_CFG_RX_ERR_RING_MASK_1,
970 WLAN_CFG_RX_ERR_RING_MASK_2,
971 WLAN_CFG_RX_ERR_RING_MASK_3,
972 0, 0, 0, 0, 0, 0, 0, 0, 0},
973 /* rx wbm rel ring masks */
974 { 0, 0, 0,
975 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
976 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
977 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
978 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
979 0, 0, 0, 0, 0, 0, 0, 0, 0},
980 /* reo status ring masks */
981 { 0, 0, 0,
982 WLAN_CFG_REO_STATUS_RING_MASK_0,
983 WLAN_CFG_REO_STATUS_RING_MASK_1,
984 WLAN_CFG_REO_STATUS_RING_MASK_2,
985 WLAN_CFG_REO_STATUS_RING_MASK_3,
986 0, 0, 0, 0, 0, 0, 0, 0, 0},
987 /* rx_ring_near_full_irq mask */
988 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
989 /* rx_ring_near_full_irq_2 mask */
990 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
991 /* tx_ring_near_full_irq mask */
992 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
993 /* host2txmon ring masks */
994 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
996 /* tx mon ring masks */
997 { WLAN_CFG_TX_MON_RING_MASK_0,
998 WLAN_CFG_TX_MON_RING_MASK_1,
999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1000 /* ppe ds wbm release ring ring mask */
1001 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1002 /* Reo2ppe ring mask */
1003 {0, 0, 0, 0, 0, 0, 0, 0,
1004 0, 0, 0, 0, 0, 0, 0, 0},
1005 /* ppe2tcl ring mask */
1006 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1007 /* umac reset mask */
1008 {0, 0, 0, 0, 0, 0, 0, 0,
1009 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0},
1010 },
1011 /* Interrupt assignment for 11 MSI combination */
1012 {
1013 /* tx ring masks */
1014 { WLAN_CFG_TX_RING_MASK_0,
1015 WLAN_CFG_TX_RING_MASK_1,
1016 WLAN_CFG_TX_RING_MASK_2,
1017 WLAN_CFG_TX_RING_MASK_3,
1018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1019 /* rx ring masks */
1020 { 0, 0, 0, 0,
1021 WLAN_CFG_RX_RING_MASK_0,
1022 WLAN_CFG_RX_RING_MASK_1,
1023 WLAN_CFG_RX_RING_MASK_2,
1024 WLAN_CFG_RX_RING_MASK_3,
1025 0, 0, 0, 0, 0, 0, 0, 0},
1026 /* rx mon ring masks */
1027 { 0, 0, 0,
1028 WLAN_CFG_RX_MON_RING_MASK_0,
1029 WLAN_CFG_RX_MON_RING_MASK_1,
1030 WLAN_CFG_RX_MON_RING_MASK_2,
1031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1032 /* host2rxdma ring masks */
1033 { 0, 0, 0,
1034 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
1035 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1036 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
1037 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
1038 0, 0, 0, 0, 0, 0, 0, 0, 0},
1039 /* rxdma2host ring masks */
1040 { 0, 0, 0,
1041 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
1042 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1043 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
1044 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
1045 0, 0, 0, 0, 0, 0, 0, 0, 0},
1046 /* host2rxdma mon ring masks */
1047 { 0, 0, 0,
1048 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
1049 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1050 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1052 /* rxdma2host mon ring masks */
1053 { 0, 0, 0,
1054 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
1055 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1056 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1058 /* rx err ring masks */
1059 { 0, 0, 0,
1060 WLAN_CFG_RX_ERR_RING_MASK_0,
1061 WLAN_CFG_RX_ERR_RING_MASK_1,
1062 WLAN_CFG_RX_ERR_RING_MASK_2,
1063 WLAN_CFG_RX_ERR_RING_MASK_3,
1064 0, 0, 0, 0, 0, 0, 0, 0, 0},
1065 /* rx wbm rel ring masks */
1066 { 0, 0, 0,
1067 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
1068 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
1069 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
1070 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
1071 0, 0, 0, 0, 0, 0, 0, 0, 0},
1072 /* reo status ring masks */
1073 { 0, 0, 0,
1074 WLAN_CFG_REO_STATUS_RING_MASK_0,
1075 WLAN_CFG_REO_STATUS_RING_MASK_1,
1076 WLAN_CFG_REO_STATUS_RING_MASK_2,
1077 WLAN_CFG_REO_STATUS_RING_MASK_3,
1078 0, 0, 0, 0, 0, 0, 0, 0, 0},
1079 /* rx_ring_near_full_irq mask */
1080 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1081 /* rx_ring_near_full_irq_2 mask */
1082 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1083 /* tx_ring_near_full_irq mask */
1084 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1085 /* host2txmon ring masks */
1086 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
1087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1088 /* tx mon ring masks */
1089 { WLAN_CFG_TX_MON_RING_MASK_0,
1090 WLAN_CFG_TX_MON_RING_MASK_1,
1091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1092 /* ppe wbm ds release ring ring mask */
1093 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1094 /* Reo2ppe ring mask */
1095 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1096 /* ppe2tcl ring mask */
1097 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1098 /* umac reset mask */
1099 {0, 0, 0, 0, 0, 0, 0, 0,
1100 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0},
1101 },
1102 /* Interrupt assignment for 12 MSI combination */
1103 {
1104 /* tx ring masks */
1105 { WLAN_CFG_TX_RING_MASK_0,
1106 WLAN_CFG_TX_RING_MASK_1,
1107 WLAN_CFG_TX_RING_MASK_2,
1108 WLAN_CFG_TX_RING_MASK_3,
1109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1110 /* rx ring masks */
1111 { 0, 0, 0, 0,
1112 WLAN_CFG_RX_RING_MASK_0,
1113 WLAN_CFG_RX_RING_MASK_1,
1114 WLAN_CFG_RX_RING_MASK_2,
1115 WLAN_CFG_RX_RING_MASK_3,
1116 0, 0, 0, 0, 0, 0, 0, 0},
1117 /* rx mon ring masks */
1118 { 0, 0, 0, 0, 0, 0, 0, 0,
1119 WLAN_CFG_RX_MON_RING_MASK_0,
1120 WLAN_CFG_RX_MON_RING_MASK_1,
1121 WLAN_CFG_RX_MON_RING_MASK_2,
1122 0, 0, 0, 0, 0},
1123 /* host2rxdma ring masks */
1124 { 0, 0, 0, 0, 0, 0, 0, 0,
1125 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
1126 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1127 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
1128 0, 0, 0, 0, 0},
1129 /* rxdma2host ring masks */
1130 { 0, 0, 0, 0, 0, 0, 0, 0,
1131 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
1132 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1133 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
1134 0, 0, 0, 0, 0},
1135 /* host2rxdma mon ring masks */
1136 { 0, 0, 0, 0, 0, 0, 0, 0,
1137 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
1138 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1139 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1140 0, 0, 0, 0, 0},
1141 /* rxdma2host mon ring masks */
1142 { 0, 0, 0, 0, 0, 0, 0, 0,
1143 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
1144 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1145 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1146 0, 0, 0, 0, 0},
1147 /* rx err ring masks */
1148 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1149 WLAN_CFG_RX_ERR_RING_MASK_0,
1150 0, 0, 0, 0},
1151 /* rx wbm rel ring masks */
1152 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1153 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
1154 0, 0, 0, 0},
1155 /* reo status ring masks */
1156 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1157 WLAN_CFG_REO_STATUS_RING_MASK_0,
1158 0, 0, 0, 0},
1159 /* rx_ring_near_full_irq mask */
1160 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1161 /* rx_ring_near_full_irq_2 mask */
1162 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1163 /* tx_ring_near_full_irq mask */
1164 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1165 /* host2txmon ring masks */
1166 { 0, 0, 0, 0, 0, 0, 0, 0,
1167 WLAN_CFG_HOST2TXMON_RING_MASK_0,
1168 0, 0, 0, 0, 0, 0, 0},
1169 /* tx mon ring masks */
1170 { 0, 0, 0, 0, 0, 0, 0, 0,
1171 WLAN_CFG_TX_MON_RING_MASK_0,
1172 WLAN_CFG_TX_MON_RING_MASK_1,
1173 0, 0, 0, 0, 0, 0},
1174 /* ppe ds wbm release ring ring mask */
1175 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1176 /* Reo2ppe ring mask */
1177 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1178 0, 0, 0, 0, 0, 0},
1179 /* ppe2tcl ring mask */
1180 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1181 /* umac reset mask */
1182 {0, 0, 0, 0, 0, 0, 0, 0,
1183 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0},
1184 },
1185 /* Interrupt assignment for 13 MSI combination */
1186 {
1187 /* tx ring masks */
1188 { WLAN_CFG_TX_RING_MASK_0,
1189 WLAN_CFG_TX_RING_MASK_1,
1190 WLAN_CFG_TX_RING_MASK_2,
1191 WLAN_CFG_TX_RING_MASK_3,
1192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1193 /* rx ring masks */
1194 { 0, 0, 0, 0,
1195 WLAN_CFG_RX_RING_MASK_0,
1196 WLAN_CFG_RX_RING_MASK_1,
1197 WLAN_CFG_RX_RING_MASK_2,
1198 WLAN_CFG_RX_RING_MASK_3,
1199 0, 0, 0, 0, 0, 0, 0, 0},
1200 /* rx mon ring masks */
1201 { 0, 0, 0, 0, 0, 0, 0, 0,
1202 WLAN_CFG_RX_MON_RING_MASK_0,
1203 WLAN_CFG_RX_MON_RING_MASK_1,
1204 WLAN_CFG_RX_MON_RING_MASK_2,
1205 0, 0, 0, 0, 0},
1206 /* host2rxdma ring masks */
1207 { 0, 0, 0, 0, 0, 0, 0, 0,
1208 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
1209 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1210 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
1211 0, 0, 0, 0, 0},
1212 /* rxdma2host ring masks */
1213 { 0, 0, 0, 0, 0, 0, 0, 0,
1214 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
1215 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1216 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
1217 0, 0, 0, 0, 0},
1218 /* host2rxdma mon ring masks */
1219 { 0, 0, 0, 0, 0, 0, 0, 0,
1220 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
1221 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1222 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1223 0, 0, 0, 0, 0},
1224 /* rxdma2host mon ring masks */
1225 { 0, 0, 0, 0, 0, 0, 0, 0,
1226 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
1227 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1228 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1229 0, 0, 0, 0, 0},
1230 /* rx err ring masks */
1231 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1232 WLAN_CFG_RX_ERR_RING_MASK_0,
1233 0, 0, 0, 0},
1234 /* rx wbm rel ring masks */
1235 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1236 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
1237 0, 0, 0, 0},
1238 /* reo status ring masks */
1239 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1240 WLAN_CFG_REO_STATUS_RING_MASK_0,
1241 0, 0, 0, 0},
1242 /* rx_ring_near_full_irq mask */
1243 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1244 /* rx_ring_near_full_irq_2 mask */
1245 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1246 /* tx_ring_near_full_irq mask */
1247 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1248 /* host2txmon ring masks */
1249 { 0, 0, 0, 0, 0, 0, 0, 0,
1250 WLAN_CFG_HOST2TXMON_RING_MASK_0,
1251 0, 0, 0, 0, 0, 0, 0},
1252 /* tx mon ring masks */
1253 { 0, 0, 0, 0, 0, 0, 0, 0,
1254 WLAN_CFG_TX_MON_RING_MASK_0,
1255 WLAN_CFG_TX_MON_RING_MASK_1,
1256 0, 0, 0, 0, 0, 0},
1257 /* ppe ds wbm release ring ring mask */
1258 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1259 /* Reo2ppe ring mask */
1260 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1261 0, 0, 0, 0, 0},
1262 /* ppe2tcl ring mask */
1263 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1264 /* umac reset mask */
1265 {0, 0, 0, 0, 0, 0, 0, 0,
1266 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0},
1267 },
1268 /* Interrupt assignment for 14 MSI combination */
1269 {
1270 /* tx ring masks */
1271 { WLAN_CFG_TX_RING_MASK_0,
1272 WLAN_CFG_TX_RING_MASK_1,
1273 WLAN_CFG_TX_RING_MASK_2,
1274 WLAN_CFG_TX_RING_MASK_3,
1275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1276 /* rx ring masks */
1277 { 0, 0, 0, 0,
1278 WLAN_CFG_RX_RING_MASK_0,
1279 WLAN_CFG_RX_RING_MASK_1,
1280 WLAN_CFG_RX_RING_MASK_2,
1281 WLAN_CFG_RX_RING_MASK_3,
1282 0, 0, 0, 0, 0, 0, 0, 0},
1283 /* rx mon ring masks */
1284 { 0, 0, 0, 0, 0, 0, 0, 0,
1285 WLAN_CFG_RX_MON_RING_MASK_0,
1286 WLAN_CFG_RX_MON_RING_MASK_1,
1287 WLAN_CFG_RX_MON_RING_MASK_2,
1288 0, 0, 0, 0, 0},
1289 /* host2rxdma ring masks */
1290 { 0, 0, 0, 0, 0, 0, 0, 0,
1291 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
1292 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1293 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
1294 0, 0, 0, 0, 0},
1295 /* rxdma2host ring masks */
1296 { 0, 0, 0, 0, 0, 0, 0, 0,
1297 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
1298 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1299 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
1300 0, 0, 0, 0, 0},
1301 /* host2rxdma mon ring masks */
1302 { 0, 0, 0, 0, 0, 0, 0, 0,
1303 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
1304 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1305 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1306 0, 0, 0, 0, 0},
1307 /* rxdma2host mon ring masks */
1308 { 0, 0, 0, 0, 0, 0, 0, 0,
1309 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
1310 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1311 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1312 0, 0, 0, 0, 0},
1313 /* rx err ring masks */
1314 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1315 WLAN_CFG_RX_ERR_RING_MASK_0,
1316 0, 0, 0, 0},
1317 /* rx wbm rel ring masks */
1318 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1319 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
1320 0, 0, 0, 0},
1321 /* reo status ring masks */
1322 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1323 WLAN_CFG_REO_STATUS_RING_MASK_0,
1324 0, 0, 0, 0},
1325 /* rx_ring_near_full_irq mask */
1326 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1327 /* rx_ring_near_full_irq_2 mask */
1328 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1329 /* tx_ring_near_full_irq mask */
1330 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1331 /* host2txmon ring masks */
1332 { 0, 0, 0, 0, 0, 0, 0, 0,
1333 WLAN_CFG_HOST2TXMON_RING_MASK_0,
1334 0, 0, 0, 0, 0, 0, 0},
1335 /* tx mon ring masks */
1336 { 0, 0, 0, 0, 0, 0, 0, 0,
1337 WLAN_CFG_TX_MON_RING_MASK_0,
1338 WLAN_CFG_TX_MON_RING_MASK_1,
1339 0, 0, 0, 0, 0, 0},
1340 /* ppe ds wbm release ring ring mask */
1341 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1342 /* Reo2ppe ring mask */
1343 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1344 /* ppe2tcl ring mask */
1345 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1346 /* umac reset mask */
1347 {0, 0, 0, 0, 0, 0, 0, 0,
1348 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0},
1349 },
1350 /* Interrupt assignment for 15 MSI combination */
1351 {
1352 /* tx ring masks */
1353 { WLAN_CFG_TX_RING_MASK_0,
1354 WLAN_CFG_TX_RING_MASK_1,
1355 WLAN_CFG_TX_RING_MASK_2,
1356 WLAN_CFG_TX_RING_MASK_3,
1357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1358 /* rx ring masks */
1359 { 0, 0, 0, 0,
1360 WLAN_CFG_RX_RING_MASK_0,
1361 WLAN_CFG_RX_RING_MASK_1,
1362 WLAN_CFG_RX_RING_MASK_2,
1363 WLAN_CFG_RX_RING_MASK_3,
1364 0, 0, 0, 0, 0, 0, 0, 0},
1365 /* rx mon ring masks */
1366 { 0, 0, 0, 0, 0, 0, 0, 0,
1367 WLAN_CFG_RX_MON_RING_MASK_0,
1368 WLAN_CFG_RX_MON_RING_MASK_1,
1369 WLAN_CFG_RX_MON_RING_MASK_2,
1370 0, 0, 0, 0, 0},
1371 /* host2rxdma ring masks */
1372 { 0, 0, 0, 0, 0, 0, 0, 0,
1373 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
1374 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1375 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
1376 0, 0, 0, 0, 0},
1377 /* rxdma2host ring masks */
1378 { 0, 0, 0, 0, 0, 0, 0, 0,
1379 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
1380 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1381 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
1382 0, 0, 0, 0, 0},
1383 /* host2rxdma mon ring masks */
1384 { 0, 0, 0, 0, 0, 0, 0, 0,
1385 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
1386 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1387 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1388 0, 0, 0, 0, 0},
1389 /* rxdma2host mon ring masks */
1390 { 0, 0, 0, 0, 0, 0, 0, 0,
1391 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
1392 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1393 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1394 0, 0, 0, 0, 0},
1395 /* rx err ring masks */
1396 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1397 WLAN_CFG_RX_ERR_RING_MASK_0,
1398 0, 0, 0, 0},
1399 /* rx wbm rel ring masks */
1400 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1401 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
1402 0, 0, 0, 0},
1403 /* reo status ring masks */
1404 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1405 WLAN_CFG_REO_STATUS_RING_MASK_0,
1406 0, 0, 0, 0},
1407 /* rx_ring_near_full_irq mask */
1408 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1409 /* rx_ring_near_full_irq_2 mask */
1410 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1411 /* tx_ring_near_full_irq mask */
1412 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1413 /* host2txmon ring masks */
1414 { 0, 0, 0, 0, 0, 0, 0, 0,
1415 WLAN_CFG_HOST2TXMON_RING_MASK_0,
1416 0, 0, 0, 0, 0, 0, 0},
1417 /* tx mon ring masks */
1418 { 0, 0, 0, 0, 0, 0, 0, 0,
1419 WLAN_CFG_TX_MON_RING_MASK_0,
1420 WLAN_CFG_TX_MON_RING_MASK_1,
1421 0, 0, 0, 0, 0, 0},
1422 /* ppe ds wbm release ring ring mask */
1423 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1424 /* Reo2ppe ring mask */
1425 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1426 0, 0, 0, 0, 0},
1427 /* ppe2tcl ring mask */
1428 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1429 /* umac reset mask */
1430 {0, 0, 0, 0, 0, 0, 0, 0,
1431 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0},
1432 },
1433 /* Interrupt assignment for 16 MSI combination */
1434 {
1435 /* tx ring masks */
1436 { WLAN_CFG_TX_RING_MASK_0,
1437 WLAN_CFG_TX_RING_MASK_1,
1438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1439 /* rx ring masks */
1440 { 0, 0, 0, 0,
1441 WLAN_CFG_RX_RING_MASK_0,
1442 WLAN_CFG_RX_RING_MASK_1,
1443 WLAN_CFG_RX_RING_MASK_2,
1444 0, 0, 0, 0, 0, 0, 0, 0, 0},
1445 /* rx mon ring masks */
1446 { 0, 0, 0, 0, 0, 0, 0, 0,
1447 WLAN_CFG_RX_MON_RING_MASK_0,
1448 WLAN_CFG_RX_MON_RING_MASK_1,
1449 WLAN_CFG_RX_MON_RING_MASK_2,
1450 0, 0, 0, 0, 0},
1451 /* host2rxdma ring masks */
1452 { 0, 0, 0, 0, 0, 0, 0, 0,
1453 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
1454 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1455 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
1456 0, 0, 0, 0, 0},
1457 /* rxdma2host ring masks */
1458 { 0, 0, 0, 0, 0, 0, 0, 0,
1459 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
1460 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1461 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
1462 0, 0, 0, 0, 0},
1463 /* host2rxdma mon ring masks */
1464 { 0, 0, 0, 0, 0, 0, 0, 0,
1465 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
1466 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1467 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1468 0, 0, 0, 0, 0},
1469 /* rxdma2host mon ring masks */
1470 { 0, 0, 0, 0, 0, 0, 0, 0,
1471 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
1472 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1473 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1474 0, 0, 0, 0, 0},
1475 /* rx err ring masks */
1476 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1477 WLAN_CFG_RX_ERR_RING_MASK_0,
1478 0, 0, 0, 0},
1479 /* rx wbm rel ring masks */
1480 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
1482 0, 0, 0, 0},
1483 /* reo status ring masks */
1484 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1485 WLAN_CFG_REO_STATUS_RING_MASK_0,
1486 0, 0, 0, 0},
1487 /* rx_ring_near_full_irq mask */
1488 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1489 /* rx_ring_near_full_irq_2 mask */
1490 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1491 /* tx_ring_near_full_irq mask */
1492 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1493 /* host2txmon ring masks */
1494 { 0, 0, 0, 0, 0, 0, 0, 0,
1495 WLAN_CFG_HOST2TXMON_RING_MASK_0,
1496 0, 0, 0, 0, 0, 0, 0},
1497 /* tx mon ring masks */
1498 { 0, 0, 0, 0, 0, 0, 0, 0, 0,
1499 WLAN_CFG_TX_MON_RING_MASK_0,
1500 WLAN_CFG_TX_MON_RING_MASK_1,
1501 0, 0, 0, 0, 0},
1502 /* ppe ds wbm release ring ring mask */
1503 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1504 /* Reo2ppe ring mask */
1505 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1506 0, 0, 0, 0, 0},
1507 /* ppe2tcl ring mask */
1508 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1509 /* umac reset mask */
1510 {0, 0, 0, 0, 0, 0, 0, 0,
1511 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0},
1512 },
1513 };
1514 #else
1515
1516 /* DS and Umac reset not supported if available MSI lines are less than 8 */
1517 static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIONS] = {
1518 /* Interrupt assignment for integrated configuration */
1519 {
1520 /* tx ring masks */
1521 { WLAN_CFG_TX_RING_MASK_0,
1522 WLAN_CFG_TX_RING_MASK_1,
1523 WLAN_CFG_TX_RING_MASK_2,
1524 WLAN_CFG_TX_RING_MASK_3,
1525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1526 /* rx ring masks */
1527 { 0, 0, 0, 0, 0, 0, 0,
1528 WLAN_CFG_RX_RING_MASK_0,
1529 WLAN_CFG_RX_RING_MASK_1,
1530 WLAN_CFG_RX_RING_MASK_2,
1531 WLAN_CFG_RX_RING_MASK_3,
1532 0, 0, 0, 0, 0},
1533 /* rx mon ring masks */
1534 { 0, 0, 0, 0,
1535 WLAN_CFG_RX_MON_RING_MASK_0,
1536 WLAN_CFG_RX_MON_RING_MASK_1,
1537 WLAN_CFG_RX_MON_RING_MASK_2,
1538 0, 0, 0, 0, 0, 0, 0, 0, 0},
1539 /* host2rxdma ring masks */
1540 { WLAN_CFG_HOST2RXDMA_RING_MASK_0,
1541 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1542 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
1543 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
1544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1545 /* rxdma2host ring masks */
1546 { WLAN_CFG_RXDMA2HOST_RING_MASK_0,
1547 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1548 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
1549 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
1550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1551 /* host2rxdma mon ring masks */
1552 { 0, 0, 0, 0,
1553 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
1554 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1555 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1556 0, 0, 0, 0, 0, 0, 0, 0, 0},
1557 /* rxdma2host mon ring masks */
1558 { 0, 0, 0, 0,
1559 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
1560 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1561 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1562 0, 0, 0, 0, 0, 0, 0, 0, 0},
1563 /* rx err ring masks */
1564 { WLAN_CFG_RX_ERR_RING_MASK_0,
1565 WLAN_CFG_RX_ERR_RING_MASK_1,
1566 WLAN_CFG_RX_ERR_RING_MASK_2,
1567 WLAN_CFG_RX_ERR_RING_MASK_3,
1568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1569 /* rx wbm rel ring masks */
1570 { WLAN_CFG_RX_WBM_REL_RING_MASK_0,
1571 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
1572 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
1573 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
1574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1575 /* reo status ring masks */
1576 { WLAN_CFG_REO_STATUS_RING_MASK_0,
1577 WLAN_CFG_REO_STATUS_RING_MASK_1,
1578 WLAN_CFG_REO_STATUS_RING_MASK_2,
1579 WLAN_CFG_REO_STATUS_RING_MASK_3,
1580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1581 /* rx_ring_near_full_irq mask */
1582 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1583 /* rx_ring_near_full_irq_2 mask */
1584 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1585 /* tx_ring_near_full_irq mask */
1586 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1587 /* host2txmon ring masks */
1588 {WLAN_CFG_HOST2TXMON_RING_MASK_0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1589 0, 0, 0, 0, 0, 0},
1590 /* tx mon ring masks */
1591 {WLAN_CFG_TX_MON_RING_MASK_0, WLAN_CFG_TX_MON_RING_MASK_1, 0,
1592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1593 /* ppe ds wbm release ring ring mask */
1594 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1595 WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0},
1596 /* Reo2ppe ring mask */
1597 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1598 WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0},
1599 /* ppe2tcl ring mask */
1600 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1601 WLAN_CFG_PPE2TCL_RING_MASK_0, 0},
1602 /* umac reset mask */
1603 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1604 WLAN_CFG_UMAC_RESET_INTR_MASK_0},
1605 },
1606 /* Interrupt assignment for 1 MSI combination */
1607 {
1608 /* tx ring masks */
1609 { WLAN_CFG_TX_RING_MASK_0 |
1610 WLAN_CFG_TX_RING_MASK_1 |
1611 WLAN_CFG_TX_RING_MASK_2 |
1612 WLAN_CFG_TX_RING_MASK_3,
1613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1614 /* rx ring masks */
1615 { WLAN_CFG_RX_RING_MASK_0 |
1616 WLAN_CFG_RX_RING_MASK_1 |
1617 WLAN_CFG_RX_RING_MASK_2 |
1618 WLAN_CFG_RX_RING_MASK_3,
1619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1620 /* rx mon ring masks */
1621 { WLAN_CFG_RX_MON_RING_MASK_0 |
1622 WLAN_CFG_RX_MON_RING_MASK_1 |
1623 WLAN_CFG_RX_MON_RING_MASK_2,
1624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1625 /* host2rxdma ring masks */
1626 { WLAN_CFG_HOST2RXDMA_RING_MASK_0 |
1627 WLAN_CFG_HOST2RXDMA_RING_MASK_1 |
1628 WLAN_CFG_HOST2RXDMA_RING_MASK_2 |
1629 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
1630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1631 /* rxdma2host ring masks */
1632 { WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
1633 WLAN_CFG_RXDMA2HOST_RING_MASK_1 |
1634 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
1635 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
1636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1637 /* host2rxdma mon ring masks */
1638 { WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 |
1639 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1 |
1640 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1642 /* rxdma2host mon ring masks */
1643 { WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 |
1644 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1 |
1645 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1647 /* rx err ring masks */
1648 { WLAN_CFG_RX_ERR_RING_MASK_0 |
1649 WLAN_CFG_RX_ERR_RING_MASK_1 |
1650 WLAN_CFG_RX_ERR_RING_MASK_2 |
1651 WLAN_CFG_RX_ERR_RING_MASK_3,
1652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1653 /* rx wbm rel ring masks */
1654 { WLAN_CFG_RX_WBM_REL_RING_MASK_0 |
1655 WLAN_CFG_RX_WBM_REL_RING_MASK_1 |
1656 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
1657 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
1658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1659 /* reo status ring masks */
1660 { WLAN_CFG_REO_STATUS_RING_MASK_0 |
1661 WLAN_CFG_REO_STATUS_RING_MASK_1 |
1662 WLAN_CFG_REO_STATUS_RING_MASK_2 |
1663 WLAN_CFG_REO_STATUS_RING_MASK_3,
1664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1665 /* rx_ring_near_full_irq mask */
1666 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1667 /* rx_ring_near_full_irq_2 mask */
1668 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1669 /* tx_ring_near_full_irq mask */
1670 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1671 /* host2txmon ring masks */
1672 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
1673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1674 /* tx mon ring masks */
1675 { WLAN_CFG_TX_MON_RING_MASK_0 |
1676 WLAN_CFG_TX_MON_RING_MASK_1,
1677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1678 /* ppe ds wbm release ring ring mask */
1679 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1680 /* Reo2ppe ring mask */
1681 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1682 /* ppe2tcl ring mask */
1683 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1684 /* umac reset mask */
1685 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1686 },
1687 /* Interrupt assignment for 2 MSI combination */
1688 {
1689 /* tx ring masks */
1690 { WLAN_CFG_TX_RING_MASK_0 |
1691 WLAN_CFG_TX_RING_MASK_1,
1692 WLAN_CFG_TX_RING_MASK_2 |
1693 WLAN_CFG_TX_RING_MASK_3,
1694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1695 /* rx ring masks */
1696 { WLAN_CFG_RX_RING_MASK_0 |
1697 WLAN_CFG_RX_RING_MASK_1,
1698 WLAN_CFG_RX_RING_MASK_2 |
1699 WLAN_CFG_RX_RING_MASK_3,
1700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1701 /* rx mon ring masks */
1702 { WLAN_CFG_RX_MON_RING_MASK_0 |
1703 WLAN_CFG_RX_MON_RING_MASK_1,
1704 WLAN_CFG_RX_MON_RING_MASK_2,
1705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1706 /* host2rxdma ring masks */
1707 { WLAN_CFG_HOST2RXDMA_RING_MASK_0 |
1708 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1709 WLAN_CFG_HOST2RXDMA_RING_MASK_2 |
1710 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
1711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1712 /* rxdma2host ring masks */
1713 { WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
1714 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1715 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
1716 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
1717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1718 /* host2rxdma mon ring masks */
1719 { WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 |
1720 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1721 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1723 /* rxdma2host mon ring masks */
1724 { WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 |
1725 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1726 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1728 /* rx err ring masks */
1729 { WLAN_CFG_RX_ERR_RING_MASK_0 |
1730 WLAN_CFG_RX_ERR_RING_MASK_1,
1731 WLAN_CFG_RX_ERR_RING_MASK_2 |
1732 WLAN_CFG_RX_ERR_RING_MASK_3,
1733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1734 /* rx wbm rel ring masks */
1735 { WLAN_CFG_RX_WBM_REL_RING_MASK_0 |
1736 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
1737 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
1738 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
1739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1740 /* reo status ring masks */
1741 { WLAN_CFG_REO_STATUS_RING_MASK_0 |
1742 WLAN_CFG_REO_STATUS_RING_MASK_1,
1743 WLAN_CFG_REO_STATUS_RING_MASK_2 |
1744 WLAN_CFG_REO_STATUS_RING_MASK_3,
1745 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1746 /* rx_ring_near_full_irq mask */
1747 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1748 /* rx_ring_near_full_irq_2 mask */
1749 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1750 /* tx_ring_near_full_irq mask */
1751 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1752 /* host2txmon ring masks */
1753 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
1754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1755 /* tx mon ring masks */
1756 { WLAN_CFG_TX_MON_RING_MASK_0,
1757 WLAN_CFG_TX_MON_RING_MASK_1,
1758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1759 /* ppe ds wbm release ring ring mask */
1760 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1761 /* Reo2ppe ring mask */
1762 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1763 /* ppe2tcl ring mask */
1764 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1765 /* umac reset mask */
1766 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1767 },
1768 /* Interrupt assignment for 3 MSI combination */
1769 {
1770 /* tx ring masks */
1771 { WLAN_CFG_TX_RING_MASK_0 |
1772 WLAN_CFG_TX_RING_MASK_1,
1773 WLAN_CFG_TX_RING_MASK_2 |
1774 WLAN_CFG_TX_RING_MASK_3,
1775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1776 /* rx ring masks */
1777 { WLAN_CFG_RX_RING_MASK_0 |
1778 WLAN_CFG_RX_RING_MASK_1,
1779 WLAN_CFG_RX_RING_MASK_2 |
1780 WLAN_CFG_RX_RING_MASK_3,
1781 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1782 /* rx mon ring masks */
1783 { 0, 0,
1784 WLAN_CFG_RX_MON_RING_MASK_0 |
1785 WLAN_CFG_RX_MON_RING_MASK_1 |
1786 WLAN_CFG_RX_MON_RING_MASK_2,
1787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1788 /* host2rxdma ring masks */
1789 { 0, 0,
1790 WLAN_CFG_HOST2RXDMA_RING_MASK_0 |
1791 WLAN_CFG_HOST2RXDMA_RING_MASK_1 |
1792 WLAN_CFG_HOST2RXDMA_RING_MASK_2 |
1793 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
1794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1795 /* rxdma2host ring masks */
1796 { 0, 0,
1797 WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
1798 WLAN_CFG_RXDMA2HOST_RING_MASK_1 |
1799 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
1800 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
1801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1802 /* host2rxdma mon ring masks */
1803 { 0, 0,
1804 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 |
1805 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1 |
1806 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1808 /* rxdma2host mon ring masks */
1809 { 0, 0,
1810 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 |
1811 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1 |
1812 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1814 /* rx err ring masks */
1815 { 0, 0,
1816 WLAN_CFG_RX_ERR_RING_MASK_0 |
1817 WLAN_CFG_RX_ERR_RING_MASK_1 |
1818 WLAN_CFG_RX_ERR_RING_MASK_2 |
1819 WLAN_CFG_RX_ERR_RING_MASK_3,
1820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1821 /* rx wbm rel ring masks */
1822 { 0, 0,
1823 WLAN_CFG_RX_WBM_REL_RING_MASK_0 |
1824 WLAN_CFG_RX_WBM_REL_RING_MASK_1 |
1825 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
1826 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
1827 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1828 /* reo status ring masks */
1829 { 0, 0,
1830 WLAN_CFG_REO_STATUS_RING_MASK_0 |
1831 WLAN_CFG_REO_STATUS_RING_MASK_1 |
1832 WLAN_CFG_REO_STATUS_RING_MASK_2 |
1833 WLAN_CFG_REO_STATUS_RING_MASK_3,
1834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1835 /* rx_ring_near_full_irq mask */
1836 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1837 /* rx_ring_near_full_irq_2 mask */
1838 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1839 /* tx_ring_near_full_irq mask */
1840 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1841 /* host2txmon ring masks */
1842 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
1843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1844 /* tx mon ring masks */
1845 { WLAN_CFG_TX_MON_RING_MASK_0,
1846 WLAN_CFG_TX_MON_RING_MASK_1,
1847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1848 /* ppe ds wbm release ring ring mask */
1849 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1850 /* Reo2ppe ring mask */
1851 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1852 /* ppe2tcl ring mask */
1853 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1854 /* umac reset mask */
1855 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1856 },
1857 /* Interrupt assignment for 4 MSI combination */
1858 {
1859 /* tx ring masks */
1860 { WLAN_CFG_TX_RING_MASK_0,
1861 WLAN_CFG_TX_RING_MASK_1,
1862 WLAN_CFG_TX_RING_MASK_2,
1863 WLAN_CFG_TX_RING_MASK_3,
1864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1865 /* rx ring masks */
1866 { WLAN_CFG_RX_RING_MASK_0,
1867 WLAN_CFG_RX_RING_MASK_1,
1868 WLAN_CFG_RX_RING_MASK_2,
1869 WLAN_CFG_RX_RING_MASK_3,
1870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1871 /* rx mon ring masks */
1872 { WLAN_CFG_RX_MON_RING_MASK_0,
1873 WLAN_CFG_RX_MON_RING_MASK_1,
1874 WLAN_CFG_RX_MON_RING_MASK_2,
1875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1876 /* host2rxdma ring masks */
1877 { WLAN_CFG_HOST2RXDMA_RING_MASK_0,
1878 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
1879 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
1880 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
1881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1882 /* rxdma2host ring masks */
1883 { WLAN_CFG_RXDMA2HOST_RING_MASK_0,
1884 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
1885 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
1886 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
1887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1888 /* host2rxdma mon ring masks */
1889 { WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
1890 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
1891 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1893 /* rxdma2host mon ring masks */
1894 { WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
1895 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
1896 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1898 /* rx err ring masks */
1899 { WLAN_CFG_RX_ERR_RING_MASK_0,
1900 WLAN_CFG_RX_ERR_RING_MASK_1,
1901 WLAN_CFG_RX_ERR_RING_MASK_2,
1902 WLAN_CFG_RX_ERR_RING_MASK_3,
1903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1904 /* rx wbm rel ring masks */
1905 { WLAN_CFG_RX_WBM_REL_RING_MASK_0,
1906 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
1907 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
1908 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
1909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1910 /* reo status ring masks */
1911 { WLAN_CFG_REO_STATUS_RING_MASK_0,
1912 WLAN_CFG_REO_STATUS_RING_MASK_1,
1913 WLAN_CFG_REO_STATUS_RING_MASK_2,
1914 WLAN_CFG_REO_STATUS_RING_MASK_3,
1915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1916 /* rx_ring_near_full_irq mask */
1917 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1918 /* rx_ring_near_full_irq_2 mask */
1919 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1920 /* tx_ring_near_full_irq mask */
1921 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1922 /* host2txmon ring masks */
1923 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
1924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1925 /* tx mon ring masks */
1926 { WLAN_CFG_TX_MON_RING_MASK_0,
1927 WLAN_CFG_TX_MON_RING_MASK_1,
1928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1929 /* ppe ds wbm release ring ring mask */
1930 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1931 /* Reo2ppe ring mask */
1932 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1933 /* ppe2tcl ring mask */
1934 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1935 /* umac reset mask */
1936 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1937 },
1938 /* Interrupt assignment for 5 MSI combination */
1939 {
1940 /* tx ring masks */
1941 { WLAN_CFG_TX_RING_MASK_0,
1942 WLAN_CFG_TX_RING_MASK_1,
1943 WLAN_CFG_TX_RING_MASK_2,
1944 WLAN_CFG_TX_RING_MASK_3,
1945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1946 /* rx ring masks */
1947 { WLAN_CFG_RX_RING_MASK_0,
1948 WLAN_CFG_RX_RING_MASK_1,
1949 WLAN_CFG_RX_RING_MASK_2,
1950 WLAN_CFG_RX_RING_MASK_3,
1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1952 /* rx mon ring masks */
1953 { 0, 0, 0, 0,
1954 WLAN_CFG_RX_MON_RING_MASK_0 |
1955 WLAN_CFG_RX_MON_RING_MASK_1 |
1956 WLAN_CFG_RX_MON_RING_MASK_2,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1958 /* host2rxdma ring masks */
1959 { 0, 0, 0, 0,
1960 WLAN_CFG_HOST2RXDMA_RING_MASK_0 |
1961 WLAN_CFG_HOST2RXDMA_RING_MASK_1 |
1962 WLAN_CFG_HOST2RXDMA_RING_MASK_2 |
1963 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
1964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1965 /* rxdma2host ring masks */
1966 { 0, 0, 0, 0,
1967 WLAN_CFG_RXDMA2HOST_RING_MASK_0 |
1968 WLAN_CFG_RXDMA2HOST_RING_MASK_1 |
1969 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
1970 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
1971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1972 /* host2rxdma mon ring masks */
1973 { 0, 0, 0, 0,
1974 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0 |
1975 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1 |
1976 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
1977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1978 /* rxdma2host mon ring masks */
1979 { 0, 0, 0, 0,
1980 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0 |
1981 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1 |
1982 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
1983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1984 /* rx err ring masks */
1985 { 0, 0, 0, 0,
1986 WLAN_CFG_RX_ERR_RING_MASK_0 |
1987 WLAN_CFG_RX_ERR_RING_MASK_1 |
1988 WLAN_CFG_RX_ERR_RING_MASK_2 |
1989 WLAN_CFG_RX_ERR_RING_MASK_3,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1991 /* rx wbm rel ring masks */
1992 { 0, 0, 0, 0,
1993 WLAN_CFG_RX_WBM_REL_RING_MASK_0 |
1994 WLAN_CFG_RX_WBM_REL_RING_MASK_1 |
1995 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
1996 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
1997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
1998 /* reo status ring masks */
1999 { 0, 0, 0, 0,
2000 WLAN_CFG_REO_STATUS_RING_MASK_0 |
2001 WLAN_CFG_REO_STATUS_RING_MASK_1 |
2002 WLAN_CFG_REO_STATUS_RING_MASK_2 |
2003 WLAN_CFG_REO_STATUS_RING_MASK_3,
2004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2005 /* rx_ring_near_full_irq mask */
2006 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2007 /* rx_ring_near_full_irq_2 mask */
2008 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2009 /* tx_ring_near_full_irq mask */
2010 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2011 /* host2txmon ring masks */
2012 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
2013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2014 /* tx mon ring masks */
2015 { WLAN_CFG_TX_MON_RING_MASK_0,
2016 WLAN_CFG_TX_MON_RING_MASK_1,
2017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2018 /* ppe ds wbm release ring ring mask */
2019 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2020 /* Reo2ppe ring mask */
2021 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2022 /* ppe2tcl ring mask */
2023 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2024 /* umac reset mask */
2025 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2026 },
2027 /* Interrupt assignment for 6 MSI combination */
2028 {
2029 /* tx ring masks */
2030 { WLAN_CFG_TX_RING_MASK_0,
2031 WLAN_CFG_TX_RING_MASK_1,
2032 WLAN_CFG_TX_RING_MASK_2,
2033 WLAN_CFG_TX_RING_MASK_3,
2034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2035 /* rx ring masks */
2036 { 0, 0,
2037 WLAN_CFG_RX_RING_MASK_0,
2038 WLAN_CFG_RX_RING_MASK_1,
2039 WLAN_CFG_RX_RING_MASK_2,
2040 WLAN_CFG_RX_RING_MASK_3,
2041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2042 /* rx mon ring masks */
2043 { WLAN_CFG_RX_MON_RING_MASK_0,
2044 WLAN_CFG_RX_MON_RING_MASK_1,
2045 WLAN_CFG_RX_MON_RING_MASK_2,
2046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2047 /* host2rxdma ring masks */
2048 { WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2049 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2050 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2051 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
2052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2053 /* rxdma2host ring masks */
2054 { WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2055 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2056 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2057 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
2058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2059 /* host2rxdma mon ring masks */
2060 { WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2061 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2062 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2064 /* rxdma2host mon ring masks */
2065 { WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2066 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2067 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2069 /* rx err ring masks */
2070 { WLAN_CFG_RX_ERR_RING_MASK_0,
2071 WLAN_CFG_RX_ERR_RING_MASK_1,
2072 WLAN_CFG_RX_ERR_RING_MASK_2,
2073 WLAN_CFG_RX_ERR_RING_MASK_3,
2074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2075 /* rx wbm rel ring masks */
2076 { WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2077 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
2078 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
2079 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
2080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2081 /* reo status ring masks */
2082 { WLAN_CFG_REO_STATUS_RING_MASK_0,
2083 WLAN_CFG_REO_STATUS_RING_MASK_1,
2084 WLAN_CFG_REO_STATUS_RING_MASK_2,
2085 WLAN_CFG_REO_STATUS_RING_MASK_3,
2086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2087 /* rx_ring_near_full_irq mask */
2088 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2089 /* rx_ring_near_full_irq_2 mask */
2090 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2091 /* tx_ring_near_full_irq mask */
2092 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2093 /* host2txmon ring masks */
2094 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
2095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2096 /* tx mon ring masks */
2097 { WLAN_CFG_TX_MON_RING_MASK_0,
2098 WLAN_CFG_TX_MON_RING_MASK_1,
2099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2100 /* ppe ds wbm release ring ring mask */
2101 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2102 /* Reo2ppe ring mask */
2103 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2104 /* ppe2tcl ring mask */
2105 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2106 /* umac reset mask */
2107 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2108 },
2109 /* Interrupt assignment for 7 MSI combination */
2110 {
2111 /* tx ring masks */
2112 { WLAN_CFG_TX_RING_MASK_0,
2113 WLAN_CFG_TX_RING_MASK_1,
2114 WLAN_CFG_TX_RING_MASK_2,
2115 WLAN_CFG_TX_RING_MASK_3,
2116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2117 /* rx ring masks */
2118 { 0, 0, 0,
2119 WLAN_CFG_RX_RING_MASK_0,
2120 WLAN_CFG_RX_RING_MASK_1,
2121 WLAN_CFG_RX_RING_MASK_2,
2122 WLAN_CFG_RX_RING_MASK_3,
2123 0, 0, 0, 0, 0, 0, 0, 0},
2124 /* rx mon ring masks */
2125 { 0, 0, 0,
2126 WLAN_CFG_RX_MON_RING_MASK_0,
2127 WLAN_CFG_RX_MON_RING_MASK_1,
2128 WLAN_CFG_RX_MON_RING_MASK_2,
2129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2130 /* host2rxdma ring masks */
2131 { 0, 0, 0,
2132 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2133 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2134 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2135 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
2136 0, 0, 0, 0, 0, 0, 0, 0, 0},
2137 /* rxdma2host ring masks */
2138 { 0, 0, 0,
2139 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2140 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2141 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2142 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
2143 0, 0, 0, 0, 0, 0, 0, 0, 0},
2144 /* host2rxdma mon ring masks */
2145 { 0, 0, 0,
2146 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2147 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2148 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2150 /* rxdma2host mon ring masks */
2151 { 0, 0, 0,
2152 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2153 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2154 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2156 /* rx err ring masks */
2157 { 0, 0, 0,
2158 WLAN_CFG_RX_ERR_RING_MASK_0,
2159 WLAN_CFG_RX_ERR_RING_MASK_1,
2160 WLAN_CFG_RX_ERR_RING_MASK_2,
2161 WLAN_CFG_RX_ERR_RING_MASK_3,
2162 0, 0, 0, 0, 0, 0, 0, 0, 0},
2163 /* rx wbm rel ring masks */
2164 { 0, 0, 0,
2165 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2166 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
2167 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
2168 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
2169 0, 0, 0, 0, 0, 0, 0, 0, 0},
2170 /* reo status ring masks */
2171 { 0, 0, 0,
2172 WLAN_CFG_REO_STATUS_RING_MASK_0,
2173 WLAN_CFG_REO_STATUS_RING_MASK_1,
2174 WLAN_CFG_REO_STATUS_RING_MASK_2,
2175 WLAN_CFG_REO_STATUS_RING_MASK_3,
2176 0, 0, 0, 0, 0, 0, 0, 0, 0},
2177 /* rx_ring_near_full_irq mask */
2178 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2179 /* rx_ring_near_full_irq_2 mask */
2180 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2181 /* tx_ring_near_full_irq mask */
2182 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2183 /* host2txmon ring masks */
2184 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
2185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2186 /* tx mon ring masks */
2187 { WLAN_CFG_TX_MON_RING_MASK_0,
2188 WLAN_CFG_TX_MON_RING_MASK_1,
2189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2190 /* ppe ds wbm release ring ring mask */
2191 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2192 /* Reo2ppe ring mask */
2193 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2194 /* ppe2tcl ring mask */
2195 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2196 /* umac reset mask */
2197 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2198 },
2199 /* Interrupt assignment for 8 MSI combination */
2200 {
2201 /* tx ring masks */
2202 { WLAN_CFG_TX_RING_MASK_0,
2203 WLAN_CFG_TX_RING_MASK_1,
2204 WLAN_CFG_TX_RING_MASK_2,
2205 WLAN_CFG_TX_RING_MASK_3,
2206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2207 /* rx ring masks */
2208 { 0, 0, 0, 0,
2209 WLAN_CFG_RX_RING_MASK_0,
2210 WLAN_CFG_RX_RING_MASK_1,
2211 WLAN_CFG_RX_RING_MASK_2,
2212 WLAN_CFG_RX_RING_MASK_3,
2213 0, 0, 0, 0, 0, 0, 0, 0},
2214 /* rx mon ring masks */
2215 { 0, 0, 0,
2216 WLAN_CFG_RX_MON_RING_MASK_0,
2217 WLAN_CFG_RX_MON_RING_MASK_1,
2218 WLAN_CFG_RX_MON_RING_MASK_2,
2219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2220 /* host2rxdma ring masks */
2221 { 0, 0, 0,
2222 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2223 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2224 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2225 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
2226 0, 0, 0, 0, 0, 0, 0, 0, 0},
2227 /* rxdma2host ring masks */
2228 { 0, 0, 0,
2229 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2230 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2231 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2232 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
2233 0, 0, 0, 0, 0, 0, 0, 0, 0},
2234 /* host2rxdma mon ring masks */
2235 { 0, 0, 0,
2236 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2237 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2238 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2240 /* rxdma2host mon ring masks */
2241 { 0, 0, 0,
2242 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2243 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2244 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2246 /* rx err ring masks */
2247 { 0, 0, 0,
2248 WLAN_CFG_RX_ERR_RING_MASK_0,
2249 WLAN_CFG_RX_ERR_RING_MASK_1,
2250 WLAN_CFG_RX_ERR_RING_MASK_2,
2251 WLAN_CFG_RX_ERR_RING_MASK_3,
2252 0, 0, 0, 0, 0, 0, 0, 0, 0},
2253 /* rx wbm rel ring masks */
2254 { 0, 0, 0,
2255 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2256 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
2257 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
2258 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
2259 0, 0, 0, 0, 0, 0, 0, 0, 0},
2260 /* reo status ring masks */
2261 { 0, 0, 0,
2262 WLAN_CFG_REO_STATUS_RING_MASK_0,
2263 WLAN_CFG_REO_STATUS_RING_MASK_1,
2264 WLAN_CFG_REO_STATUS_RING_MASK_2,
2265 WLAN_CFG_REO_STATUS_RING_MASK_3,
2266 0, 0, 0, 0, 0, 0, 0, 0, 0},
2267 /* rx_ring_near_full_irq mask */
2268 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2269 /* rx_ring_near_full_irq_2 mask */
2270 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2271 /* tx_ring_near_full_irq mask */
2272 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2273 /* host2txmon ring masks */
2274 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
2275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2276 /* tx mon ring masks */
2277 { WLAN_CFG_TX_MON_RING_MASK_0,
2278 WLAN_CFG_TX_MON_RING_MASK_1,
2279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2280 /* ppe ds wbm release ring ring mask */
2281 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2282 /* Reo2ppe ring mask */
2283 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2284 /* ppe2tcl ring mask */
2285 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2286 /* umac reset mask */
2287 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2288 },
2289 /* Interrupt assignment for 9 MSI combination */
2290 {
2291 /* tx ring masks */
2292 { WLAN_CFG_TX_RING_MASK_0,
2293 WLAN_CFG_TX_RING_MASK_1,
2294 WLAN_CFG_TX_RING_MASK_2,
2295 WLAN_CFG_TX_RING_MASK_3,
2296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2297 /* rx ring masks */
2298 { 0, 0, 0, 0,
2299 WLAN_CFG_RX_RING_MASK_0,
2300 WLAN_CFG_RX_RING_MASK_1,
2301 WLAN_CFG_RX_RING_MASK_2,
2302 WLAN_CFG_RX_RING_MASK_3,
2303 0, 0, 0, 0, 0, 0, 0, 0},
2304 /* rx mon ring masks */
2305 { 0, 0, 0,
2306 WLAN_CFG_RX_MON_RING_MASK_0,
2307 WLAN_CFG_RX_MON_RING_MASK_1,
2308 WLAN_CFG_RX_MON_RING_MASK_2,
2309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2310 /* host2rxdma ring masks */
2311 { 0, 0, 0,
2312 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2313 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2314 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2315 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
2316 0, 0, 0, 0, 0, 0, 0, 0, 0},
2317 /* rxdma2host ring masks */
2318 { 0, 0, 0,
2319 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2320 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2321 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2322 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
2323 0, 0, 0, 0, 0, 0, 0, 0, 0},
2324 /* host2rxdma mon ring masks */
2325 { 0, 0, 0,
2326 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2327 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2328 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2329 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2330 /* rxdma2host mon ring masks */
2331 { 0, 0, 0,
2332 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2333 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2334 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2336 /* rx err ring masks */
2337 { 0, 0, 0,
2338 WLAN_CFG_RX_ERR_RING_MASK_0,
2339 WLAN_CFG_RX_ERR_RING_MASK_1,
2340 WLAN_CFG_RX_ERR_RING_MASK_2,
2341 WLAN_CFG_RX_ERR_RING_MASK_3,
2342 0, 0, 0, 0, 0, 0, 0, 0, 0},
2343 /* rx wbm rel ring masks */
2344 { 0, 0, 0,
2345 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2346 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
2347 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
2348 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
2349 0, 0, 0, 0, 0, 0, 0, 0, 0},
2350 /* reo status ring masks */
2351 { 0, 0, 0,
2352 WLAN_CFG_REO_STATUS_RING_MASK_0,
2353 WLAN_CFG_REO_STATUS_RING_MASK_1,
2354 WLAN_CFG_REO_STATUS_RING_MASK_2,
2355 WLAN_CFG_REO_STATUS_RING_MASK_3,
2356 0, 0, 0, 0, 0, 0, 0, 0, 0},
2357 /* rx_ring_near_full_irq mask */
2358 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2359 /* rx_ring_near_full_irq_2 mask */
2360 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2361 /* tx_ring_near_full_irq mask */
2362 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2363 /* host2txmon ring masks */
2364 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
2365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2366 /* tx mon ring masks */
2367 { WLAN_CFG_TX_MON_RING_MASK_0,
2368 WLAN_CFG_TX_MON_RING_MASK_1,
2369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2370 /* ppe ds wbm release ring ring mask */
2371 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2372 /* Reo2ppe ring mask */
2373 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2374 /* ppe2tcl ring mask */
2375 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2376 /* umac reset mask */
2377 {0, 0, 0, 0, 0, 0, 0, 0,
2378 WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, 0},
2379 },
2380 /* Interrupt assignment for 10 MSI combination */
2381 {
2382 /* tx ring masks */
2383 { WLAN_CFG_TX_RING_MASK_0,
2384 WLAN_CFG_TX_RING_MASK_1,
2385 WLAN_CFG_TX_RING_MASK_2,
2386 WLAN_CFG_TX_RING_MASK_3,
2387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2388 /* rx ring masks */
2389 { 0, 0, 0, 0,
2390 WLAN_CFG_RX_RING_MASK_0,
2391 WLAN_CFG_RX_RING_MASK_1,
2392 WLAN_CFG_RX_RING_MASK_2,
2393 WLAN_CFG_RX_RING_MASK_3,
2394 0, 0, 0, 0, 0, 0, 0, 0},
2395 /* rx mon ring masks */
2396 { 0, 0, 0,
2397 WLAN_CFG_RX_MON_RING_MASK_0,
2398 WLAN_CFG_RX_MON_RING_MASK_1,
2399 WLAN_CFG_RX_MON_RING_MASK_2,
2400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2401 /* host2rxdma ring masks */
2402 { 0, 0, 0,
2403 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2404 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2405 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2406 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
2407 0, 0, 0, 0, 0, 0, 0, 0, 0},
2408 /* rxdma2host ring masks */
2409 { 0, 0, 0,
2410 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2411 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2412 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2413 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
2414 0, 0, 0, 0, 0, 0, 0, 0, 0},
2415 /* host2rxdma mon ring masks */
2416 { 0, 0, 0,
2417 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2418 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2419 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2421 /* rxdma2host mon ring masks */
2422 { 0, 0, 0,
2423 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2424 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2425 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2427 /* rx err ring masks */
2428 { 0, 0, 0,
2429 WLAN_CFG_RX_ERR_RING_MASK_0,
2430 WLAN_CFG_RX_ERR_RING_MASK_1,
2431 WLAN_CFG_RX_ERR_RING_MASK_2,
2432 WLAN_CFG_RX_ERR_RING_MASK_3,
2433 0, 0, 0, 0, 0, 0, 0, 0, 0},
2434 /* rx wbm rel ring masks */
2435 { 0, 0, 0,
2436 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2437 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
2438 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
2439 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
2440 0, 0, 0, 0, 0, 0, 0, 0, 0},
2441 /* reo status ring masks */
2442 { 0, 0, 0,
2443 WLAN_CFG_REO_STATUS_RING_MASK_0,
2444 WLAN_CFG_REO_STATUS_RING_MASK_1,
2445 WLAN_CFG_REO_STATUS_RING_MASK_2,
2446 WLAN_CFG_REO_STATUS_RING_MASK_3,
2447 0, 0, 0, 0, 0, 0, 0, 0, 0},
2448 /* rx_ring_near_full_irq mask */
2449 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2450 /* rx_ring_near_full_irq_2 mask */
2451 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2452 /* tx_ring_near_full_irq mask */
2453 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2454 /* host2txmon ring masks */
2455 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
2456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2457 /* tx mon ring masks */
2458 { WLAN_CFG_TX_MON_RING_MASK_0,
2459 WLAN_CFG_TX_MON_RING_MASK_1,
2460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2461 /* ppe ds wbm release ring ring mask */
2462 { 0, 0, 0, 0, 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0,
2463 0, 0, 0, 0, 0, 0, 0, 0, 0},
2464 /* Reo2ppe ring mask */
2465 {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0,
2466 0, 0, 0, 0, 0, 0, 0, 0},
2467 /* ppe2tcl ring mask */
2468 {0, 0, 0, 0, 0, 0, 0, 0,
2469 WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0, 0, 0},
2470 /* umac reset mask */
2471 {0, 0, 0, 0, 0, 0, 0, 0,
2472 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0},
2473 },
2474 /* Interrupt assignment for 11 MSI combination */
2475 {
2476 /* tx ring masks */
2477 { WLAN_CFG_TX_RING_MASK_0,
2478 WLAN_CFG_TX_RING_MASK_1,
2479 WLAN_CFG_TX_RING_MASK_2,
2480 WLAN_CFG_TX_RING_MASK_3,
2481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2482 /* rx ring masks */
2483 { 0, 0, 0, 0,
2484 WLAN_CFG_RX_RING_MASK_0,
2485 WLAN_CFG_RX_RING_MASK_1,
2486 WLAN_CFG_RX_RING_MASK_2,
2487 WLAN_CFG_RX_RING_MASK_3,
2488 0, 0, 0, 0, 0, 0, 0, 0},
2489 /* rx mon ring masks */
2490 { 0, 0, 0,
2491 WLAN_CFG_RX_MON_RING_MASK_0,
2492 WLAN_CFG_RX_MON_RING_MASK_1,
2493 WLAN_CFG_RX_MON_RING_MASK_2,
2494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2495 /* host2rxdma ring masks */
2496 { 0, 0, 0,
2497 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2498 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2499 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2500 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
2501 0, 0, 0, 0, 0, 0, 0, 0, 0},
2502 /* rxdma2host ring masks */
2503 { 0, 0, 0,
2504 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2505 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2506 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2507 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
2508 0, 0, 0, 0, 0, 0, 0, 0, 0},
2509 /* host2rxdma mon ring masks */
2510 { 0, 0, 0,
2511 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2512 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2513 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2515 /* rxdma2host mon ring masks */
2516 { 0, 0, 0,
2517 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2518 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2519 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2521 /* rx err ring masks */
2522 { 0, 0, 0,
2523 WLAN_CFG_RX_ERR_RING_MASK_0,
2524 WLAN_CFG_RX_ERR_RING_MASK_1,
2525 WLAN_CFG_RX_ERR_RING_MASK_2,
2526 WLAN_CFG_RX_ERR_RING_MASK_3,
2527 0, 0, 0, 0, 0, 0, 0, 0, 0},
2528 /* rx wbm rel ring masks */
2529 { 0, 0, 0,
2530 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2531 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
2532 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
2533 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
2534 0, 0, 0, 0, 0, 0, 0, 0, 0},
2535 /* reo status ring masks */
2536 { 0, 0, 0,
2537 WLAN_CFG_REO_STATUS_RING_MASK_0,
2538 WLAN_CFG_REO_STATUS_RING_MASK_1,
2539 WLAN_CFG_REO_STATUS_RING_MASK_2,
2540 WLAN_CFG_REO_STATUS_RING_MASK_3,
2541 0, 0, 0, 0, 0, 0, 0, 0, 0},
2542 /* rx_ring_near_full_irq mask */
2543 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2544 /* rx_ring_near_full_irq_2 mask */
2545 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2546 /* tx_ring_near_full_irq mask */
2547 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2548 /* host2txmon ring masks */
2549 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
2550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2551 /* tx mon ring masks */
2552 { WLAN_CFG_TX_MON_RING_MASK_0,
2553 WLAN_CFG_TX_MON_RING_MASK_1,
2554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2555 /* ppe wbm ds release ring ring mask */
2556 { 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0,
2557 0, 0, 0, 0, 0, 0, 0, 0},
2558 /* Reo2ppe ring mask */
2559 {0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0,
2560 0, 0, 0, 0, 0, 0, 0},
2561 /* ppe2tcl ring mask */
2562 {0, 0, 0, 0, 0, 0, 0, 0, 0,
2563 WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0, 0},
2564 /* umac reset mask */
2565 {0, 0, 0, 0, 0, 0, 0, 0,
2566 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0},
2567 },
2568 /* Interrupt assignment for 12 MSI combination */
2569 {
2570 /* tx ring masks */
2571 { WLAN_CFG_TX_RING_MASK_0,
2572 WLAN_CFG_TX_RING_MASK_1,
2573 WLAN_CFG_TX_RING_MASK_2,
2574 WLAN_CFG_TX_RING_MASK_3,
2575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2576 /* rx ring masks */
2577 { 0, 0, 0, 0,
2578 WLAN_CFG_RX_RING_MASK_0,
2579 WLAN_CFG_RX_RING_MASK_1,
2580 WLAN_CFG_RX_RING_MASK_2,
2581 WLAN_CFG_RX_RING_MASK_3,
2582 0, 0, 0, 0, 0, 0, 0, 0},
2583 /* rx mon ring masks */
2584 { 0, 0, 0, 0, 0, 0, 0, 0,
2585 WLAN_CFG_RX_MON_RING_MASK_0,
2586 WLAN_CFG_RX_MON_RING_MASK_1,
2587 WLAN_CFG_RX_MON_RING_MASK_2,
2588 0, 0, 0, 0, 0},
2589 /* host2rxdma ring masks */
2590 { 0, 0, 0, 0, 0, 0, 0, 0,
2591 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2592 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2593 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2594 0, 0, 0, 0, 0},
2595 /* rxdma2host ring masks */
2596 { 0, 0, 0, 0, 0, 0, 0, 0,
2597 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2598 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2599 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2600 0, 0, 0, 0, 0},
2601 /* host2rxdma mon ring masks */
2602 { 0, 0, 0, 0, 0, 0, 0, 0,
2603 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2604 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2605 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2606 0, 0, 0, 0, 0},
2607 /* rxdma2host mon ring masks */
2608 { 0, 0, 0, 0, 0, 0, 0, 0,
2609 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2610 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2611 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2612 0, 0, 0, 0, 0},
2613 /* rx err ring masks */
2614 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2615 WLAN_CFG_RX_ERR_RING_MASK_0,
2616 0, 0, 0, 0},
2617 /* rx wbm rel ring masks */
2618 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2619 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2620 0, 0, 0, 0},
2621 /* reo status ring masks */
2622 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2623 WLAN_CFG_REO_STATUS_RING_MASK_0,
2624 0, 0, 0, 0},
2625 /* rx_ring_near_full_irq mask */
2626 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2627 /* rx_ring_near_full_irq_2 mask */
2628 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2629 /* tx_ring_near_full_irq mask */
2630 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2631 /* host2txmon ring masks */
2632 { 0, 0, 0, 0, 0, 0, 0, 0,
2633 WLAN_CFG_HOST2TXMON_RING_MASK_0,
2634 0, 0, 0, 0, 0, 0, 0},
2635 /* tx mon ring masks */
2636 { 0, 0, 0, 0, 0, 0, 0, 0,
2637 WLAN_CFG_TX_MON_RING_MASK_0,
2638 WLAN_CFG_TX_MON_RING_MASK_1,
2639 0, 0, 0, 0, 0, 0},
2640 /* ppe ds wbm release ring ring mask */
2641 { 0, 0, 0, 0, 0, 0, 0, 0,
2642 WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0, 0, 0},
2643 /* Reo2ppe ring mask */
2644 {0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0,
2645 0, 0, 0, 0, 0, 0},
2646 /* ppe2tcl ring mask */
2647 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2648 WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0},
2649 /* umac reset mask */
2650 {0, 0, 0, 0, 0, 0, 0, 0,
2651 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0},
2652 },
2653 /* Interrupt assignment for 13 MSI combination */
2654 {
2655 /* tx ring masks */
2656 { WLAN_CFG_TX_RING_MASK_0,
2657 WLAN_CFG_TX_RING_MASK_1,
2658 WLAN_CFG_TX_RING_MASK_2,
2659 WLAN_CFG_TX_RING_MASK_3,
2660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2661 /* rx ring masks */
2662 { 0, 0, 0, 0,
2663 WLAN_CFG_RX_RING_MASK_0,
2664 WLAN_CFG_RX_RING_MASK_1,
2665 WLAN_CFG_RX_RING_MASK_2,
2666 WLAN_CFG_RX_RING_MASK_3,
2667 0, 0, 0, 0, 0, 0, 0, 0},
2668 /* rx mon ring masks */
2669 { 0, 0, 0, 0, 0, 0, 0, 0,
2670 WLAN_CFG_RX_MON_RING_MASK_0,
2671 WLAN_CFG_RX_MON_RING_MASK_1,
2672 WLAN_CFG_RX_MON_RING_MASK_2,
2673 0, 0, 0, 0, 0},
2674 /* host2rxdma ring masks */
2675 { 0, 0, 0, 0, 0, 0, 0, 0,
2676 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2677 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2678 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2679 0, 0, 0, 0, 0},
2680 /* rxdma2host ring masks */
2681 { 0, 0, 0, 0, 0, 0, 0, 0,
2682 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2683 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2684 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2685 0, 0, 0, 0, 0},
2686 /* host2rxdma mon ring masks */
2687 { 0, 0, 0, 0, 0, 0, 0, 0,
2688 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2689 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2690 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2691 0, 0, 0, 0, 0},
2692 /* rxdma2host mon ring masks */
2693 { 0, 0, 0, 0, 0, 0, 0, 0,
2694 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2695 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2696 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2697 0, 0, 0, 0, 0},
2698 /* rx err ring masks */
2699 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2700 WLAN_CFG_RX_ERR_RING_MASK_0,
2701 0, 0, 0, 0},
2702 /* rx wbm rel ring masks */
2703 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2704 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2705 0, 0, 0, 0},
2706 /* reo status ring masks */
2707 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2708 WLAN_CFG_REO_STATUS_RING_MASK_0,
2709 0, 0, 0, 0},
2710 /* rx_ring_near_full_irq mask */
2711 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2712 /* rx_ring_near_full_irq_2 mask */
2713 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2714 /* tx_ring_near_full_irq mask */
2715 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2716 /* host2txmon ring masks */
2717 { 0, 0, 0, 0, 0, 0, 0, 0,
2718 WLAN_CFG_HOST2TXMON_RING_MASK_0,
2719 0, 0, 0, 0, 0, 0, 0},
2720 /* tx mon ring masks */
2721 { 0, 0, 0, 0, 0, 0, 0, 0,
2722 WLAN_CFG_TX_MON_RING_MASK_0,
2723 WLAN_CFG_TX_MON_RING_MASK_1,
2724 0, 0, 0, 0, 0, 0},
2725 /* ppe ds wbm release ring ring mask */
2726 { 0, 0, 0, 0, 0, 0, 0, 0, 0,
2727 WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0, 0},
2728 /* Reo2ppe ring mask */
2729 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0,
2730 0, 0, 0, 0, 0},
2731 /* ppe2tcl ring mask */
2732 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2733 WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0},
2734 /* umac reset mask */
2735 {0, 0, 0, 0, 0, 0, 0, 0,
2736 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0},
2737 },
2738 /* Interrupt assignment for 14 MSI combination */
2739 {
2740 /* tx ring masks */
2741 { WLAN_CFG_TX_RING_MASK_0,
2742 WLAN_CFG_TX_RING_MASK_1,
2743 WLAN_CFG_TX_RING_MASK_2,
2744 WLAN_CFG_TX_RING_MASK_3,
2745 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2746 /* rx ring masks */
2747 { 0, 0, 0, 0,
2748 WLAN_CFG_RX_RING_MASK_0,
2749 WLAN_CFG_RX_RING_MASK_1,
2750 WLAN_CFG_RX_RING_MASK_2,
2751 WLAN_CFG_RX_RING_MASK_3,
2752 0, 0, 0, 0, 0, 0, 0, 0},
2753 /* rx mon ring masks */
2754 { 0, 0, 0, 0, 0, 0, 0, 0,
2755 WLAN_CFG_RX_MON_RING_MASK_0,
2756 WLAN_CFG_RX_MON_RING_MASK_1,
2757 WLAN_CFG_RX_MON_RING_MASK_2,
2758 0, 0, 0, 0, 0},
2759 /* host2rxdma ring masks */
2760 { 0, 0, 0, 0, 0, 0, 0, 0,
2761 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2762 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2763 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2764 0, 0, 0, 0, 0},
2765 /* rxdma2host ring masks */
2766 { 0, 0, 0, 0, 0, 0, 0, 0,
2767 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2768 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2769 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2770 0, 0, 0, 0, 0},
2771 /* host2rxdma mon ring masks */
2772 { 0, 0, 0, 0, 0, 0, 0, 0,
2773 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2774 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2775 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2776 0, 0, 0, 0, 0},
2777 /* rxdma2host mon ring masks */
2778 { 0, 0, 0, 0, 0, 0, 0, 0,
2779 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2780 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2781 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2782 0, 0, 0, 0, 0},
2783 /* rx err ring masks */
2784 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2785 WLAN_CFG_RX_ERR_RING_MASK_0,
2786 0, 0, 0, 0},
2787 /* rx wbm rel ring masks */
2788 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2789 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2790 0, 0, 0, 0},
2791 /* reo status ring masks */
2792 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2793 WLAN_CFG_REO_STATUS_RING_MASK_0,
2794 0, 0, 0, 0},
2795 /* rx_ring_near_full_irq mask */
2796 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2797 /* rx_ring_near_full_irq_2 mask */
2798 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2799 /* tx_ring_near_full_irq mask */
2800 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2801 /* host2txmon ring masks */
2802 { 0, 0, 0, 0, 0, 0, 0, 0,
2803 WLAN_CFG_HOST2TXMON_RING_MASK_0,
2804 0, 0, 0, 0, 0, 0, 0},
2805 /* tx mon ring masks */
2806 { 0, 0, 0, 0, 0, 0, 0, 0,
2807 WLAN_CFG_TX_MON_RING_MASK_0,
2808 WLAN_CFG_TX_MON_RING_MASK_1,
2809 0, 0, 0, 0, 0, 0},
2810 /* ppe ds wbm release ring ring mask */
2811 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2812 WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0},
2813 /* Reo2ppe ring mask */
2814 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2815 WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0, 0},
2816 /* ppe2tcl ring mask */
2817 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2818 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0},
2819 /* umac reset mask */
2820 {0, 0, 0, 0, 0, 0, 0, 0,
2821 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0},
2822 },
2823 /* Interrupt assignment for 15 MSI combination */
2824 {
2825 /* tx ring masks */
2826 { WLAN_CFG_TX_RING_MASK_0,
2827 WLAN_CFG_TX_RING_MASK_1,
2828 WLAN_CFG_TX_RING_MASK_2,
2829 WLAN_CFG_TX_RING_MASK_3,
2830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2831 /* rx ring masks */
2832 { 0, 0, 0, 0,
2833 WLAN_CFG_RX_RING_MASK_0,
2834 WLAN_CFG_RX_RING_MASK_1,
2835 WLAN_CFG_RX_RING_MASK_2,
2836 WLAN_CFG_RX_RING_MASK_3,
2837 0, 0, 0, 0, 0, 0, 0, 0},
2838 /* rx mon ring masks */
2839 { 0, 0, 0, 0, 0, 0, 0, 0,
2840 WLAN_CFG_RX_MON_RING_MASK_0,
2841 WLAN_CFG_RX_MON_RING_MASK_1,
2842 WLAN_CFG_RX_MON_RING_MASK_2,
2843 0, 0, 0, 0, 0},
2844 /* host2rxdma ring masks */
2845 { 0, 0, 0, 0, 0, 0, 0, 0,
2846 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2847 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2848 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2849 0, 0, 0, 0, 0},
2850 /* rxdma2host ring masks */
2851 { 0, 0, 0, 0, 0, 0, 0, 0,
2852 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2853 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2854 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2855 0, 0, 0, 0, 0},
2856 /* host2rxdma mon ring masks */
2857 { 0, 0, 0, 0, 0, 0, 0, 0,
2858 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2859 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2860 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2861 0, 0, 0, 0, 0},
2862 /* rxdma2host mon ring masks */
2863 { 0, 0, 0, 0, 0, 0, 0, 0,
2864 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2865 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2866 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2867 0, 0, 0, 0, 0},
2868 /* rx err ring masks */
2869 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2870 WLAN_CFG_RX_ERR_RING_MASK_0,
2871 0, 0, 0, 0},
2872 /* rx wbm rel ring masks */
2873 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2874 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2875 0, 0, 0, 0},
2876 /* reo status ring masks */
2877 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2878 WLAN_CFG_REO_STATUS_RING_MASK_0,
2879 0, 0, 0, 0},
2880 /* rx_ring_near_full_irq mask */
2881 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2882 /* rx_ring_near_full_irq_2 mask */
2883 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2884 /* tx_ring_near_full_irq mask */
2885 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2886 /* host2txmon ring masks */
2887 { 0, 0, 0, 0, 0, 0, 0, 0,
2888 WLAN_CFG_HOST2TXMON_RING_MASK_0,
2889 0, 0, 0, 0, 0, 0, 0},
2890 /* tx mon ring masks */
2891 { 0, 0, 0, 0, 0, 0, 0, 0,
2892 WLAN_CFG_TX_MON_RING_MASK_0,
2893 WLAN_CFG_TX_MON_RING_MASK_1,
2894 0, 0, 0, 0, 0, 0},
2895 /* ppe ds wbm release ring ring mask */
2896 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2897 WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0},
2898 /* Reo2ppe ring mask */
2899 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2900 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0},
2901 /* ppe2tcl ring mask */
2902 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2903 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0},
2904 /* umac reset mask */
2905 {0, 0, 0, 0, 0, 0, 0, 0,
2906 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0},
2907 },
2908 /* Interrupt assignment for 16 MSI combination */
2909 {
2910 /* tx ring masks */
2911 { WLAN_CFG_TX_RING_MASK_0,
2912 WLAN_CFG_TX_RING_MASK_1,
2913 WLAN_CFG_TX_RING_MASK_2,
2914 WLAN_CFG_TX_RING_MASK_3,
2915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2916 /* rx ring masks */
2917 { 0, 0, 0, 0,
2918 WLAN_CFG_RX_RING_MASK_0,
2919 WLAN_CFG_RX_RING_MASK_1,
2920 WLAN_CFG_RX_RING_MASK_2,
2921 WLAN_CFG_RX_RING_MASK_3,
2922 0, 0, 0, 0, 0, 0, 0, 0},
2923 /* rx mon ring masks */
2924 { 0, 0, 0, 0, 0, 0, 0, 0,
2925 WLAN_CFG_RX_MON_RING_MASK_0,
2926 WLAN_CFG_RX_MON_RING_MASK_1,
2927 WLAN_CFG_RX_MON_RING_MASK_2,
2928 0, 0, 0, 0, 0},
2929 /* host2rxdma ring masks */
2930 { 0, 0, 0, 0, 0, 0, 0, 0,
2931 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
2932 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
2933 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
2934 0, 0, 0, 0, 0},
2935 /* rxdma2host ring masks */
2936 { 0, 0, 0, 0, 0, 0, 0, 0,
2937 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
2938 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
2939 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
2940 0, 0, 0, 0, 0},
2941 /* host2rxdma mon ring masks */
2942 { 0, 0, 0, 0, 0, 0, 0, 0,
2943 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
2944 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
2945 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
2946 0, 0, 0, 0, 0},
2947 /* rxdma2host mon ring masks */
2948 { 0, 0, 0, 0, 0, 0, 0, 0,
2949 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
2950 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
2951 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
2952 0, 0, 0, 0, 0},
2953 /* rx err ring masks */
2954 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2955 WLAN_CFG_RX_ERR_RING_MASK_0,
2956 0, 0, 0, 0},
2957 /* rx wbm rel ring masks */
2958 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2959 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
2960 0, 0, 0, 0},
2961 /* reo status ring masks */
2962 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2963 WLAN_CFG_REO_STATUS_RING_MASK_0,
2964 0, 0, 0, 0},
2965 /* rx_ring_near_full_irq mask */
2966 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2967 /* rx_ring_near_full_irq_2 mask */
2968 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2969 /* tx_ring_near_full_irq mask */
2970 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
2971 /* host2txmon ring masks */
2972 { 0, 0, 0, 0, 0, 0, 0, 0,
2973 WLAN_CFG_HOST2TXMON_RING_MASK_0,
2974 0, 0, 0, 0, 0, 0, 0},
2975 /* tx mon ring masks */
2976 { 0, 0, 0, 0, 0, 0, 0, 0, 0,
2977 WLAN_CFG_TX_MON_RING_MASK_0,
2978 WLAN_CFG_TX_MON_RING_MASK_1,
2979 0, 0, 0, 0, 0},
2980 /* ppe ds wbm release ring ring mask */
2981 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2982 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0},
2983 /* Reo2ppe ring mask */
2984 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2985 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0},
2986 /* ppe2tcl ring mask */
2987 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2988 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0},
2989 /* umac reset mask */
2990 {0, 0, 0, 0, 0, 0, 0, 0,
2991 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0},
2992 },
2993 };
2994 #endif
2995
2996 struct dp_int_mask_assignment dp_ur_mask_assignment_8msi =
2997 /* Interrupt assignment for 8 MSI combination with Umac reset support */
2998 {
2999 /* tx ring masks */
3000 { WLAN_CFG_TX_RING_MASK_0,
3001 WLAN_CFG_TX_RING_MASK_1,
3002 WLAN_CFG_TX_RING_MASK_2,
3003 WLAN_CFG_TX_RING_MASK_3,
3004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3005 /* rx ring masks */
3006 { 0, 0, 0, 0,
3007 WLAN_CFG_RX_RING_MASK_0,
3008 WLAN_CFG_RX_RING_MASK_1,
3009 WLAN_CFG_RX_RING_MASK_2 |
3010 WLAN_CFG_RX_RING_MASK_3,
3011 0, 0, 0, 0, 0, 0, 0, 0, 0},
3012 /* rx mon ring masks */
3013 { 0, 0, 0,
3014 WLAN_CFG_RX_MON_RING_MASK_0,
3015 WLAN_CFG_RX_MON_RING_MASK_1,
3016 WLAN_CFG_RX_MON_RING_MASK_2,
3017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3018 /* host2rxdma ring masks */
3019 { 0, 0, 0,
3020 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
3021 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
3022 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
3023 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
3024 0, 0, 0, 0, 0, 0, 0, 0, 0},
3025 /* rxdma2host ring masks */
3026 { 0, 0, 0,
3027 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
3028 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
3029 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
3030 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
3031 0, 0, 0, 0, 0, 0, 0, 0, 0},
3032 /* host2rxdma mon ring masks */
3033 { 0, 0, 0,
3034 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
3035 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
3036 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
3037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3038 /* rxdma2host mon ring masks */
3039 { 0, 0, 0,
3040 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
3041 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
3042 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
3043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3044 /* rx err ring masks */
3045 { 0, 0, 0,
3046 WLAN_CFG_RX_ERR_RING_MASK_0,
3047 WLAN_CFG_RX_ERR_RING_MASK_1,
3048 WLAN_CFG_RX_ERR_RING_MASK_2,
3049 WLAN_CFG_RX_ERR_RING_MASK_3,
3050 0, 0, 0, 0, 0, 0, 0, 0, 0},
3051 /* rx wbm rel ring masks */
3052 { 0, 0, 0,
3053 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
3054 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
3055 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
3056 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
3057 0, 0, 0, 0, 0, 0, 0, 0, 0},
3058 /* reo status ring masks */
3059 { 0, 0, 0,
3060 WLAN_CFG_REO_STATUS_RING_MASK_0,
3061 WLAN_CFG_REO_STATUS_RING_MASK_1,
3062 WLAN_CFG_REO_STATUS_RING_MASK_2,
3063 WLAN_CFG_REO_STATUS_RING_MASK_3,
3064 0, 0, 0, 0, 0, 0, 0, 0, 0},
3065 /* rx_ring_near_full_irq mask */
3066 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3067 /* rx_ring_near_full_irq_2 mask */
3068 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3069 /* tx_ring_near_full_irq mask */
3070 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3071 /* host2txmon ring masks */
3072 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
3073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3074 /* tx mon ring masks */
3075 { WLAN_CFG_TX_MON_RING_MASK_0,
3076 WLAN_CFG_TX_MON_RING_MASK_1,
3077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3078 /* ppe ds wbm release ring ring mask */
3079 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3080 /* Reo2ppe ring mask */
3081 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3082 /* ppe2tcl ring mask */
3083 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3084 /* umac reset mask */
3085 {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0,
3086 0, 0, 0, 0, 0, 0, 0, 0},
3087 };
3088
3089 struct dp_int_mask_assignment dp_ds_mask_assignment_8msi =
3090 /* Interrupt assignment for 8 MSI combination */
3091 {
3092 /* tx ring masks */
3093 { WLAN_CFG_TX_RING_MASK_0,
3094 WLAN_CFG_TX_RING_MASK_1,
3095 WLAN_CFG_TX_RING_MASK_2 |
3096 WLAN_CFG_TX_RING_MASK_3,
3097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3098 /* rx ring masks */
3099 { 0, 0, 0,
3100 WLAN_CFG_RX_RING_MASK_0,
3101 WLAN_CFG_RX_RING_MASK_1,
3102 WLAN_CFG_RX_RING_MASK_2 |
3103 WLAN_CFG_RX_RING_MASK_3,
3104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3105 /* rx mon ring masks */
3106 { 0, 0,
3107 WLAN_CFG_RX_MON_RING_MASK_0,
3108 WLAN_CFG_RX_MON_RING_MASK_1,
3109 WLAN_CFG_RX_MON_RING_MASK_2,
3110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3111 /* host2rxdma ring masks */
3112 { 0, 0,
3113 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
3114 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
3115 WLAN_CFG_HOST2RXDMA_RING_MASK_2 |
3116 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
3117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3118 /* rxdma2host ring masks */
3119 { 0, 0,
3120 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
3121 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
3122 WLAN_CFG_RXDMA2HOST_RING_MASK_2 |
3123 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
3124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3125 /* host2rxdma mon ring masks */
3126 { 0, 0,
3127 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
3128 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
3129 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
3130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3131 /* rxdma2host mon ring masks */
3132 { 0, 0,
3133 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
3134 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
3135 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
3136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3137 /* rx err ring masks */
3138 { 0, 0,
3139 WLAN_CFG_RX_ERR_RING_MASK_0,
3140 WLAN_CFG_RX_ERR_RING_MASK_1,
3141 WLAN_CFG_RX_ERR_RING_MASK_2 |
3142 WLAN_CFG_RX_ERR_RING_MASK_3,
3143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3144 /* rx wbm rel ring masks */
3145 { 0, 0,
3146 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
3147 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
3148 WLAN_CFG_RX_WBM_REL_RING_MASK_2 |
3149 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
3150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3151 /* reo status ring masks */
3152 { 0, 0,
3153 WLAN_CFG_REO_STATUS_RING_MASK_0,
3154 WLAN_CFG_REO_STATUS_RING_MASK_1,
3155 WLAN_CFG_REO_STATUS_RING_MASK_2 |
3156 WLAN_CFG_REO_STATUS_RING_MASK_3,
3157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3158 /* rx_ring_near_full_irq mask */
3159 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3160 /* rx_ring_near_full_irq_2 mask */
3161 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3162 /* tx_ring_near_full_irq mask */
3163 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3164 /* host2txmon ring masks */
3165 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
3166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3167 /* tx mon ring masks */
3168 { WLAN_CFG_TX_MON_RING_MASK_0,
3169 WLAN_CFG_TX_MON_RING_MASK_1,
3170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3171 /* ppe ds wbm release ring ring mask */
3172 { WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0,
3173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3174 /* Reo2ppe ring mask */
3175 {0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0,
3176 0, 0, 0, 0, 0, 0, 0, 0, 0},
3177 /* ppe2tcl ring mask */
3178 {0, 0, 0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0,
3179 0, 0, 0, 0, 0, 0, 0, 0},
3180 /* umac reset mask */
3181 {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0,
3182 0, 0, 0, 0, 0, 0, 0, 0},
3183 };
3184
3185 struct dp_int_mask_assignment dp_ds_mask_assignment_9msi =
3186 /* Interrupt assignment for 9 MSI combination */
3187 {
3188 /* tx ring masks */
3189 { WLAN_CFG_TX_RING_MASK_0,
3190 WLAN_CFG_TX_RING_MASK_1,
3191 WLAN_CFG_TX_RING_MASK_2,
3192 WLAN_CFG_TX_RING_MASK_3,
3193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3194 /* rx ring masks */
3195 { 0, 0, 0, 0,
3196 WLAN_CFG_RX_RING_MASK_0,
3197 WLAN_CFG_RX_RING_MASK_1,
3198 WLAN_CFG_RX_RING_MASK_2 |
3199 WLAN_CFG_RX_RING_MASK_3,
3200 0, 0, 0, 0, 0, 0, 0, 0, 0},
3201 /* rx mon ring masks */
3202 { 0, 0, 0,
3203 WLAN_CFG_RX_MON_RING_MASK_0,
3204 WLAN_CFG_RX_MON_RING_MASK_1,
3205 WLAN_CFG_RX_MON_RING_MASK_2,
3206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3207 /* host2rxdma ring masks */
3208 { 0, 0, 0,
3209 WLAN_CFG_HOST2RXDMA_RING_MASK_0,
3210 WLAN_CFG_HOST2RXDMA_RING_MASK_1,
3211 WLAN_CFG_HOST2RXDMA_RING_MASK_2,
3212 WLAN_CFG_HOST2RXDMA_RING_MASK_3,
3213 0, 0, 0, 0, 0, 0, 0, 0, 0},
3214 /* rxdma2host ring masks */
3215 { 0, 0, 0,
3216 WLAN_CFG_RXDMA2HOST_RING_MASK_0,
3217 WLAN_CFG_RXDMA2HOST_RING_MASK_1,
3218 WLAN_CFG_RXDMA2HOST_RING_MASK_2,
3219 WLAN_CFG_RXDMA2HOST_RING_MASK_3,
3220 0, 0, 0, 0, 0, 0, 0, 0, 0},
3221 /* host2rxdma mon ring masks */
3222 { 0, 0, 0,
3223 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0,
3224 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1,
3225 WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2,
3226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3227 /* rxdma2host mon ring masks */
3228 { 0, 0, 0,
3229 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0,
3230 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1,
3231 WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2,
3232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3233 /* rx err ring masks */
3234 { 0, 0, 0,
3235 WLAN_CFG_RX_ERR_RING_MASK_0,
3236 WLAN_CFG_RX_ERR_RING_MASK_1,
3237 WLAN_CFG_RX_ERR_RING_MASK_2,
3238 WLAN_CFG_RX_ERR_RING_MASK_3,
3239 0, 0, 0, 0, 0, 0, 0, 0, 0},
3240 /* rx wbm rel ring masks */
3241 { 0, 0, 0,
3242 WLAN_CFG_RX_WBM_REL_RING_MASK_0,
3243 WLAN_CFG_RX_WBM_REL_RING_MASK_1,
3244 WLAN_CFG_RX_WBM_REL_RING_MASK_2,
3245 WLAN_CFG_RX_WBM_REL_RING_MASK_3,
3246 0, 0, 0, 0, 0, 0, 0, 0, 0},
3247 /* reo status ring masks */
3248 { 0, 0, 0,
3249 WLAN_CFG_REO_STATUS_RING_MASK_0,
3250 WLAN_CFG_REO_STATUS_RING_MASK_1,
3251 WLAN_CFG_REO_STATUS_RING_MASK_2,
3252 WLAN_CFG_REO_STATUS_RING_MASK_3,
3253 0, 0, 0, 0, 0, 0, 0, 0, 0},
3254 /* rx_ring_near_full_irq mask */
3255 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3256 /* rx_ring_near_full_irq_2 mask */
3257 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3258 /* tx_ring_near_full_irq mask */
3259 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3260 /* host2txmon ring masks */
3261 { WLAN_CFG_HOST2TXMON_RING_MASK_0,
3262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3263 /* tx mon ring masks */
3264 { WLAN_CFG_TX_MON_RING_MASK_0,
3265 WLAN_CFG_TX_MON_RING_MASK_1,
3266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3267 /* ppe ds wbm release ring ring mask */
3268 { WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0,
3269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
3270 /* Reo2ppe ring mask */
3271 {0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0,
3272 0, 0, 0, 0, 0, 0, 0, 0, 0},
3273 /* ppe2tcl ring mask */
3274 {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0,
3275 0, 0, 0, 0, 0, 0, 0, 0},
3276 /* umac reset mask */
3277 {0, 0, 0, 0, 0, 0, 0, 0,
3278 WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, 0},
3279 };
3280 #endif
3281
3282 /* g_wlan_srng_cfg[] - Per ring_type specific configuration */
3283 struct wlan_srng_cfg g_wlan_srng_cfg[MAX_RING_TYPES];
3284
3285 #ifndef WLAN_SOFTUMAC_SUPPORT
3286 /* REO_DST ring configuration */
3287 struct wlan_srng_cfg wlan_srng_reo_cfg = {
3288 .timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_REO_RING,
3289 .batch_count_threshold = WLAN_CFG_INT_BATCH_THRESHOLD_REO_RING,
3290 .low_threshold = 0,
3291 };
3292
3293 /* WBM2SW_RELEASE ring configuration */
3294 struct wlan_srng_cfg wlan_srng_wbm_release_cfg = {
3295 .timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_WBM_RELEASE_RING,
3296 .batch_count_threshold = 0,
3297 .low_threshold = 0,
3298 };
3299 #endif
3300
3301 /* RXDMA_BUF ring configuration */
3302 struct wlan_srng_cfg wlan_srng_rxdma_buf_cfg = {
3303 .timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_RX,
3304 .batch_count_threshold = 0,
3305 .low_threshold = WLAN_CFG_RXDMA_REFILL_RING_SIZE >> 3,
3306 };
3307
3308 /* RXDMA_MONITOR_BUF ring configuration */
3309 struct wlan_srng_cfg wlan_srng_rxdma_monitor_buf_cfg = {
3310 .timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_RX,
3311 .batch_count_threshold = 0,
3312 .low_threshold = WLAN_CFG_RXDMA_MONITOR_BUF_RING_SIZE >> 3,
3313 };
3314
3315 /* RXDMA_MONITOR_STATUS ring configuration */
3316 #ifdef DP_CON_MON_MSI_ENABLED
3317 /*
3318 * Configure batch count threshold as 1 to enable interrupt
3319 * when HW updated TP (monitor status buffer DMA is done),
3320 * then host could reap monitor status srng. timer threshold
3321 * based interrupt is only used for low threshold interrupt which
3322 * can not be used for monitor status buffer reaping directly
3323 * unless configure low threshold value to a big value, perhaps
3324 * (number of entries - 2).
3325 */
3326 struct wlan_srng_cfg wlan_srng_rxdma_monitor_status_cfg = {
3327 .timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_RX,
3328 .batch_count_threshold = 1,
3329 .low_threshold = WLAN_CFG_RXDMA_MONITOR_STATUS_RING_SIZE >> 3,
3330 };
3331 #else
3332 struct wlan_srng_cfg wlan_srng_rxdma_monitor_status_cfg = {
3333 .timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_RX,
3334 .batch_count_threshold = 0,
3335 .low_threshold = WLAN_CFG_RXDMA_MONITOR_STATUS_RING_SIZE >> 3,
3336 };
3337 #endif
3338
3339 /* TX_MONITOR_BUF ring configuration */
3340 struct wlan_srng_cfg wlan_srng_tx_monitor_buf_cfg = {
3341 .timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_TX,
3342 .batch_count_threshold = 0,
3343 .low_threshold = WLAN_CFG_TX_MONITOR_BUF_RING_SIZE_MAX >> 3,
3344 };
3345
3346 /* DEFAULT_CONFIG ring configuration */
3347 struct wlan_srng_cfg wlan_srng_default_cfg = {
3348 .timer_threshold = WLAN_CFG_INT_TIMER_THRESHOLD_OTHER,
3349 .batch_count_threshold = WLAN_CFG_INT_BATCH_THRESHOLD_OTHER,
3350 .low_threshold = 0,
3351 };
3352
3353 /* DEFAULT_CONFIG source ring configuration */
3354 struct wlan_srng_cfg wlan_src_srng_default_cfg = {
3355 .timer_threshold = 0,
3356 .batch_count_threshold = 0,
3357 .low_threshold = 0,
3358 };
3359
3360 #ifdef WLAN_SOFTUMAC_SUPPORT
wlan_set_srng_cfg(struct wlan_srng_cfg ** wlan_cfg)3361 void wlan_set_srng_cfg(struct wlan_srng_cfg **wlan_cfg)
3362 {
3363 g_wlan_srng_cfg[RXDMA_BUF] = wlan_srng_rxdma_buf_cfg;
3364 g_wlan_srng_cfg[RXDMA_MONITOR_BUF] =
3365 wlan_srng_rxdma_monitor_buf_cfg;
3366 g_wlan_srng_cfg[RXDMA_MONITOR_STATUS] =
3367 wlan_srng_rxdma_monitor_status_cfg;
3368 g_wlan_srng_cfg[RXDMA_MONITOR_DST] = wlan_srng_default_cfg;
3369 g_wlan_srng_cfg[RXDMA_MONITOR_DESC] = wlan_srng_default_cfg;
3370 g_wlan_srng_cfg[DIR_BUF_RX_DMA_SRC] = wlan_srng_default_cfg;
3371 #ifdef WLAN_FEATURE_CIF_CFR
3372 g_wlan_srng_cfg[WIFI_POS_SRC] = wlan_srng_default_cfg;
3373 #endif
3374 g_wlan_srng_cfg[TX_MONITOR_BUF] = wlan_srng_tx_monitor_buf_cfg;
3375 *wlan_cfg = g_wlan_srng_cfg;
3376 }
3377 #else
wlan_set_srng_cfg(struct wlan_srng_cfg ** wlan_cfg)3378 void wlan_set_srng_cfg(struct wlan_srng_cfg **wlan_cfg)
3379 {
3380 g_wlan_srng_cfg[REO_DST] = wlan_srng_reo_cfg;
3381 g_wlan_srng_cfg[WBM2SW_RELEASE] = wlan_srng_wbm_release_cfg;
3382 g_wlan_srng_cfg[REO_EXCEPTION] = wlan_srng_default_cfg;
3383 g_wlan_srng_cfg[REO_REINJECT] = wlan_src_srng_default_cfg;
3384 g_wlan_srng_cfg[REO_CMD] = wlan_src_srng_default_cfg;
3385 g_wlan_srng_cfg[REO_STATUS] = wlan_srng_default_cfg;
3386 g_wlan_srng_cfg[TCL_DATA] = wlan_src_srng_default_cfg;
3387 g_wlan_srng_cfg[TCL_CMD_CREDIT] = wlan_src_srng_default_cfg;
3388 g_wlan_srng_cfg[TCL_STATUS] = wlan_srng_default_cfg;
3389 g_wlan_srng_cfg[WBM_IDLE_LINK] = wlan_src_srng_default_cfg;
3390 g_wlan_srng_cfg[SW2WBM_RELEASE] = wlan_src_srng_default_cfg;
3391 g_wlan_srng_cfg[RXDMA_BUF] = wlan_srng_rxdma_buf_cfg;
3392 g_wlan_srng_cfg[RXDMA_DST] = wlan_srng_default_cfg;
3393 g_wlan_srng_cfg[RXDMA_MONITOR_BUF] =
3394 wlan_srng_rxdma_monitor_buf_cfg;
3395 g_wlan_srng_cfg[RXDMA_MONITOR_STATUS] =
3396 wlan_srng_rxdma_monitor_status_cfg;
3397 g_wlan_srng_cfg[RXDMA_MONITOR_DST] = wlan_srng_default_cfg;
3398 g_wlan_srng_cfg[REO2PPE] = wlan_srng_default_cfg;
3399 g_wlan_srng_cfg[PPE2TCL] = wlan_srng_default_cfg;
3400 g_wlan_srng_cfg[RXDMA_MONITOR_DESC] = wlan_srng_default_cfg;
3401 g_wlan_srng_cfg[DIR_BUF_RX_DMA_SRC] = wlan_srng_default_cfg;
3402 #ifdef WLAN_FEATURE_CIF_CFR
3403 g_wlan_srng_cfg[WIFI_POS_SRC] = wlan_srng_default_cfg;
3404 #endif
3405 g_wlan_srng_cfg[TX_MONITOR_BUF] = wlan_srng_tx_monitor_buf_cfg;
3406 *wlan_cfg = g_wlan_srng_cfg;
3407 }
3408 #endif
3409
3410 static const uint8_t rx_fst_toeplitz_key[WLAN_CFG_RX_FST_TOEPLITZ_KEYLEN] = {
3411 0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2,
3412 0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0,
3413 0xd0, 0xca, 0x2b, 0xcb, 0xae, 0x7b, 0x30, 0xb4,
3414 0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30, 0xf2, 0x0c,
3415 0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa
3416 };
3417
3418 #if defined(WLAN_MAX_PDEVS) && (WLAN_MAX_PDEVS == 1)
3419 #ifdef WLAN_SOFTUMAC_SUPPORT
wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int num_dp_msi,int interrupt_mode,bool is_monitor_mode,bool ppeds_attached,bool umac_reset_support)3420 void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
3421 int num_dp_msi,
3422 int interrupt_mode,
3423 bool is_monitor_mode,
3424 bool ppeds_attached,
3425 bool umac_reset_support)
3426 { int i = 0;
3427
3428 for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
3429 wlan_cfg_ctx->int_rx_mon_ring_mask[i] =
3430 rx_mon_ring_mask_msi[i];
3431 wlan_cfg_ctx->int_tx_mon_ring_mask[i] = 0;
3432 if (is_monitor_mode) {
3433 wlan_cfg_ctx->int_rx_ring_mask[i] = 0;
3434 if (interrupt_mode == DP_INTR_POLL)
3435 wlan_cfg_ctx->int_rxdma2host_ring_mask[i] = 0;
3436 else
3437 wlan_cfg_ctx->int_rxdma2host_ring_mask[i] =
3438 rxdma2host_ring_mask_msi[i];
3439 } else {
3440 wlan_cfg_ctx->int_rx_ring_mask[i] =
3441 rx_ring_mask_msi[i];
3442 wlan_cfg_ctx->int_rxdma2host_ring_mask[i] =
3443 rxdma2host_ring_mask_msi[i];
3444 }
3445 wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] =
3446 host2rxdma_mon_ring_mask_msi[i];
3447 wlan_cfg_ctx->int_rxdma2host_mon_ring_mask[i] =
3448 rxdma2host_mon_ring_mask_msi[i];
3449 }
3450 }
3451 #else
wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int num_dp_msi,int interrupt_mode,bool is_monitor_mode,bool ppeds_attached,bool umac_reset_support)3452 void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
3453 int num_dp_msi,
3454 int interrupt_mode,
3455 bool is_monitor_mode,
3456 bool ppeds_attached,
3457 bool umac_reset_support)
3458 { int i = 0;
3459 const uint8_t *tx_ring_intr_mask =
3460 wlan_cfg_get_tx_ring_int_mask(wlan_cfg_ctx);
3461
3462 for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
3463 wlan_cfg_ctx->int_tx_ring_mask[i] = tx_ring_intr_mask[i];
3464 if (wlan_cfg_ctx->int_tx_ring_mask[i])
3465 wlan_cfg_ctx->tx_rings_grp_bitmap |= BIT(i);
3466
3467 wlan_cfg_ctx->int_rx_mon_ring_mask[i] =
3468 rx_mon_ring_mask_msi[i];
3469 wlan_cfg_ctx->int_tx_mon_ring_mask[i] = tx_mon_ring_mask_msi[i];
3470 wlan_cfg_ctx->int_rx_err_ring_mask[i] =
3471 rx_err_ring_mask_msi[i];
3472 wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] =
3473 rx_wbm_rel_ring_mask_msi[i];
3474 wlan_cfg_ctx->int_reo_status_ring_mask[i] =
3475 reo_status_ring_mask_msi[i];
3476 if (is_monitor_mode) {
3477 wlan_cfg_ctx->int_rx_ring_mask[i] = 0;
3478 if (interrupt_mode == DP_INTR_POLL)
3479 wlan_cfg_ctx->int_rxdma2host_ring_mask[i] = 0;
3480 else
3481 wlan_cfg_ctx->int_rxdma2host_ring_mask[i] =
3482 rxdma2host_ring_mask_msi[i];
3483 } else {
3484 wlan_cfg_ctx->int_rx_ring_mask[i] =
3485 rx_ring_mask_msi[i];
3486 wlan_cfg_ctx->int_rxdma2host_ring_mask[i] =
3487 rxdma2host_ring_mask_msi[i];
3488 }
3489 wlan_cfg_ctx->int_host2rxdma_ring_mask[i] =
3490 host2rxdma_ring_mask_msi[i];
3491 wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] =
3492 host2rxdma_mon_ring_mask_msi[i];
3493 wlan_cfg_ctx->int_rxdma2host_mon_ring_mask[i] =
3494 rxdma2host_mon_ring_mask_msi[i];
3495 wlan_cfg_ctx->int_rx_ring_near_full_irq_1_mask[i] =
3496 rx_ring_near_full_irq_1_mask_msi[i];
3497 wlan_cfg_ctx->int_rx_ring_near_full_irq_2_mask[i] =
3498 rx_ring_near_full_irq_2_mask_msi[i];
3499 wlan_cfg_ctx->int_tx_ring_near_full_irq_mask[i] =
3500 tx_ring_near_full_irq_mask_msi[i];
3501 }
3502 }
3503 #endif
3504
3505 #else
3506
3507 static void
wlan_cfg_mask_assignment(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,struct dp_int_mask_assignment * mask_assignment,int interrupt_index,int i,bool is_monitor_mode)3508 wlan_cfg_mask_assignment(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
3509 struct dp_int_mask_assignment *mask_assignment,
3510 int interrupt_index, int i, bool is_monitor_mode)
3511 {
3512 int int_host2rxdma_mon_ring_mask;
3513 bool host2rxmon_mask_set = false;
3514 bool txmon_hw_support = false;
3515
3516 wlan_cfg_ctx->int_tx_ring_mask[i] =
3517 mask_assignment->tx_ring_mask[i];
3518 wlan_cfg_ctx->int_rx_mon_ring_mask[i] =
3519 mask_assignment->rx_mon_ring_mask[i];
3520 wlan_cfg_ctx->int_rx_err_ring_mask[i] =
3521 mask_assignment->rx_err_ring_mask[i];
3522 wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] =
3523 mask_assignment->rx_wbm_rel_ring_mask[i];
3524 wlan_cfg_ctx->int_reo_status_ring_mask[i] =
3525 mask_assignment->reo_status_ring_mask[i];
3526 wlan_cfg_ctx->int_ppeds_wbm_release_ring_mask[i] =
3527 mask_assignment->ppeds_wbm_release_ring_mask[i];
3528 wlan_cfg_ctx->int_ppe2tcl_ring_mask[i] =
3529 mask_assignment->ppe2tcl_ring_mask[i];
3530 wlan_cfg_ctx->int_reo2ppe_ring_mask[i] =
3531 mask_assignment->reo2ppe_ring_mask[i];
3532 if (is_monitor_mode) {
3533 wlan_cfg_ctx->int_rx_ring_mask[i] = 0;
3534 wlan_cfg_ctx->int_rxdma2host_ring_mask[i] = 0;
3535 } else {
3536 wlan_cfg_ctx->int_rx_ring_mask[i] =
3537 mask_assignment->rx_ring_mask[i];
3538 wlan_cfg_ctx->int_rxdma2host_ring_mask[i] =
3539 mask_assignment->rxdma2host_ring_mask[i];
3540 }
3541 wlan_cfg_ctx->int_host2rxdma_ring_mask[i] =
3542 mask_assignment->host2rxdma_ring_mask[i];
3543 wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] =
3544 mask_assignment->host2rxdma_mon_ring_mask[i];
3545 wlan_cfg_ctx->int_rxdma2host_mon_ring_mask[i] =
3546 mask_assignment->rxdma2host_mon_ring_mask[i];
3547 wlan_cfg_ctx->int_rx_ring_near_full_irq_1_mask[i] =
3548 mask_assignment->rx_ring_near_full_irq_1_mask[i];
3549 wlan_cfg_ctx->int_rx_ring_near_full_irq_2_mask[i] =
3550 mask_assignment->rx_ring_near_full_irq_2_mask[i];
3551 wlan_cfg_ctx->int_tx_ring_near_full_irq_mask[i] =
3552 mask_assignment->tx_ring_near_full_irq_mask[i];
3553
3554 txmon_hw_support = wlan_cfg_get_txmon_hw_support(wlan_cfg_ctx);
3555 if (txmon_hw_support) {
3556 wlan_cfg_ctx->int_tx_mon_ring_mask[i] =
3557 mask_assignment->tx_mon_ring_mask[i];
3558 wlan_cfg_ctx->int_host2txmon_ring_mask[i] =
3559 mask_assignment->host2txmon_ring_mask[i];
3560 int_host2rxdma_mon_ring_mask =
3561 mask_assignment->host2rxdma_mon_ring_mask[i];
3562 if (int_host2rxdma_mon_ring_mask && !host2rxmon_mask_set) {
3563 wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[interrupt_index] =
3564 mask_assignment->host2rxdma_mon_ring_mask[i];
3565 host2rxmon_mask_set = true;
3566 }
3567 } else {
3568 wlan_cfg_ctx->int_tx_mon_ring_mask[i] = 0;
3569 wlan_cfg_ctx->int_host2txmon_ring_mask[i] = 0;
3570 wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] =
3571 mask_assignment->host2rxdma_mon_ring_mask[i];
3572 }
3573 wlan_cfg_ctx->int_umac_reset_intr_mask[i] =
3574 mask_assignment->umac_reset_intr_mask[i];
3575 }
3576
wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int num_dp_msi,int interrupt_mode,bool is_monitor_mode,bool ppeds_attached,bool umac_reset_support)3577 void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
3578 int num_dp_msi,
3579 int interrupt_mode,
3580 bool is_monitor_mode,
3581 bool ppeds_attached,
3582 bool umac_reset_support)
3583 {
3584 int i = 0;
3585 int interrupt_index = 0;
3586 struct dp_int_mask_assignment *mask_assignment;
3587
3588 if(interrupt_mode == DP_INTR_INTEGRATED) {
3589 interrupt_index = 0;
3590 } else if (interrupt_mode == DP_INTR_MSI || interrupt_mode ==
3591 DP_INTR_POLL) {
3592 interrupt_index = num_dp_msi;
3593 } else {
3594 qdf_err("Interrupt mode %d", interrupt_mode);
3595 }
3596
3597 for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
3598 if (!ppeds_attached) {
3599 if (interrupt_index == 8 && umac_reset_support)
3600 mask_assignment = &dp_ur_mask_assignment_8msi;
3601 else
3602 mask_assignment =
3603 &dp_mask_assignment[interrupt_index];
3604
3605 } else if (interrupt_index == 8) {
3606 mask_assignment = &dp_ds_mask_assignment_8msi;
3607 } else if (interrupt_index == 9) {
3608 mask_assignment = &dp_ds_mask_assignment_9msi;
3609 } else {
3610 mask_assignment = &dp_mask_assignment[interrupt_index];
3611 }
3612
3613 wlan_cfg_mask_assignment(wlan_cfg_ctx, mask_assignment,
3614 interrupt_index, i, is_monitor_mode);
3615 }
3616 }
3617 #endif
3618
3619 #ifdef IPA_OFFLOAD
3620
3621 #define WLAN_CFG_IPA_ENABLE_MASK BIT(0)
3622 #ifdef IPA_WDI3_TX_TWO_PIPES
3623 /**
3624 * wlan_soc_ipa_cfg_attach() - Update ipa tx and tx alt config
3625 * in dp soc cfg context
3626 * @psoc: Object manager psoc
3627 * @wlan_cfg_ctx: dp soc cfg ctx
3628 *
3629 * Return: None
3630 */
3631 static void
wlan_soc_ipa_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3632 wlan_soc_ipa_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3633 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3634 {
3635 if (ucfg_ipa_get_pld_enable()) {
3636 wlan_cfg_ctx->ipa_enabled =
3637 (get_ipa_config((struct wlan_objmgr_psoc *)psoc) &
3638 WLAN_CFG_IPA_ENABLE_MASK);
3639 dp_info("is IPA enabled from ini: %d",
3640 wlan_cfg_ctx->ipa_enabled);
3641 } else {
3642 wlan_cfg_ctx->ipa_enabled = false;
3643 dp_info("IPA disabled from platform driver");
3644 }
3645 wlan_cfg_ctx->ipa_tx_ring_size =
3646 cfg_get(psoc, CFG_DP_IPA_TX_RING_SIZE);
3647 wlan_cfg_ctx->ipa_tx_comp_ring_size =
3648 cfg_get(psoc, CFG_DP_IPA_TX_COMP_RING_SIZE);
3649 wlan_cfg_ctx->ipa_tx_alt_ring_size =
3650 cfg_get(psoc, CFG_DP_IPA_TX_ALT_RING_SIZE);
3651 wlan_cfg_ctx->ipa_tx_alt_comp_ring_size =
3652 cfg_get(psoc, CFG_DP_IPA_TX_ALT_COMP_RING_SIZE);
3653 }
3654 #else /* !IPA_WDI3_TX_TWO_PIPES */
3655 /**
3656 * wlan_soc_ipa_cfg_attach() - Update ipa config in dp soc
3657 * cfg context
3658 * @psoc: Object manager psoc
3659 * @wlan_cfg_ctx: dp soc cfg ctx
3660 *
3661 * Return: None
3662 */
3663 static void
wlan_soc_ipa_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3664 wlan_soc_ipa_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3665 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3666 {
3667 if (ucfg_ipa_get_pld_enable()) {
3668 wlan_cfg_ctx->ipa_enabled =
3669 (get_ipa_config((struct wlan_objmgr_psoc *)psoc) &
3670 WLAN_CFG_IPA_ENABLE_MASK);
3671 dp_info("is IPA enabled from ini: %d",
3672 wlan_cfg_ctx->ipa_enabled);
3673 } else {
3674 wlan_cfg_ctx->ipa_enabled = false;
3675 dp_info("IPA disabled from platform driver");
3676 }
3677 wlan_cfg_ctx->ipa_tx_ring_size =
3678 cfg_get(psoc, CFG_DP_IPA_TX_RING_SIZE);
3679 wlan_cfg_ctx->ipa_tx_comp_ring_size =
3680 cfg_get(psoc, CFG_DP_IPA_TX_COMP_RING_SIZE);
3681 }
3682 #endif /* IPA_WDI3_TX_TWO_PIPES */
3683 #else /* !IPA_OFFLOAD */
3684 static inline void
wlan_soc_ipa_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3685 wlan_soc_ipa_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3686 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3687 {
3688 }
3689 #endif
3690
3691 #ifdef DP_HW_COOKIE_CONVERT_EXCEPTION
3692 static void
wlan_soc_hw_cc_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3693 wlan_soc_hw_cc_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3694 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3695 {
3696 wlan_cfg_ctx->hw_cc_enabled =
3697 cfg_get(psoc, CFG_DP_HW_CC_ENABLE);
3698 }
3699 #else
3700 static void
wlan_soc_hw_cc_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3701 wlan_soc_hw_cc_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3702 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3703 {
3704 wlan_cfg_ctx->hw_cc_enabled = true;
3705 }
3706 #endif
3707
3708 #ifdef WLAN_SUPPORT_PPEDS
3709 /**
3710 * wlan_soc_ppe_cfg_attach() - Update ppe config in dp soc
3711 * cfg context
3712 * @psoc: Object manager psoc
3713 * @wlan_cfg_ctx: dp soc cfg ctx
3714 *
3715 * Return: None
3716 */
3717 static void
wlan_soc_ppe_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3718 wlan_soc_ppe_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3719 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3720 {
3721 uint32_t ppeds_cfg;
3722 uint8_t psoc_id;
3723
3724 /*
3725 * The CFG_DP_PPEDS_WIFI_SOC_CFG provides WLAN SoC level PPEDS
3726 * enable/disable support. The bit map position corresponds to
3727 * WLAN SoC position in config/wireless file. With this we can
3728 * configure PPEDS for multiple WLAN SoC having same device ID.
3729 */
3730 psoc_id = wlan_psoc_get_id((struct wlan_objmgr_psoc *)psoc);
3731 ppeds_cfg = cfg_get(psoc, CFG_DP_PPEDS_WIFI_SOC_CFG);
3732 if (!(ppeds_cfg & (1 << psoc_id))) {
3733 dp_info("ppeds_cfg is disabled for psoc_id %d", psoc_id);
3734 return;
3735 }
3736
3737 /*
3738 * The CFG_DP_PPEDS_ENABLE provides ppeds enable/disable support
3739 * based on device ID in corresponding INI file.
3740 */
3741 wlan_cfg_ctx->ppeds_enable = cfg_get(psoc, CFG_DP_PPEDS_ENABLE);
3742 if (!wlan_cfg_ctx->ppeds_enable)
3743 return;
3744
3745 wlan_cfg_ctx->reo2ppe_ring = cfg_get(psoc, CFG_DP_REO2PPE_RING);
3746 wlan_cfg_ctx->ppe2tcl_ring = cfg_get(psoc, CFG_DP_PPE2TCL_RING);
3747 wlan_cfg_ctx->ppeds_num_tx_desc = cfg_get(psoc, CFG_DP_PPEDS_TX_DESC);
3748 wlan_cfg_ctx->ppeds_tx_desc_hotlist_len =
3749 cfg_get(psoc, CFG_DP_PPEDS_TX_DESC_HOTLIST_LEN);
3750 wlan_cfg_ctx->ppeds_tx_comp_napi_budget =
3751 cfg_get(psoc, CFG_DP_PPEDS_TX_CMP_NAPI_BUDGET);
3752 }
3753 #else
3754 static inline void
wlan_soc_ppe_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3755 wlan_soc_ppe_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3756 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3757 {
3758 }
3759 #endif
3760
3761 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
3762 /**
3763 * wlan_cfg_get_lsb_set_pos() - returns position of LSB which is set
3764 * @val: value to test
3765 *
3766 * Return: position of LSB which is set
3767 */
wlan_cfg_get_lsb_set_pos(uint8_t val)3768 static uint8_t wlan_cfg_get_lsb_set_pos(uint8_t val)
3769 {
3770 uint8_t pos = 0;
3771
3772 while (pos < 8) {
3773 if (val & (1 << pos))
3774 return pos;
3775
3776 pos++;
3777 }
3778
3779 return 0;
3780 }
3781
3782 /**
3783 * wlan_multi_soc_mlo_cfg_attach() - Update multi soc mlo config in dp soc
3784 * cfg context
3785 * @psoc: Object manager psoc
3786 * @wlan_cfg_ctx: dp soc cfg ctx
3787 *
3788 * Return: None
3789 */
3790 static void
wlan_multi_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3791 wlan_multi_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3792 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3793 {
3794 uint8_t rx_ring_map;
3795
3796 rx_ring_map =
3797 cfg_get(psoc, CFG_DP_MLO_RX_RING_MAP);
3798 wlan_cfg_ctx->mlo_chip_rx_ring_map = rx_ring_map;
3799 }
3800 #else
3801 static inline void
wlan_multi_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3802 wlan_multi_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3803 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3804 {
3805 }
3806 #endif
3807
3808 #ifdef WLAN_FEATURE_11BE_MLO
3809 /**
3810 * wlan_soc_mlo_cfg_attach() - Update mlo config in dp soc
3811 * cfg context
3812 * @psoc: Object manager psoc
3813 * @wlan_cfg_ctx: dp soc cfg ctx
3814 *
3815 * Return: None
3816 */
3817 static void
wlan_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3818 wlan_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3819 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3820 {
3821 wlan_multi_soc_mlo_cfg_attach(psoc, wlan_cfg_ctx);
3822 }
3823 #else
3824 static inline void
wlan_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3825 wlan_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3826 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3827 {
3828 }
3829 #endif
3830
3831 #ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
3832 /**
3833 * wlan_soc_vdev_hw_stats_cfg_attach() - Update hw vdev stats config in dp soc
3834 * cfg context
3835 * @psoc: Object manager psoc
3836 * @wlan_cfg_ctx: dp soc cfg ctx
3837 *
3838 * Return: None
3839 */
3840 static void
wlan_soc_vdev_hw_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3841 wlan_soc_vdev_hw_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3842 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3843 {
3844 wlan_cfg_ctx->vdev_stats_hw_offload_config = cfg_get(psoc,
3845 CFG_DP_VDEV_STATS_HW_OFFLOAD_CONFIG);
3846 wlan_cfg_ctx->vdev_stats_hw_offload_timer = cfg_get(psoc,
3847 CFG_DP_VDEV_STATS_HW_OFFLOAD_TIMER);
3848 }
3849 #else
3850 static void
wlan_soc_vdev_hw_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3851 wlan_soc_vdev_hw_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3852 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3853 {
3854 }
3855 #endif
3856
3857 #ifdef WLAN_TX_PKT_CAPTURE_ENH
wlan_soc_tx_capt_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3858 static void wlan_soc_tx_capt_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3859 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3860 {
3861 int i = 0;
3862 uint8_t rbm_id = 0;
3863
3864 wlan_cfg_ctx->tx_capt_max_mem_allowed =
3865 cfg_get(psoc, CFG_DP_TX_CAPT_MAX_MEM_MB) * 1024 * 1024;
3866
3867 for (i = 0; i < MAX_PDEV_CNT; i++) {
3868 switch (i) {
3869 case 0:
3870 rbm_id = cfg_get(psoc, CFG_DP_TX_CAPT_RADIO_0_RBM_ID);
3871 break;
3872 case 1:
3873 rbm_id = cfg_get(psoc, CFG_DP_TX_CAPT_RADIO_1_RBM_ID);
3874 break;
3875 case 2:
3876 rbm_id = cfg_get(psoc, CFG_DP_TX_CAPT_RADIO_2_RBM_ID);
3877 break;
3878 default:
3879 rbm_id = cfg_get(psoc, CFG_DP_TX_CAPT_RADIO_3_RBM_ID);
3880 break;
3881 }
3882
3883 wlan_cfg_ctx->tx_capt_rbm_id[i] = rbm_id;
3884 }
3885 }
3886 #else
wlan_soc_tx_capt_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3887 static void wlan_soc_tx_capt_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3888 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3889 {
3890 }
3891 #endif
3892
3893 #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE
3894 static void
wlan_soc_local_pkt_capture_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3895 wlan_soc_local_pkt_capture_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3896 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3897 {
3898 wlan_cfg_ctx->local_pkt_capture =
3899 cfg_get(psoc, CFG_DP_LOCAL_PKT_CAPTURE);
3900 }
3901 #else
3902 static void
wlan_soc_local_pkt_capture_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3903 wlan_soc_local_pkt_capture_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3904 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3905 {
3906 }
3907 #endif
3908
3909 void
wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,struct cdp_ctrl_objmgr_psoc * psoc)3910 wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
3911 struct cdp_ctrl_objmgr_psoc *psoc)
3912 {
3913 wlan_cfg_ctx->reo_rings_mapping = cfg_get(psoc,
3914 CFG_DP_REO_RINGS_MAP);
3915 }
3916
3917 #ifdef CONFIG_SAWF_STATS
3918 /**
3919 * wlan_soc_sawf_stats_cfg_attach() - Update sawf stats config in dp soc
3920 * cfg context
3921 * @psoc: Object manager psoc
3922 * @wlan_cfg_ctx: dp soc cfg ctx
3923 *
3924 * Return: None
3925 */
3926 static void
wlan_soc_sawf_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3927 wlan_soc_sawf_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3928 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3929 {
3930 wlan_cfg_ctx->sawf_stats = cfg_get(psoc, CFG_DP_SAWF_STATS);
3931 }
3932
wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt * cfg)3933 uint8_t wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg)
3934 {
3935 return cfg->sawf_stats;
3936 }
3937
3938 qdf_export_symbol(wlan_cfg_get_sawf_stats_config);
3939
wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt * cfg,uint8_t val)3940 void wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg,
3941 uint8_t val)
3942 {
3943 cfg->sawf_stats = val;
3944 }
3945 #else
3946 static void
wlan_soc_sawf_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3947 wlan_soc_sawf_stats_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3948 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3949 {
3950 }
3951
wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt * cfg)3952 uint8_t wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg)
3953 {
3954 return 0;
3955 }
3956
3957 qdf_export_symbol(wlan_cfg_get_sawf_stats_config);
3958
wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt * cfg,uint8_t val)3959 void wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg,
3960 uint8_t val)
3961 {
3962 }
3963 #endif /* CONFIG_SAWF_STATS */
3964
3965 #ifdef DP_TX_PACKET_INSPECT_FOR_ILP
3966 /**
3967 * wlan_soc_tx_packet_inspect_attach() - Update TX packet inspection config
3968 * @psoc: object manager psoc
3969 * @wlan_cfg_ctx: dp soc cfg ctx
3970 *
3971 * Return: None
3972 */
3973 static void
wlan_soc_tx_packet_inspect_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3974 wlan_soc_tx_packet_inspect_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3975 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3976 {
3977 wlan_cfg_ctx->tx_pkt_inspect_for_ilp =
3978 cfg_get(psoc, CFG_TX_PKT_INSPECT_FOR_ILP);
3979 }
3980 #else
3981 static void
wlan_soc_tx_packet_inspect_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3982 wlan_soc_tx_packet_inspect_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3983 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3984 {
3985 }
3986 #endif
3987
3988 #ifdef DP_UMAC_HW_RESET_SUPPORT
3989 /**
3990 * wlan_soc_umac_reset_cfg_attach() - Update umac reset buffer window config
3991 * @psoc: object manager psoc
3992 * @wlan_cfg_ctx: dp soc cfg ctx
3993 *
3994 * Return: None
3995 */
3996 static void
wlan_soc_umac_reset_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)3997 wlan_soc_umac_reset_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
3998 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
3999 {
4000 wlan_cfg_ctx->umac_reset_buffer_window =
4001 cfg_get(psoc, CFG_DP_UMAC_RESET_BUFFER_WINDOW);
4002 }
4003 #else
4004 static void
wlan_soc_umac_reset_cfg_attach(struct cdp_ctrl_objmgr_psoc * psoc,struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)4005 wlan_soc_umac_reset_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
4006 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
4007 {
4008 }
4009 #endif /* DP_UMAC_HW_RESET_SUPPORT */
4010
4011 #ifdef WLAN_SOFTUMAC_SUPPORT
4012 struct wlan_cfg_dp_soc_ctxt *
wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc * psoc)4013 wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
4014 {
4015 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx =
4016 qdf_mem_malloc(sizeof(struct wlan_cfg_dp_soc_ctxt));
4017 uint32_t gro_bit_set;
4018
4019 if (!wlan_cfg_ctx)
4020 return NULL;
4021
4022 wlan_cfg_ctx->rxdma1_enable = WLAN_CFG_RXDMA1_ENABLE;
4023 wlan_cfg_ctx->num_int_ctxts = WLAN_CFG_INT_NUM_CONTEXTS;
4024 wlan_cfg_ctx->max_clients = cfg_get(psoc, CFG_DP_MAX_CLIENTS);
4025 wlan_cfg_ctx->max_alloc_size = cfg_get(psoc, CFG_DP_MAX_ALLOC_SIZE);
4026 wlan_cfg_ctx->per_pdev_lmac_ring = cfg_get(psoc, CFG_DP_PDEV_LMAC_RING);
4027 wlan_cfg_ctx->num_tx_desc_pool = MAX_TXDESC_POOLS;
4028 wlan_cfg_ctx->num_tx_ext_desc_pool = cfg_get(psoc,
4029 CFG_DP_TX_EXT_DESC_POOLS);
4030 wlan_cfg_ctx->num_tx_desc = cfg_get(psoc, CFG_DP_TX_DESC);
4031 wlan_cfg_ctx->num_tx_spl_desc = cfg_get(psoc, CFG_DP_TX_SPL_DESC);
4032 wlan_cfg_ctx->min_tx_desc = WLAN_CFG_NUM_TX_DESC_MIN;
4033 wlan_cfg_ctx->num_tx_ext_desc = cfg_get(psoc, CFG_DP_TX_EXT_DESC);
4034 wlan_cfg_ctx->htt_packet_type = cfg_get(psoc, CFG_DP_HTT_PACKET_TYPE);
4035 wlan_cfg_ctx->max_peer_id = cfg_get(psoc, CFG_DP_MAX_PEER_ID);
4036
4037 wlan_cfg_ctx->int_batch_threshold_tx =
4038 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_TX);
4039 wlan_cfg_ctx->int_timer_threshold_tx =
4040 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_TX);
4041 wlan_cfg_ctx->int_batch_threshold_rx =
4042 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_RX);
4043 wlan_cfg_ctx->int_timer_threshold_rx =
4044 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_RX);
4045 wlan_cfg_ctx->int_batch_threshold_other =
4046 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_OTHER);
4047 wlan_cfg_ctx->int_timer_threshold_other =
4048 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_OTHER);
4049 wlan_cfg_ctx->int_batch_threshold_mon_dest =
4050 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_MON_DEST);
4051 wlan_cfg_ctx->int_timer_threshold_mon_dest =
4052 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_MON_DEST);
4053 wlan_cfg_ctx->pktlog_buffer_size =
4054 cfg_get(psoc, CFG_DP_PKTLOG_BUFFER_SIZE);
4055
4056 /*
4057 * This is default mapping and can be overridden by
4058 * HW config received from FW.
4059 */
4060 wlan_cfg_set_hw_mac_idx(wlan_cfg_ctx, 0, 0);
4061 if (MAX_PDEV_CNT > 1)
4062 wlan_cfg_set_hw_mac_idx(wlan_cfg_ctx, 1, 2);
4063 if (MAX_PDEV_CNT > 2)
4064 wlan_cfg_set_hw_mac_idx(wlan_cfg_ctx, 2, 1);
4065
4066 wlan_cfg_ctx->base_hw_macid = cfg_get(psoc, CFG_DP_BASE_HW_MAC_ID);
4067
4068 wlan_cfg_ctx->rx_hash = cfg_get(psoc, CFG_DP_RX_HASH);
4069 wlan_cfg_ctx->tso_enabled = cfg_get(psoc, CFG_DP_TSO);
4070 wlan_cfg_ctx->lro_enabled = cfg_get(psoc, CFG_DP_LRO);
4071 wlan_cfg_ctx->sg_enabled = cfg_get(psoc, CFG_DP_SG);
4072 gro_bit_set = cfg_get(psoc, CFG_DP_GRO);
4073 if (gro_bit_set & DP_GRO_ENABLE_BIT_SET) {
4074 wlan_cfg_ctx->gro_enabled = true;
4075 if (gro_bit_set & DP_TC_BASED_DYNAMIC_GRO)
4076 wlan_cfg_ctx->tc_based_dynamic_gro = true;
4077 }
4078 wlan_cfg_ctx->tc_ingress_prio = cfg_get(psoc, CFG_DP_TC_INGRESS_PRIO);
4079 wlan_cfg_ctx->ol_tx_csum_enabled = cfg_get(psoc, CFG_DP_OL_TX_CSUM);
4080 wlan_cfg_ctx->ol_rx_csum_enabled = cfg_get(psoc, CFG_DP_OL_RX_CSUM);
4081 wlan_cfg_ctx->rawmode_enabled = cfg_get(psoc, CFG_DP_RAWMODE);
4082 wlan_cfg_ctx->peer_flow_ctrl_enabled =
4083 cfg_get(psoc, CFG_DP_PEER_FLOW_CTRL);
4084 wlan_cfg_ctx->napi_enabled = cfg_get(psoc, CFG_DP_NAPI);
4085 wlan_cfg_ctx->p2p_tcp_udp_checksumoffload =
4086 cfg_get(psoc, CFG_DP_P2P_TCP_UDP_CKSUM_OFFLOAD);
4087 wlan_cfg_ctx->nan_tcp_udp_checksumoffload =
4088 cfg_get(psoc, CFG_DP_NAN_TCP_UDP_CKSUM_OFFLOAD);
4089 wlan_cfg_ctx->tcp_udp_checksumoffload =
4090 cfg_get(psoc, CFG_DP_TCP_UDP_CKSUM_OFFLOAD);
4091 wlan_cfg_ctx->legacy_mode_checksumoffload_disable =
4092 cfg_get(psoc, CFG_DP_LEGACY_MODE_CSUM_DISABLE);
4093 wlan_cfg_ctx->per_pkt_trace = cfg_get(psoc, CFG_DP_PER_PKT_LOGGING);
4094 wlan_cfg_ctx->defrag_timeout_check =
4095 cfg_get(psoc, CFG_DP_DEFRAG_TIMEOUT_CHECK);
4096 wlan_cfg_ctx->rx_defrag_min_timeout =
4097 cfg_get(psoc, CFG_DP_RX_DEFRAG_TIMEOUT);
4098
4099 wlan_cfg_ctx->rxdma_refill_ring = cfg_get(psoc,
4100 CFG_DP_RXDMA_REFILL_RING);
4101 wlan_cfg_ctx->tx_desc_limit_0 = cfg_get(psoc,
4102 CFG_DP_TX_DESC_LIMIT_0);
4103 wlan_cfg_ctx->tx_desc_limit_1 = cfg_get(psoc,
4104 CFG_DP_TX_DESC_LIMIT_1);
4105 wlan_cfg_ctx->tx_desc_limit_2 = cfg_get(psoc,
4106 CFG_DP_TX_DESC_LIMIT_2);
4107 wlan_cfg_ctx->tx_device_limit = cfg_get(psoc,
4108 CFG_DP_TX_DEVICE_LIMIT);
4109 wlan_cfg_ctx->tx_spl_device_limit = cfg_get(psoc,
4110 CFG_DP_TX_SPL_DEVICE_LIMIT);
4111 wlan_cfg_ctx->tx_sw_internode_queue = cfg_get(psoc,
4112 CFG_DP_TX_SW_INTERNODE_QUEUE);
4113 wlan_cfg_ctx->rxdma_err_dst_ring = cfg_get(psoc,
4114 CFG_DP_RXDMA_ERR_DST_RING);
4115 wlan_cfg_ctx->enable_data_stall_detection =
4116 cfg_get(psoc, CFG_DP_ENABLE_DATA_STALL_DETECTION);
4117 wlan_cfg_ctx->tx_flow_start_queue_offset =
4118 cfg_get(psoc, CFG_DP_TX_FLOW_START_QUEUE_OFFSET);
4119 wlan_cfg_ctx->tx_flow_stop_queue_threshold =
4120 cfg_get(psoc, CFG_DP_TX_FLOW_STOP_QUEUE_TH);
4121 wlan_cfg_ctx->disable_intra_bss_fwd =
4122 cfg_get(psoc, CFG_DP_AP_STA_SECURITY_SEPERATION);
4123 wlan_cfg_ctx->rx_sw_desc_weight = cfg_get(psoc,
4124 CFG_DP_RX_SW_DESC_WEIGHT);
4125 wlan_cfg_ctx->rx_sw_desc_num = cfg_get(psoc,
4126 CFG_DP_RX_SW_DESC_NUM);
4127 wlan_cfg_ctx->rx_toeplitz_hash_key = (uint8_t *)rx_fst_toeplitz_key;
4128 wlan_cfg_ctx->rx_flow_max_search = WLAN_CFG_RX_FST_MAX_SEARCH;
4129 wlan_cfg_ctx->is_rx_flow_tag_enabled =
4130 cfg_get(psoc, CFG_DP_RX_FLOW_TAG_ENABLE);
4131 wlan_cfg_ctx->is_rx_flow_search_table_per_pdev =
4132 cfg_get(psoc, CFG_DP_RX_FLOW_SEARCH_TABLE_PER_PDEV);
4133 wlan_cfg_ctx->rx_flow_search_table_size =
4134 cfg_get(psoc, CFG_DP_RX_FLOW_SEARCH_TABLE_SIZE);
4135 wlan_cfg_ctx->is_rx_mon_protocol_flow_tag_enabled =
4136 cfg_get(psoc, CFG_DP_RX_MON_PROTOCOL_FLOW_TAG_ENABLE);
4137 wlan_cfg_ctx->mon_drop_thresh =
4138 cfg_get(psoc, CFG_DP_RXDMA_MONITOR_RX_DROP_THRESHOLD);
4139 /* TODO: add INI item for RX RINGS MAPPING in RHINE */
4140 wlan_cfg_ctx->rx_rings_mapping = 0x7;
4141 wlan_cfg_ctx->pext_stats_enabled = cfg_get(psoc, CFG_DP_PEER_EXT_STATS);
4142 wlan_cfg_ctx->is_rx_buff_pool_enabled =
4143 cfg_get(psoc, CFG_DP_RX_BUFF_POOL_ENABLE);
4144 wlan_cfg_ctx->is_rx_refill_buff_pool_enabled =
4145 cfg_get(psoc, CFG_DP_RX_REFILL_BUFF_POOL_ENABLE);
4146 wlan_cfg_ctx->enable_dp_buf_page_frag_alloc =
4147 cfg_get(psoc, CFG_DP_BUFS_PAGE_FRAG_ALLOCS);
4148 wlan_cfg_ctx->rx_pending_high_threshold =
4149 cfg_get(psoc, CFG_DP_RX_PENDING_HL_THRESHOLD);
4150 wlan_cfg_ctx->rx_pending_low_threshold =
4151 cfg_get(psoc, CFG_DP_RX_PENDING_LO_THRESHOLD);
4152 wlan_cfg_ctx->is_poll_mode_enabled =
4153 cfg_get(psoc, CFG_DP_POLL_MODE_ENABLE);
4154 wlan_cfg_ctx->is_swlm_enabled = cfg_get(psoc, CFG_DP_SWLM_ENABLE);
4155 wlan_cfg_ctx->fst_in_cmem = cfg_get(psoc, CFG_DP_RX_FST_IN_CMEM);
4156 wlan_cfg_ctx->tx_per_pkt_vdev_id_check =
4157 cfg_get(psoc, CFG_DP_TX_PER_PKT_VDEV_ID_CHECK);
4158 wlan_cfg_ctx->wow_check_rx_pending_enable =
4159 cfg_get(psoc, CFG_DP_WOW_CHECK_RX_PENDING);
4160 wlan_cfg_ctx->delay_mon_replenish = cfg_get(psoc,
4161 CFG_DP_DELAY_MON_REPLENISH);
4162 wlan_cfg_ctx->rx_mon_buf_ring_size = cfg_get(psoc,
4163 CFG_DP_RXDMA_MONITOR_BUF_RING);
4164 wlan_cfg_ctx->tx_mon_buf_ring_size = cfg_get(psoc,
4165 CFG_DP_TX_MONITOR_BUF_RING);
4166 wlan_soc_ipa_cfg_attach(psoc, wlan_cfg_ctx);
4167 wlan_soc_hw_cc_cfg_attach(psoc, wlan_cfg_ctx);
4168 wlan_soc_ppe_cfg_attach(psoc, wlan_cfg_ctx);
4169 wlan_soc_mlo_cfg_attach(psoc, wlan_cfg_ctx);
4170 wlan_soc_vdev_hw_stats_cfg_attach(psoc, wlan_cfg_ctx);
4171 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2
4172 wlan_cfg_ctx->pkt_capture_mode = cfg_get(psoc, CFG_PKT_CAPTURE_MODE) &
4173 PKT_CAPTURE_MODE_DATA_ONLY;
4174 #endif
4175 #ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL
4176 wlan_cfg_ctx->rx_refill_buff_pool_size = DP_RX_REFILL_BUFF_POOL_SIZE;
4177 #endif
4178 wlan_cfg_ctx->num_rxdma_dst_rings_per_pdev = NUM_RXDMA_RINGS_PER_PDEV;
4179 wlan_cfg_ctx->num_rxdma_status_rings_per_pdev =
4180 NUM_RXDMA_STATUS_RINGS_PER_PDEV;
4181 wlan_soc_tx_capt_cfg_attach(psoc, wlan_cfg_ctx);
4182 wlan_cfg_ctx->mpdu_retry_threshold_1 =
4183 cfg_get(psoc, CFG_DP_MPDU_RETRY_THRESHOLD_1);
4184 wlan_cfg_ctx->mpdu_retry_threshold_2 =
4185 cfg_get(psoc, CFG_DP_MPDU_RETRY_THRESHOLD_2);
4186
4187 wlan_cfg_ctx->napi_scale_factor = cfg_get(psoc,
4188 CFG_DP_NAPI_SCALE_FACTOR);
4189 wlan_soc_sawf_stats_cfg_attach(psoc, wlan_cfg_ctx);
4190 wlan_cfg_ctx->txmon_sw_peer_filtering =
4191 cfg_get(psoc, CFG_DP_TXMON_SW_PEER_FILTERING);
4192 wlan_soc_tx_packet_inspect_attach(psoc, wlan_cfg_ctx);
4193 wlan_soc_local_pkt_capture_cfg_attach(psoc, wlan_cfg_ctx);
4194 wlan_soc_umac_reset_cfg_attach(psoc, wlan_cfg_ctx);
4195 wlan_cfg_ctx->rx_buffer_size = cfg_get(psoc, CFG_DP_RX_BUFFER_SIZE);
4196 wlan_cfg_ctx->avg_rate_stats_filter_val =
4197 cfg_get(psoc, CFG_DP_STATS_AVG_RATE_FILTER);
4198 return wlan_cfg_ctx;
4199 }
4200
4201 #else
4202
4203 struct wlan_cfg_dp_soc_ctxt *
wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc * psoc)4204 wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
4205 {
4206 struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx =
4207 qdf_mem_malloc(sizeof(struct wlan_cfg_dp_soc_ctxt));
4208 uint32_t gro_bit_set;
4209
4210 if (!wlan_cfg_ctx)
4211 return NULL;
4212
4213 wlan_cfg_ctx->rxdma1_enable = WLAN_CFG_RXDMA1_ENABLE;
4214 wlan_cfg_ctx->num_int_ctxts = WLAN_CFG_INT_NUM_CONTEXTS;
4215 wlan_cfg_ctx->max_clients = cfg_get(psoc, CFG_DP_MAX_CLIENTS);
4216 wlan_cfg_ctx->max_alloc_size = cfg_get(psoc, CFG_DP_MAX_ALLOC_SIZE);
4217 wlan_cfg_ctx->per_pdev_tx_ring = cfg_get(psoc, CFG_DP_PDEV_TX_RING);
4218 wlan_cfg_ctx->num_reo_dest_rings = cfg_get(psoc, CFG_DP_REO_DEST_RINGS);
4219 wlan_cfg_ctx->num_tcl_data_rings = cfg_get(psoc, CFG_DP_TCL_DATA_RINGS);
4220 wlan_cfg_ctx->num_tx_comp_rings = cfg_get(psoc, CFG_DP_TX_COMP_RINGS);
4221 wlan_cfg_ctx->num_nss_reo_dest_rings =
4222 cfg_get(psoc, CFG_DP_NSS_REO_DEST_RINGS);
4223 wlan_cfg_ctx->num_nss_tcl_data_rings =
4224 cfg_get(psoc, CFG_DP_NSS_TCL_DATA_RINGS);
4225 wlan_cfg_ctx->per_pdev_rx_ring = cfg_get(psoc, CFG_DP_PDEV_RX_RING);
4226 wlan_cfg_ctx->per_pdev_lmac_ring = cfg_get(psoc, CFG_DP_PDEV_LMAC_RING);
4227 wlan_cfg_ctx->num_tx_desc_pool = MAX_TXDESC_POOLS;
4228 wlan_cfg_ctx->num_tx_ext_desc_pool = cfg_get(psoc,
4229 CFG_DP_TX_EXT_DESC_POOLS);
4230 wlan_cfg_ctx->num_tx_desc = cfg_get(psoc, CFG_DP_TX_DESC);
4231 wlan_cfg_ctx->num_tx_spl_desc = cfg_get(psoc, CFG_DP_TX_SPL_DESC);
4232 wlan_cfg_ctx->min_tx_desc = WLAN_CFG_NUM_TX_DESC_MIN;
4233 wlan_cfg_ctx->num_tx_ext_desc = cfg_get(psoc, CFG_DP_TX_EXT_DESC);
4234 wlan_cfg_ctx->htt_packet_type = cfg_get(psoc, CFG_DP_HTT_PACKET_TYPE);
4235 wlan_cfg_ctx->max_peer_id = cfg_get(psoc, CFG_DP_MAX_PEER_ID);
4236
4237 wlan_cfg_ctx->tx_ring_size = cfg_get(psoc, CFG_DP_TX_RING_SIZE);
4238 wlan_cfg_ctx->time_control_bp = cfg_get(psoc, CFG_DP_TIME_CONTROL_BP);
4239 wlan_cfg_ctx->qref_control_size =
4240 cfg_get(psoc, CFG_DP_QREF_CONTROL_SIZE);
4241 wlan_cfg_ctx->tx_comp_ring_size = cfg_get(psoc,
4242 CFG_DP_TX_COMPL_RING_SIZE);
4243
4244 wlan_cfg_ctx->tx_comp_ring_size_nss =
4245 cfg_get(psoc, CFG_DP_NSS_COMP_RING_SIZE);
4246
4247 wlan_cfg_ctx->int_batch_threshold_tx =
4248 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_TX);
4249 wlan_cfg_ctx->int_timer_threshold_tx =
4250 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_TX);
4251 wlan_cfg_ctx->int_batch_threshold_rx =
4252 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_RX);
4253 wlan_cfg_ctx->int_timer_threshold_rx =
4254 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_RX);
4255 wlan_cfg_ctx->int_batch_threshold_other =
4256 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_OTHER);
4257 wlan_cfg_ctx->int_timer_threshold_other =
4258 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_OTHER);
4259 wlan_cfg_ctx->int_batch_threshold_mon_dest =
4260 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_MON_DEST);
4261 wlan_cfg_ctx->int_timer_threshold_mon_dest =
4262 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_MON_DEST);
4263 wlan_cfg_ctx->int_batch_threshold_ppe2tcl =
4264 cfg_get(psoc, CFG_DP_INT_BATCH_THRESHOLD_PPE2TCL);
4265 wlan_cfg_ctx->int_timer_threshold_ppe2tcl =
4266 cfg_get(psoc, CFG_DP_INT_TIMER_THRESHOLD_PPE2TCL);
4267
4268 wlan_cfg_ctx->pktlog_buffer_size =
4269 cfg_get(psoc, CFG_DP_PKTLOG_BUFFER_SIZE);
4270
4271 /* This is default mapping and can be overridden by HW config
4272 * received from FW */
4273 wlan_cfg_set_hw_mac_idx(wlan_cfg_ctx, 0, 0);
4274 if (MAX_PDEV_CNT > 1)
4275 wlan_cfg_set_hw_mac_idx(wlan_cfg_ctx, 1, 2);
4276 if (MAX_PDEV_CNT > 2)
4277 wlan_cfg_set_hw_mac_idx(wlan_cfg_ctx, 2, 1);
4278
4279 wlan_cfg_ctx->base_hw_macid = cfg_get(psoc, CFG_DP_BASE_HW_MAC_ID);
4280
4281 wlan_cfg_ctx->rx_hash = cfg_get(psoc, CFG_DP_RX_HASH);
4282 wlan_cfg_ctx->tso_enabled = cfg_get(psoc, CFG_DP_TSO);
4283 wlan_cfg_ctx->lro_enabled = cfg_get(psoc, CFG_DP_LRO);
4284 wlan_cfg_ctx->sg_enabled = cfg_get(psoc, CFG_DP_SG);
4285 gro_bit_set = cfg_get(psoc, CFG_DP_GRO);
4286 if (gro_bit_set & DP_GRO_ENABLE_BIT_SET) {
4287 wlan_cfg_ctx->gro_enabled = true;
4288 if (gro_bit_set & DP_TC_BASED_DYNAMIC_GRO)
4289 wlan_cfg_ctx->tc_based_dynamic_gro = true;
4290 }
4291 wlan_cfg_ctx->tc_ingress_prio = cfg_get(psoc, CFG_DP_TC_INGRESS_PRIO);
4292 wlan_cfg_ctx->ol_tx_csum_enabled = cfg_get(psoc, CFG_DP_OL_TX_CSUM);
4293 wlan_cfg_ctx->ol_rx_csum_enabled = cfg_get(psoc, CFG_DP_OL_RX_CSUM);
4294 wlan_cfg_ctx->rawmode_enabled = cfg_get(psoc, CFG_DP_RAWMODE);
4295 wlan_cfg_ctx->peer_flow_ctrl_enabled =
4296 cfg_get(psoc, CFG_DP_PEER_FLOW_CTRL);
4297 wlan_cfg_ctx->napi_enabled = cfg_get(psoc, CFG_DP_NAPI);
4298 wlan_cfg_ctx->p2p_tcp_udp_checksumoffload =
4299 cfg_get(psoc, CFG_DP_P2P_TCP_UDP_CKSUM_OFFLOAD);
4300 wlan_cfg_ctx->nan_tcp_udp_checksumoffload =
4301 cfg_get(psoc, CFG_DP_NAN_TCP_UDP_CKSUM_OFFLOAD);
4302 wlan_cfg_ctx->tcp_udp_checksumoffload =
4303 cfg_get(psoc, CFG_DP_TCP_UDP_CKSUM_OFFLOAD);
4304 wlan_cfg_ctx->legacy_mode_checksumoffload_disable =
4305 cfg_get(psoc, CFG_DP_LEGACY_MODE_CSUM_DISABLE);
4306 wlan_cfg_ctx->per_pkt_trace = cfg_get(psoc, CFG_DP_PER_PKT_LOGGING);
4307 wlan_cfg_ctx->defrag_timeout_check =
4308 cfg_get(psoc, CFG_DP_DEFRAG_TIMEOUT_CHECK);
4309 wlan_cfg_ctx->rx_defrag_min_timeout =
4310 cfg_get(psoc, CFG_DP_RX_DEFRAG_TIMEOUT);
4311
4312 wlan_cfg_ctx->wbm_release_ring = cfg_get(psoc,
4313 CFG_DP_WBM_RELEASE_RING);
4314 wlan_cfg_ctx->tcl_cmd_credit_ring = cfg_get(psoc,
4315 CFG_DP_TCL_CMD_CREDIT_RING);
4316 wlan_cfg_ctx->tcl_status_ring = cfg_get(psoc,
4317 CFG_DP_TCL_STATUS_RING);
4318 wlan_cfg_ctx->reo_dst_ring_size = cfg_get(psoc,
4319 CFG_DP_RX_DESTINATION_RING);
4320 wlan_cfg_ctx->reo_reinject_ring = cfg_get(psoc,
4321 CFG_DP_REO_REINJECT_RING);
4322 wlan_cfg_ctx->rx_release_ring = cfg_get(psoc,
4323 CFG_DP_RX_RELEASE_RING);
4324 wlan_cfg_ctx->reo_exception_ring = cfg_get(psoc,
4325 CFG_DP_REO_EXCEPTION_RING);
4326 wlan_cfg_ctx->reo_cmd_ring = cfg_get(psoc,
4327 CFG_DP_REO_CMD_RING);
4328 wlan_cfg_ctx->reo_status_ring = cfg_get(psoc,
4329 CFG_DP_REO_STATUS_RING);
4330 wlan_cfg_ctx->rxdma_refill_ring = cfg_get(psoc,
4331 CFG_DP_RXDMA_REFILL_RING);
4332 wlan_cfg_ctx->rxdma_refill_lt_disable =
4333 cfg_get(psoc,
4334 CFG_DP_RXDMA_REFILL_LT_DISABLE);
4335 wlan_cfg_ctx->tx_desc_limit_0 = cfg_get(psoc,
4336 CFG_DP_TX_DESC_LIMIT_0);
4337 wlan_cfg_ctx->tx_desc_limit_1 = cfg_get(psoc,
4338 CFG_DP_TX_DESC_LIMIT_1);
4339 wlan_cfg_ctx->tx_desc_limit_2 = cfg_get(psoc,
4340 CFG_DP_TX_DESC_LIMIT_2);
4341 wlan_cfg_ctx->tx_device_limit = cfg_get(psoc,
4342 CFG_DP_TX_DEVICE_LIMIT);
4343 wlan_cfg_ctx->tx_spl_device_limit = cfg_get(psoc,
4344 CFG_DP_TX_SPL_DEVICE_LIMIT);
4345 wlan_cfg_ctx->tx_sw_internode_queue = cfg_get(psoc,
4346 CFG_DP_TX_SW_INTERNODE_QUEUE);
4347 wlan_cfg_ctx->rxdma_err_dst_ring = cfg_get(psoc,
4348 CFG_DP_RXDMA_ERR_DST_RING);
4349 wlan_cfg_ctx->enable_data_stall_detection =
4350 cfg_get(psoc, CFG_DP_ENABLE_DATA_STALL_DETECTION);
4351 wlan_cfg_ctx->tx_flow_start_queue_offset =
4352 cfg_get(psoc, CFG_DP_TX_FLOW_START_QUEUE_OFFSET);
4353 wlan_cfg_ctx->tx_flow_stop_queue_threshold =
4354 cfg_get(psoc, CFG_DP_TX_FLOW_STOP_QUEUE_TH);
4355 wlan_cfg_ctx->disable_intra_bss_fwd =
4356 cfg_get(psoc, CFG_DP_AP_STA_SECURITY_SEPERATION);
4357 wlan_cfg_ctx->rx_sw_desc_weight = cfg_get(psoc,
4358 CFG_DP_RX_SW_DESC_WEIGHT);
4359 wlan_cfg_ctx->rx_sw_desc_num = cfg_get(psoc,
4360 CFG_DP_RX_SW_DESC_NUM);
4361 wlan_cfg_ctx->rx_toeplitz_hash_key = (uint8_t *)rx_fst_toeplitz_key;
4362 wlan_cfg_ctx->rx_flow_max_search = WLAN_CFG_RX_FST_MAX_SEARCH;
4363 wlan_cfg_ctx->is_rx_flow_tag_enabled =
4364 cfg_get(psoc, CFG_DP_RX_FLOW_TAG_ENABLE);
4365 wlan_cfg_ctx->is_rx_flow_search_table_per_pdev =
4366 cfg_get(psoc, CFG_DP_RX_FLOW_SEARCH_TABLE_PER_PDEV);
4367 wlan_cfg_ctx->rx_flow_search_table_size =
4368 cfg_get(psoc, CFG_DP_RX_FLOW_SEARCH_TABLE_SIZE);
4369 wlan_cfg_ctx->is_rx_mon_protocol_flow_tag_enabled =
4370 cfg_get(psoc, CFG_DP_RX_MON_PROTOCOL_FLOW_TAG_ENABLE);
4371 wlan_cfg_ctx->mon_drop_thresh =
4372 cfg_get(psoc, CFG_DP_RXDMA_MONITOR_RX_DROP_THRESHOLD);
4373 wlan_cfg_ctx->reo_rings_mapping = cfg_get(psoc, CFG_DP_REO_RINGS_MAP);
4374 wlan_cfg_ctx->pext_stats_enabled = cfg_get(psoc, CFG_DP_PEER_EXT_STATS);
4375 wlan_cfg_ctx->jitter_stats_enabled =
4376 cfg_get(psoc, CFG_DP_PEER_JITTER_STATS);
4377 wlan_cfg_ctx->peer_link_stats_enabled =
4378 cfg_get(psoc, CFG_DP_PEER_LINK_STATS);
4379 wlan_cfg_ctx->is_rx_buff_pool_enabled =
4380 cfg_get(psoc, CFG_DP_RX_BUFF_POOL_ENABLE);
4381 wlan_cfg_ctx->is_rx_refill_buff_pool_enabled =
4382 cfg_get(psoc, CFG_DP_RX_REFILL_BUFF_POOL_ENABLE);
4383 wlan_cfg_ctx->enable_dp_buf_page_frag_alloc =
4384 cfg_get(psoc, CFG_DP_BUFS_PAGE_FRAG_ALLOCS);
4385 #ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL
4386 wlan_cfg_ctx->rx_refill_buff_pool_size =
4387 DP_RX_REFILL_BUFF_POOL_SIZE;
4388 #endif
4389 wlan_cfg_ctx->rx_pending_high_threshold =
4390 cfg_get(psoc, CFG_DP_RX_PENDING_HL_THRESHOLD);
4391 wlan_cfg_ctx->rx_pending_low_threshold =
4392 cfg_get(psoc, CFG_DP_RX_PENDING_LO_THRESHOLD);
4393 wlan_cfg_ctx->is_poll_mode_enabled =
4394 cfg_get(psoc, CFG_DP_POLL_MODE_ENABLE);
4395 wlan_cfg_ctx->is_swlm_enabled = cfg_get(psoc, CFG_DP_SWLM_ENABLE);
4396 wlan_cfg_ctx->fst_in_cmem = cfg_get(psoc, CFG_DP_RX_FST_IN_CMEM);
4397 wlan_cfg_ctx->tx_per_pkt_vdev_id_check =
4398 cfg_get(psoc, CFG_DP_TX_PER_PKT_VDEV_ID_CHECK);
4399 wlan_cfg_ctx->radio0_rx_default_reo =
4400 cfg_get(psoc, CFG_DP_RX_RADIO_0_DEFAULT_REO);
4401 wlan_cfg_ctx->radio1_rx_default_reo =
4402 cfg_get(psoc, CFG_DP_RX_RADIO_1_DEFAULT_REO);
4403 wlan_cfg_ctx->radio2_rx_default_reo =
4404 cfg_get(psoc, CFG_DP_RX_RADIO_2_DEFAULT_REO);
4405 wlan_cfg_ctx->wow_check_rx_pending_enable =
4406 cfg_get(psoc, CFG_DP_WOW_CHECK_RX_PENDING);
4407 wlan_cfg_ctx->delay_mon_replenish = cfg_get(psoc,
4408 CFG_DP_DELAY_MON_REPLENISH);
4409 wlan_cfg_ctx->num_global_tx_desc = cfg_get(psoc,
4410 CFG_DP_TX_DESC_GLOBAL_COUNT);
4411 wlan_cfg_ctx->num_global_spcl_tx_desc = cfg_get(psoc,
4412 CFG_DP_SPCL_TX_DESC_GLOBAL_COUNT);
4413 wlan_cfg_ctx->rx_mon_buf_ring_size = cfg_get(psoc,
4414 CFG_DP_RXDMA_MONITOR_BUF_RING);
4415 wlan_cfg_ctx->tx_mon_buf_ring_size = cfg_get(psoc,
4416 CFG_DP_TX_MONITOR_BUF_RING);
4417 wlan_soc_ipa_cfg_attach(psoc, wlan_cfg_ctx);
4418 wlan_soc_hw_cc_cfg_attach(psoc, wlan_cfg_ctx);
4419 wlan_soc_ppe_cfg_attach(psoc, wlan_cfg_ctx);
4420 wlan_soc_mlo_cfg_attach(psoc, wlan_cfg_ctx);
4421 wlan_soc_vdev_hw_stats_cfg_attach(psoc, wlan_cfg_ctx);
4422 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2
4423 wlan_cfg_ctx->pkt_capture_mode = cfg_get(psoc, CFG_PKT_CAPTURE_MODE) &
4424 PKT_CAPTURE_MODE_DATA_ONLY;
4425 #endif
4426 wlan_cfg_ctx->num_rxdma_dst_rings_per_pdev = NUM_RXDMA_RINGS_PER_PDEV;
4427 wlan_cfg_ctx->num_rxdma_status_rings_per_pdev =
4428 NUM_RXDMA_STATUS_RINGS_PER_PDEV;
4429 wlan_soc_tx_capt_cfg_attach(psoc, wlan_cfg_ctx);
4430 wlan_cfg_ctx->mpdu_retry_threshold_1 =
4431 cfg_get(psoc, CFG_DP_MPDU_RETRY_THRESHOLD_1);
4432 wlan_cfg_ctx->mpdu_retry_threshold_2 =
4433 cfg_get(psoc, CFG_DP_MPDU_RETRY_THRESHOLD_2);
4434
4435 wlan_cfg_ctx->napi_scale_factor = cfg_get(psoc,
4436 CFG_DP_NAPI_SCALE_FACTOR);
4437 wlan_soc_sawf_stats_cfg_attach(psoc, wlan_cfg_ctx);
4438 wlan_cfg_ctx->is_handle_invalid_decap_type_disabled =
4439 cfg_get(psoc, CFG_DP_HANDLE_INVALID_DECAP_TYPE_DISABLE);
4440 wlan_cfg_ctx->txmon_sw_peer_filtering =
4441 cfg_get(psoc, CFG_DP_TXMON_SW_PEER_FILTERING);
4442 wlan_cfg_ctx->pointer_timer_threshold_rx =
4443 cfg_get(psoc, CFG_DP_POINTER_TIMER_THRESHOLD_RX);
4444 wlan_cfg_ctx->pointer_num_threshold_rx =
4445 cfg_get(psoc, CFG_DP_POINTER_NUM_THRESHOLD_RX);
4446 wlan_soc_tx_packet_inspect_attach(psoc, wlan_cfg_ctx);
4447 wlan_soc_local_pkt_capture_cfg_attach(psoc, wlan_cfg_ctx);
4448 wlan_cfg_ctx->special_frame_msk =
4449 cfg_get(psoc, CFG_SPECIAL_FRAME_MSK);
4450 wlan_soc_umac_reset_cfg_attach(psoc, wlan_cfg_ctx);
4451 wlan_cfg_ctx->rx_buffer_size = cfg_get(psoc, CFG_DP_RX_BUFFER_SIZE);
4452 wlan_cfg_ctx->avg_rate_stats_filter_val =
4453 cfg_get(psoc, CFG_DP_STATS_AVG_RATE_FILTER);
4454 return wlan_cfg_ctx;
4455 }
4456 #endif
4457
wlan_cfg_soc_detach(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx)4458 void wlan_cfg_soc_detach(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
4459 {
4460 qdf_mem_free(wlan_cfg_ctx);
4461 }
4462
4463 struct wlan_cfg_dp_pdev_ctxt *
wlan_cfg_pdev_attach(struct cdp_ctrl_objmgr_psoc * psoc)4464 wlan_cfg_pdev_attach(struct cdp_ctrl_objmgr_psoc *psoc)
4465 {
4466 struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_ctx =
4467 qdf_mem_malloc(sizeof(struct wlan_cfg_dp_pdev_ctxt));
4468
4469 if (!wlan_cfg_ctx)
4470 return NULL;
4471
4472 wlan_cfg_ctx->rx_dma_buf_ring_size = cfg_get(psoc,
4473 CFG_DP_RXDMA_BUF_RING);
4474 wlan_cfg_ctx->dma_mon_buf_ring_size = cfg_get(psoc,
4475 CFG_DP_RXDMA_MONITOR_BUF_RING);
4476 wlan_cfg_ctx->dma_rx_mon_dest_ring_size = cfg_get(psoc,
4477 CFG_DP_RXDMA_MONITOR_DST_RING);
4478 wlan_cfg_ctx->dma_tx_mon_dest_ring_size = cfg_get(psoc,
4479 CFG_DP_TX_MONITOR_DST_RING);
4480 wlan_cfg_ctx->dma_mon_status_ring_size = cfg_get(psoc,
4481 CFG_DP_RXDMA_MONITOR_STATUS_RING);
4482 wlan_cfg_ctx->rxdma_monitor_desc_ring = cfg_get(psoc,
4483 CFG_DP_RXDMA_MONITOR_DESC_RING);
4484 wlan_cfg_ctx->num_mac_rings = NUM_RXDMA_RINGS_PER_PDEV;
4485 wlan_cfg_ctx->sw2rxdma_link_ring_size = cfg_get(psoc,
4486 CFG_DP_SW2RXDMA_LINK_RING);
4487
4488 return wlan_cfg_ctx;
4489 }
4490
wlan_cfg_set_mon_delayed_replenish_entries(struct wlan_cfg_dp_soc_ctxt * cfg,uint32_t val)4491 void wlan_cfg_set_mon_delayed_replenish_entries(
4492 struct wlan_cfg_dp_soc_ctxt *cfg,
4493 uint32_t val)
4494 {
4495 cfg->delayed_replenish_entries = val;
4496 }
4497
4498 qdf_export_symbol(wlan_cfg_set_mon_delayed_replenish_entries);
4499
wlan_cfg_get_mon_delayed_replenish_entries(struct wlan_cfg_dp_soc_ctxt * cfg)4500 int wlan_cfg_get_mon_delayed_replenish_entries(struct wlan_cfg_dp_soc_ctxt *cfg)
4501 {
4502 return cfg->delayed_replenish_entries;
4503 }
4504
wlan_cfg_pdev_detach(struct wlan_cfg_dp_pdev_ctxt * wlan_cfg_ctx)4505 void wlan_cfg_pdev_detach(struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_ctx)
4506 {
4507 if (wlan_cfg_ctx)
4508 qdf_mem_free(wlan_cfg_ctx);
4509 }
4510
wlan_cfg_get_mon_drop_thresh(struct wlan_cfg_dp_soc_ctxt * cfg)4511 int wlan_cfg_get_mon_drop_thresh(struct wlan_cfg_dp_soc_ctxt *cfg)
4512 {
4513 return cfg->mon_drop_thresh;
4514 }
4515
wlan_cfg_set_num_contexts(struct wlan_cfg_dp_soc_ctxt * cfg,int num)4516 void wlan_cfg_set_num_contexts(struct wlan_cfg_dp_soc_ctxt *cfg, int num)
4517 {
4518 cfg->num_int_ctxts = num;
4519 }
4520
wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt * cfg,uint32_t val)4521 void wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val)
4522 {
4523 cfg->max_peer_id = val;
4524 }
4525
wlan_cfg_set_max_ast_idx(struct wlan_cfg_dp_soc_ctxt * cfg,uint32_t val)4526 void wlan_cfg_set_max_ast_idx(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val)
4527 {
4528 cfg->max_ast_idx = val;
4529 }
4530
wlan_cfg_get_max_ast_idx(struct wlan_cfg_dp_soc_ctxt * cfg)4531 int wlan_cfg_get_max_ast_idx(struct wlan_cfg_dp_soc_ctxt *cfg)
4532 {
4533 return cfg->max_ast_idx;
4534 }
4535
4536 qdf_export_symbol(wlan_cfg_get_max_ast_idx);
4537
wlan_cfg_set_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4538 void wlan_cfg_set_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4539 int context, int mask)
4540 {
4541 cfg->int_tx_ring_mask[context] = mask;
4542 }
4543
wlan_cfg_set_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4544 void wlan_cfg_set_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4545 int context, int mask)
4546 {
4547 cfg->int_rx_ring_mask[context] = mask;
4548 }
4549
wlan_cfg_set_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4550 void wlan_cfg_set_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4551 int context, int mask)
4552 {
4553 cfg->int_rx_mon_ring_mask[context] = mask;
4554 }
4555
wlan_cfg_set_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4556 void wlan_cfg_set_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4557 int context, int mask)
4558 {
4559 cfg->int_tx_mon_ring_mask[context] = mask;
4560 }
4561
wlan_cfg_get_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4562 int wlan_cfg_get_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4563 int context)
4564 {
4565 return cfg->int_host2rxdma_mon_ring_mask[context];
4566 }
4567
wlan_cfg_set_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4568 void wlan_cfg_set_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4569 int context, int mask)
4570 {
4571 cfg->int_host2rxdma_mon_ring_mask[context] = mask;
4572 }
4573
wlan_cfg_get_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4574 int wlan_cfg_get_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4575 int context)
4576 {
4577 return cfg->int_rxdma2host_mon_ring_mask[context];
4578 }
4579
wlan_cfg_set_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4580 void wlan_cfg_set_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4581 int context, int mask)
4582 {
4583 cfg->int_rxdma2host_mon_ring_mask[context] = mask;
4584 }
4585
wlan_cfg_set_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4586 void wlan_cfg_set_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4587 int context, int mask)
4588 {
4589 cfg->int_rxdma2host_ring_mask[context] = mask;
4590 }
4591
wlan_cfg_get_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4592 int wlan_cfg_get_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4593 int context)
4594 {
4595 return cfg->int_rxdma2host_ring_mask[context];
4596 }
4597
wlan_cfg_set_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4598 void wlan_cfg_set_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4599 int context, int mask)
4600 {
4601 cfg->int_host2rxdma_ring_mask[context] = mask;
4602 }
4603
wlan_cfg_get_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4604 int wlan_cfg_get_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4605 int context)
4606 {
4607 return cfg->int_host2rxdma_ring_mask[context];
4608 }
4609
wlan_cfg_get_rx_near_full_grp_1_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4610 int wlan_cfg_get_rx_near_full_grp_1_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4611 int context)
4612 {
4613 return cfg->int_rx_ring_near_full_irq_1_mask[context];
4614 }
4615
wlan_cfg_get_rx_near_full_grp_2_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4616 int wlan_cfg_get_rx_near_full_grp_2_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4617 int context)
4618 {
4619 return cfg->int_rx_ring_near_full_irq_2_mask[context];
4620 }
4621
wlan_cfg_get_tx_ring_near_full_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4622 int wlan_cfg_get_tx_ring_near_full_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4623 int context)
4624 {
4625 return cfg->int_tx_ring_near_full_irq_mask[context];
4626 }
4627
wlan_cfg_set_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt * cfg,int pdev_idx,int hw_macid)4628 void wlan_cfg_set_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx,
4629 int hw_macid)
4630 {
4631 qdf_assert_always(pdev_idx < MAX_PDEV_CNT);
4632 cfg->hw_macid[pdev_idx] = hw_macid;
4633 }
4634
wlan_cfg_get_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt * cfg,int pdev_idx)4635 int wlan_cfg_get_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx)
4636 {
4637 qdf_assert_always(pdev_idx < MAX_PDEV_CNT);
4638 return cfg->hw_macid[pdev_idx];
4639 }
4640
4641 qdf_export_symbol(wlan_cfg_get_hw_mac_idx);
4642
wlan_cfg_get_target_pdev_id(struct wlan_cfg_dp_soc_ctxt * cfg,int hw_macid)4643 int wlan_cfg_get_target_pdev_id(struct wlan_cfg_dp_soc_ctxt *cfg,
4644 int hw_macid)
4645 {
4646 int idx;
4647
4648 for (idx = 0; idx < MAX_PDEV_CNT; idx++) {
4649 if (cfg->hw_macid[idx] == hw_macid)
4650 return (idx + 1);
4651 }
4652 qdf_assert_always(idx < MAX_PDEV_CNT);
4653 return WLAN_INVALID_PDEV_ID;
4654 }
4655
wlan_cfg_set_pdev_idx(struct wlan_cfg_dp_soc_ctxt * cfg,int pdev_idx,int hw_macid)4656 void wlan_cfg_set_pdev_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx,
4657 int hw_macid)
4658 {
4659 qdf_assert_always((pdev_idx < MAX_PDEV_CNT) ||
4660 (pdev_idx == INVALID_PDEV_ID));
4661 qdf_assert_always(hw_macid < MAX_NUM_LMAC_HW);
4662 cfg->hw_macid_pdev_id_map[hw_macid] = pdev_idx;
4663 }
4664
wlan_cfg_get_pdev_idx(struct wlan_cfg_dp_soc_ctxt * cfg,int hw_macid)4665 int wlan_cfg_get_pdev_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int hw_macid)
4666 {
4667 qdf_assert_always(hw_macid < MAX_NUM_LMAC_HW);
4668 return cfg->hw_macid_pdev_id_map[hw_macid];
4669 }
4670
4671 qdf_export_symbol(wlan_cfg_get_pdev_idx);
4672
wlan_cfg_set_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4673 void wlan_cfg_set_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4674 int context, int mask)
4675 {
4676 cfg->int_ce_ring_mask[context] = mask;
4677 }
4678
wlan_cfg_set_rxbuf_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4679 void wlan_cfg_set_rxbuf_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context,
4680 int mask)
4681 {
4682 cfg->int_rx_ring_mask[context] = mask;
4683 }
4684
wlan_cfg_set_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4685 int wlan_cfg_set_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4686 int context, int mask)
4687 {
4688 return cfg->int_rx_err_ring_mask[context] = mask;
4689 }
4690
wlan_cfg_set_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4691 int wlan_cfg_set_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4692 int context, int mask)
4693 {
4694 return cfg->int_rx_wbm_rel_ring_mask[context] = mask;
4695 }
4696
wlan_cfg_set_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)4697 int wlan_cfg_set_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4698 int context, int mask)
4699 {
4700 return cfg->int_reo_status_ring_mask[context] = mask;
4701 }
4702
wlan_cfg_get_num_contexts(struct wlan_cfg_dp_soc_ctxt * cfg)4703 int wlan_cfg_get_num_contexts(struct wlan_cfg_dp_soc_ctxt *cfg)
4704 {
4705 return cfg->num_int_ctxts;
4706 }
4707
wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4708 int wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
4709 {
4710 return cfg->int_tx_ring_mask[context];
4711 }
4712
wlan_cfg_get_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4713 int wlan_cfg_get_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
4714 {
4715 return cfg->int_rx_ring_mask[context];
4716 }
4717
wlan_cfg_get_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4718 int wlan_cfg_get_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4719 int context)
4720 {
4721 return cfg->int_rx_err_ring_mask[context];
4722 }
4723
wlan_cfg_get_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4724 int wlan_cfg_get_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4725 int context)
4726 {
4727 return cfg->int_rx_wbm_rel_ring_mask[context];
4728 }
4729
wlan_cfg_get_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4730 int wlan_cfg_get_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4731 int context)
4732 {
4733 return cfg->int_reo_status_ring_mask[context];
4734 }
4735
wlan_cfg_get_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4736 int wlan_cfg_get_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
4737 {
4738 return cfg->int_rx_mon_ring_mask[context];
4739 }
4740
4741 #ifdef CONFIG_BERYLLIUM
wlan_cfg_get_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4742 int wlan_cfg_get_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
4743 {
4744 return cfg->int_tx_mon_ring_mask[context];
4745 }
4746 #else
wlan_cfg_get_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4747 int wlan_cfg_get_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
4748 {
4749 return 0;
4750 }
4751 #endif
4752
wlan_cfg_get_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4753 int wlan_cfg_get_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context)
4754 {
4755 return cfg->int_ce_ring_mask[context];
4756 }
4757
wlan_cfg_get_max_clients(struct wlan_cfg_dp_soc_ctxt * cfg)4758 uint32_t wlan_cfg_get_max_clients(struct wlan_cfg_dp_soc_ctxt *cfg)
4759 {
4760 return cfg->max_clients;
4761 }
4762
wlan_cfg_max_alloc_size(struct wlan_cfg_dp_soc_ctxt * cfg)4763 uint32_t wlan_cfg_max_alloc_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4764 {
4765 return cfg->max_alloc_size;
4766 }
4767
wlan_cfg_per_pdev_tx_ring(struct wlan_cfg_dp_soc_ctxt * cfg)4768 int wlan_cfg_per_pdev_tx_ring(struct wlan_cfg_dp_soc_ctxt *cfg)
4769 {
4770 return cfg->per_pdev_tx_ring;
4771 }
4772
wlan_cfg_get_umac_reset_intr_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)4773 int wlan_cfg_get_umac_reset_intr_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
4774 int context)
4775 {
4776 return cfg->int_umac_reset_intr_mask[context];
4777 }
4778
4779 uint32_t
wlan_cfg_rx_pending_hl_threshold(struct wlan_cfg_dp_soc_ctxt * cfg)4780 wlan_cfg_rx_pending_hl_threshold(struct wlan_cfg_dp_soc_ctxt *cfg)
4781 {
4782 return cfg->rx_pending_high_threshold;
4783 }
4784
4785 uint32_t
wlan_cfg_rx_pending_lo_threshold(struct wlan_cfg_dp_soc_ctxt * cfg)4786 wlan_cfg_rx_pending_lo_threshold(struct wlan_cfg_dp_soc_ctxt *cfg)
4787 {
4788 return cfg->rx_pending_low_threshold;
4789 }
4790
wlan_cfg_per_pdev_lmac_ring(struct wlan_cfg_dp_soc_ctxt * cfg)4791 int wlan_cfg_per_pdev_lmac_ring(struct wlan_cfg_dp_soc_ctxt *cfg)
4792 {
4793 return cfg->per_pdev_lmac_ring;
4794 }
4795
4796 qdf_export_symbol(wlan_cfg_per_pdev_lmac_ring);
4797
4798 #if defined(DP_USE_SINGLE_TCL) && !defined(TX_MULTI_TCL)
wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4799 int wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4800 {
4801 return 1;
4802 }
4803
wlan_cfg_num_nss_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4804 int wlan_cfg_num_nss_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4805 {
4806 return 1;
4807 }
4808
4809 #else
4810
4811 #if defined(IPA_OFFLOAD) && defined(TX_MULTI_TCL)
wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4812 int wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4813 {
4814 if (!cfg->ipa_enabled || ipa_config_is_opt_wifi_dp_enabled())
4815 return cfg->num_tcl_data_rings;
4816
4817 return 1;
4818 }
4819
wlan_cfg_num_nss_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4820 int wlan_cfg_num_nss_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4821 {
4822 if (!cfg->ipa_enabled)
4823 return cfg->num_nss_tcl_data_rings;
4824
4825 return 1;
4826 }
4827 #else
wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4828 int wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4829 {
4830 return cfg->num_tcl_data_rings;
4831 }
4832
wlan_cfg_num_nss_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4833 int wlan_cfg_num_nss_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4834 {
4835 return cfg->num_nss_tcl_data_rings;
4836 }
4837 #endif
4838 #endif
4839
wlan_cfg_num_tx_comp_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4840 int wlan_cfg_num_tx_comp_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4841 {
4842 return cfg->num_tx_comp_rings;
4843 }
4844
wlan_cfg_tx_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)4845 int wlan_cfg_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4846 {
4847 return cfg->tx_ring_size;
4848 }
4849
wlan_cfg_set_tx_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg,int ring_size)4850 void wlan_cfg_set_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
4851 int ring_size)
4852 {
4853 cfg->tx_ring_size = ring_size;
4854 }
4855
wlan_cfg_time_control_bp(struct wlan_cfg_dp_soc_ctxt * cfg)4856 int wlan_cfg_time_control_bp(struct wlan_cfg_dp_soc_ctxt *cfg)
4857 {
4858 return cfg->time_control_bp;
4859 }
4860
wlan_cfg_rx_buffer_size(struct wlan_cfg_dp_soc_ctxt * cfg)4861 int wlan_cfg_rx_buffer_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4862 {
4863 if (cfg->rx_buffer_size < RX_DATA_BUFFER_SIZE)
4864 qdf_assert_always(0);
4865 return cfg->rx_buffer_size;
4866 }
4867
4868 qdf_export_symbol(wlan_cfg_rx_buffer_size);
4869
wlan_cfg_qref_control_size(struct wlan_cfg_dp_soc_ctxt * cfg)4870 int wlan_cfg_qref_control_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4871 {
4872 return cfg->qref_control_size;
4873 }
4874
wlan_cfg_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)4875 int wlan_cfg_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4876 {
4877 return cfg->tx_comp_ring_size;
4878 }
4879
wlan_cfg_set_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg,int ring_size)4880 void wlan_cfg_set_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
4881 int ring_size)
4882 {
4883 cfg->tx_comp_ring_size = ring_size;
4884 }
4885
wlan_cfg_per_pdev_rx_ring(struct wlan_cfg_dp_soc_ctxt * cfg)4886 int wlan_cfg_per_pdev_rx_ring(struct wlan_cfg_dp_soc_ctxt *cfg)
4887 {
4888 return cfg->per_pdev_rx_ring;
4889 }
4890
wlan_cfg_num_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4891 int wlan_cfg_num_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4892 {
4893 return cfg->num_reo_dest_rings;
4894 }
4895
wlan_cfg_num_nss_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt * cfg)4896 int wlan_cfg_num_nss_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4897 {
4898 return cfg->num_nss_reo_dest_rings;
4899 }
4900
wlan_cfg_pkt_type(struct wlan_cfg_dp_soc_ctxt * cfg)4901 int wlan_cfg_pkt_type(struct wlan_cfg_dp_soc_ctxt *cfg)
4902 {
4903 return cfg->htt_packet_type; /*htt_pkt_type_ethernet*/
4904 }
4905
wlan_cfg_get_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt * cfg)4906 int wlan_cfg_get_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg)
4907 {
4908 return cfg->num_tx_desc_pool;
4909 }
4910
wlan_cfg_set_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt * cfg,int num_pool)4911 void wlan_cfg_set_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg, int num_pool)
4912 {
4913 cfg->num_tx_desc_pool = num_pool;
4914 }
4915
wlan_cfg_get_num_tx_ext_desc_pool(struct wlan_cfg_dp_soc_ctxt * cfg)4916 int wlan_cfg_get_num_tx_ext_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg)
4917 {
4918 return cfg->num_tx_ext_desc_pool;
4919 }
4920
wlan_cfg_set_num_tx_ext_desc_pool(struct wlan_cfg_dp_soc_ctxt * cfg,int num_pool)4921 void wlan_cfg_set_num_tx_ext_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg, int num_pool)
4922 {
4923 cfg->num_tx_ext_desc_pool = num_pool;
4924 }
4925
wlan_cfg_get_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)4926 int wlan_cfg_get_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4927 {
4928 return cfg->reo_dst_ring_size;
4929 }
4930
wlan_cfg_set_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg,int reo_dst_ring_size)4931 void wlan_cfg_set_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
4932 int reo_dst_ring_size)
4933 {
4934 cfg->reo_dst_ring_size = reo_dst_ring_size;
4935 }
4936
wlan_cfg_set_raw_mode_war(struct wlan_cfg_dp_soc_ctxt * cfg,bool raw_mode_war)4937 void wlan_cfg_set_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg,
4938 bool raw_mode_war)
4939 {
4940 cfg->raw_mode_war = raw_mode_war;
4941 }
4942
wlan_cfg_get_raw_mode_war(struct wlan_cfg_dp_soc_ctxt * cfg)4943 bool wlan_cfg_get_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg)
4944 {
4945 return cfg->raw_mode_war;
4946 }
4947
wlan_cfg_get_num_global_tx_desc(struct wlan_cfg_dp_soc_ctxt * cfg)4948 int wlan_cfg_get_num_global_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
4949 {
4950 return cfg->num_global_tx_desc;
4951 }
4952
wlan_cfg_get_num_global_spcl_tx_desc(struct wlan_cfg_dp_soc_ctxt * cfg)4953 int wlan_cfg_get_num_global_spcl_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
4954 {
4955 return cfg->num_global_spcl_tx_desc;
4956 }
4957
wlan_cfg_get_num_tx_desc(struct wlan_cfg_dp_soc_ctxt * cfg)4958 int wlan_cfg_get_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
4959 {
4960 return cfg->num_tx_desc;
4961 }
4962
4963
wlan_cfg_set_num_tx_spl_desc(struct wlan_cfg_dp_soc_ctxt * cfg,int num_desc)4964 void wlan_cfg_set_num_tx_spl_desc(struct wlan_cfg_dp_soc_ctxt *cfg, int num_desc)
4965 {
4966 cfg->num_tx_spl_desc = num_desc;
4967 }
4968
wlan_cfg_get_num_tx_spl_desc(struct wlan_cfg_dp_soc_ctxt * cfg)4969 int wlan_cfg_get_num_tx_spl_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
4970 {
4971 return cfg->num_tx_spl_desc;
4972 }
4973
wlan_cfg_set_num_tx_desc(struct wlan_cfg_dp_soc_ctxt * cfg,int num_desc)4974 void wlan_cfg_set_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg, int num_desc)
4975 {
4976 cfg->num_tx_desc = num_desc;
4977 }
4978
wlan_cfg_get_min_tx_desc(struct wlan_cfg_dp_soc_ctxt * cfg)4979 int wlan_cfg_get_min_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
4980 {
4981 return cfg->min_tx_desc;
4982 }
4983
wlan_cfg_get_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt * cfg)4984 int wlan_cfg_get_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
4985 {
4986 return cfg->num_tx_ext_desc;
4987 }
4988
wlan_cfg_set_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt * cfg,int num_ext_desc)4989 void wlan_cfg_set_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt *cfg, int num_ext_desc)
4990 {
4991 cfg->num_tx_ext_desc = num_ext_desc;
4992 }
4993
wlan_cfg_max_peer_id(struct wlan_cfg_dp_soc_ctxt * cfg)4994 uint32_t wlan_cfg_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg)
4995 {
4996 /* TODO: This should be calculated based on target capabilities */
4997 return cfg->max_peer_id;
4998 }
4999
wlan_cfg_get_dma_mon_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt * cfg)5000 int wlan_cfg_get_dma_mon_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
5001 {
5002 return cfg->dma_mon_buf_ring_size;
5003 }
5004
5005 qdf_export_symbol(wlan_cfg_get_dma_mon_buf_ring_size);
5006
wlan_cfg_get_dma_rx_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt * cfg)5007 int wlan_cfg_get_dma_rx_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
5008 {
5009 return cfg->dma_rx_mon_dest_ring_size;
5010 }
5011
5012 qdf_export_symbol(wlan_cfg_get_dma_rx_mon_dest_ring_size);
5013
wlan_cfg_get_dma_tx_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt * cfg)5014 int wlan_cfg_get_dma_tx_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
5015 {
5016 return cfg->dma_tx_mon_dest_ring_size;
5017 }
5018
5019 qdf_export_symbol(wlan_cfg_get_dma_tx_mon_dest_ring_size);
5020
wlan_cfg_get_dma_mon_stat_ring_size(struct wlan_cfg_dp_pdev_ctxt * cfg)5021 int wlan_cfg_get_dma_mon_stat_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
5022 {
5023 return cfg->dma_mon_status_ring_size;
5024 }
5025
5026 qdf_export_symbol(wlan_cfg_get_dma_mon_stat_ring_size);
5027
5028 int
wlan_cfg_get_dma_sw2rxdma_link_ring_size(struct wlan_cfg_dp_pdev_ctxt * cfg)5029 wlan_cfg_get_dma_sw2rxdma_link_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
5030 {
5031 return cfg->sw2rxdma_link_ring_size;
5032 }
5033
5034 qdf_export_symbol(wlan_cfg_get_dma_sw2rxdma_link_ring_size);
5035
5036 int
wlan_cfg_get_dma_mon_desc_ring_size(struct wlan_cfg_dp_pdev_ctxt * cfg)5037 wlan_cfg_get_dma_mon_desc_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
5038 {
5039 return cfg->rxdma_monitor_desc_ring;
5040 }
5041
5042 qdf_export_symbol(wlan_cfg_get_dma_mon_desc_ring_size);
5043
wlan_cfg_get_rx_dma_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt * cfg)5044 int wlan_cfg_get_rx_dma_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
5045 {
5046 return cfg->rx_dma_buf_ring_size;
5047 }
5048
wlan_cfg_set_rx_dma_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt * cfg,int ring_size)5049 void wlan_cfg_set_rx_dma_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg,
5050 int ring_size)
5051 {
5052 cfg->rx_dma_buf_ring_size = ring_size;
5053 }
5054
wlan_cfg_get_num_mac_rings(struct wlan_cfg_dp_pdev_ctxt * cfg)5055 int wlan_cfg_get_num_mac_rings(struct wlan_cfg_dp_pdev_ctxt *cfg)
5056 {
5057 return cfg->num_mac_rings;
5058 }
5059
5060 qdf_export_symbol(wlan_cfg_get_num_mac_rings);
5061
wlan_cfg_is_gro_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5062 bool wlan_cfg_is_gro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5063 {
5064 return cfg->gro_enabled;
5065 }
5066
wlan_cfg_is_lro_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5067 bool wlan_cfg_is_lro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5068 {
5069 return cfg->lro_enabled;
5070 }
5071
wlan_cfg_is_ipa_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5072 bool wlan_cfg_is_ipa_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5073 {
5074 return cfg->ipa_enabled;
5075 }
5076
wlan_cfg_set_rx_hash(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5077 void wlan_cfg_set_rx_hash(struct wlan_cfg_dp_soc_ctxt *cfg, bool val)
5078 {
5079 cfg->rx_hash = val;
5080 }
5081
wlan_cfg_is_rx_hash_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5082 bool wlan_cfg_is_rx_hash_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5083 {
5084 return cfg->rx_hash;
5085 }
5086
5087 #ifdef WLAN_SUPPORT_RX_FLOW_TAG
wlan_cfg_set_rx_rr(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5088 void wlan_cfg_set_rx_rr(struct wlan_cfg_dp_soc_ctxt *cfg, bool val)
5089 {
5090 cfg->rx_rr = val;
5091 }
5092
wlan_cfg_is_rx_rr_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5093 bool wlan_cfg_is_rx_rr_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5094 {
5095 return cfg->rx_rr;
5096 }
5097 #else
wlan_cfg_set_rx_rr(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5098 void wlan_cfg_set_rx_rr(struct wlan_cfg_dp_soc_ctxt *cfg, bool val)
5099 {
5100 }
5101
wlan_cfg_is_rx_rr_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5102 bool wlan_cfg_is_rx_rr_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5103 {
5104 return false;
5105 }
5106 #endif
5107
wlan_cfg_get_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt * cfg)5108 int wlan_cfg_get_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg)
5109 {
5110 return cfg->nss_enabled;
5111 }
5112
wlan_cfg_set_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt * cfg,int nss_enabled)5113 void wlan_cfg_set_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg, int nss_enabled)
5114 {
5115 cfg->nss_enabled = nss_enabled;
5116 }
5117
wlan_cfg_get_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt * cfg)5118 int wlan_cfg_get_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg)
5119 {
5120 return cfg->nss_cfg;
5121 }
5122
wlan_cfg_set_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt * cfg,int nss_cfg)5123 void wlan_cfg_set_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg, int nss_cfg)
5124 {
5125 cfg->nss_cfg = nss_cfg;
5126 if (cfg->nss_cfg)
5127 cfg->tx_comp_ring_size = cfg->tx_comp_ring_size_nss;
5128 }
5129
wlan_cfg_get_int_batch_threshold_ppe2tcl(struct wlan_cfg_dp_soc_ctxt * cfg)5130 int wlan_cfg_get_int_batch_threshold_ppe2tcl(struct wlan_cfg_dp_soc_ctxt *cfg)
5131 {
5132 return cfg->int_batch_threshold_ppe2tcl;
5133 }
5134
wlan_cfg_get_int_timer_threshold_ppe2tcl(struct wlan_cfg_dp_soc_ctxt * cfg)5135 int wlan_cfg_get_int_timer_threshold_ppe2tcl(struct wlan_cfg_dp_soc_ctxt *cfg)
5136 {
5137 return cfg->int_timer_threshold_ppe2tcl;
5138 }
5139
wlan_cfg_get_int_batch_threshold_tx(struct wlan_cfg_dp_soc_ctxt * cfg)5140 int wlan_cfg_get_int_batch_threshold_tx(struct wlan_cfg_dp_soc_ctxt *cfg)
5141 {
5142 return cfg->int_batch_threshold_tx;
5143 }
5144
wlan_cfg_get_int_timer_threshold_tx(struct wlan_cfg_dp_soc_ctxt * cfg)5145 int wlan_cfg_get_int_timer_threshold_tx(struct wlan_cfg_dp_soc_ctxt *cfg)
5146 {
5147 return cfg->int_timer_threshold_tx;
5148 }
5149
wlan_cfg_get_int_batch_threshold_rx(struct wlan_cfg_dp_soc_ctxt * cfg)5150 int wlan_cfg_get_int_batch_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg)
5151 {
5152 return cfg->int_batch_threshold_rx;
5153 }
5154
wlan_cfg_get_int_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt * cfg)5155 int wlan_cfg_get_int_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg)
5156 {
5157 return cfg->int_timer_threshold_rx;
5158 }
5159
wlan_cfg_get_int_batch_threshold_other(struct wlan_cfg_dp_soc_ctxt * cfg)5160 int wlan_cfg_get_int_batch_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg)
5161 {
5162 return cfg->int_batch_threshold_other;
5163 }
5164
wlan_cfg_get_int_timer_threshold_other(struct wlan_cfg_dp_soc_ctxt * cfg)5165 int wlan_cfg_get_int_timer_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg)
5166 {
5167 return cfg->int_timer_threshold_other;
5168 }
5169
wlan_cfg_get_int_batch_threshold_mon_dest(struct wlan_cfg_dp_soc_ctxt * cfg)5170 int wlan_cfg_get_int_batch_threshold_mon_dest(struct wlan_cfg_dp_soc_ctxt *cfg)
5171 {
5172 return cfg->int_batch_threshold_mon_dest;
5173 }
5174
wlan_cfg_get_int_timer_threshold_mon_dest(struct wlan_cfg_dp_soc_ctxt * cfg)5175 int wlan_cfg_get_int_timer_threshold_mon_dest(struct wlan_cfg_dp_soc_ctxt *cfg)
5176 {
5177 return cfg->int_timer_threshold_mon_dest;
5178 }
5179
wlan_cfg_get_p2p_checksum_offload(struct wlan_cfg_dp_soc_ctxt * cfg)5180 int wlan_cfg_get_p2p_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg)
5181 {
5182 return cfg->p2p_tcp_udp_checksumoffload;
5183 }
5184
wlan_cfg_get_nan_checksum_offload(struct wlan_cfg_dp_soc_ctxt * cfg)5185 int wlan_cfg_get_nan_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg)
5186 {
5187 return cfg->nan_tcp_udp_checksumoffload;
5188 }
5189
wlan_cfg_get_checksum_offload(struct wlan_cfg_dp_soc_ctxt * cfg)5190 int wlan_cfg_get_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg)
5191 {
5192 return cfg->tcp_udp_checksumoffload;
5193 }
5194
wlan_cfg_get_rx_defrag_min_timeout(struct wlan_cfg_dp_soc_ctxt * cfg)5195 int wlan_cfg_get_rx_defrag_min_timeout(struct wlan_cfg_dp_soc_ctxt *cfg)
5196 {
5197 return cfg->rx_defrag_min_timeout;
5198 }
5199
wlan_cfg_get_defrag_timeout_check(struct wlan_cfg_dp_soc_ctxt * cfg)5200 int wlan_cfg_get_defrag_timeout_check(struct wlan_cfg_dp_soc_ctxt *cfg)
5201 {
5202 return cfg->defrag_timeout_check;
5203 }
5204
5205 int
wlan_cfg_get_dp_soc_wbm_release_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5206 wlan_cfg_get_dp_soc_wbm_release_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5207 {
5208 return cfg->wbm_release_ring;
5209 }
5210
5211 int
wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5212 wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5213 {
5214 return cfg->tcl_cmd_credit_ring;
5215 }
5216
5217 int
wlan_cfg_get_dp_soc_tcl_status_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5218 wlan_cfg_get_dp_soc_tcl_status_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5219 {
5220 return cfg->tcl_status_ring;
5221 }
5222
5223 int
wlan_cfg_get_dp_soc_reo_reinject_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5224 wlan_cfg_get_dp_soc_reo_reinject_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5225 {
5226 return cfg->reo_reinject_ring;
5227 }
5228
5229 int
wlan_cfg_get_dp_soc_rx_release_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5230 wlan_cfg_get_dp_soc_rx_release_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5231 {
5232 return cfg->rx_release_ring;
5233 }
5234
5235 int
wlan_cfg_get_dp_soc_reo_exception_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5236 wlan_cfg_get_dp_soc_reo_exception_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5237 {
5238 return cfg->reo_exception_ring;
5239 }
5240
5241 int
wlan_cfg_get_dp_soc_reo_cmd_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5242 wlan_cfg_get_dp_soc_reo_cmd_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5243 {
5244 return cfg->reo_cmd_ring;
5245 }
5246
5247 int
wlan_cfg_get_dp_soc_reo_status_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5248 wlan_cfg_get_dp_soc_reo_status_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5249 {
5250 return cfg->reo_status_ring;
5251 }
5252
5253 int
wlan_cfg_get_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5254 wlan_cfg_get_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5255 {
5256 return cfg->rxdma_refill_ring;
5257 }
5258
5259 void
wlan_cfg_set_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg,int ring_size)5260 wlan_cfg_set_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
5261 int ring_size)
5262 {
5263 cfg->rxdma_refill_ring = ring_size;
5264 }
5265
5266 bool
wlan_cfg_get_dp_soc_rxdma_refill_lt_disable(struct wlan_cfg_dp_soc_ctxt * cfg)5267 wlan_cfg_get_dp_soc_rxdma_refill_lt_disable(struct wlan_cfg_dp_soc_ctxt *cfg)
5268 {
5269 return cfg->rxdma_refill_lt_disable;
5270 }
5271
5272 int
wlan_cfg_get_dp_soc_tx_desc_limit_0(struct wlan_cfg_dp_soc_ctxt * cfg)5273 wlan_cfg_get_dp_soc_tx_desc_limit_0(struct wlan_cfg_dp_soc_ctxt *cfg)
5274 {
5275 return cfg->tx_desc_limit_0;
5276 }
5277
5278 int
wlan_cfg_get_dp_soc_tx_desc_limit_1(struct wlan_cfg_dp_soc_ctxt * cfg)5279 wlan_cfg_get_dp_soc_tx_desc_limit_1(struct wlan_cfg_dp_soc_ctxt *cfg)
5280 {
5281 return cfg->tx_desc_limit_1;
5282 }
5283
5284 int
wlan_cfg_get_dp_soc_tx_desc_limit_2(struct wlan_cfg_dp_soc_ctxt * cfg)5285 wlan_cfg_get_dp_soc_tx_desc_limit_2(struct wlan_cfg_dp_soc_ctxt *cfg)
5286 {
5287 return cfg->tx_desc_limit_2;
5288 }
5289
5290 int
wlan_cfg_get_dp_soc_tx_device_limit(struct wlan_cfg_dp_soc_ctxt * cfg)5291 wlan_cfg_get_dp_soc_tx_device_limit(struct wlan_cfg_dp_soc_ctxt *cfg)
5292 {
5293 return cfg->tx_device_limit;
5294 }
5295
5296 int
wlan_cfg_get_dp_soc_tx_spl_device_limit(struct wlan_cfg_dp_soc_ctxt * cfg)5297 wlan_cfg_get_dp_soc_tx_spl_device_limit(struct wlan_cfg_dp_soc_ctxt *cfg)
5298 {
5299 return cfg->tx_spl_device_limit;
5300 }
5301
5302 int
wlan_cfg_get_dp_soc_tx_sw_internode_queue(struct wlan_cfg_dp_soc_ctxt * cfg)5303 wlan_cfg_get_dp_soc_tx_sw_internode_queue(struct wlan_cfg_dp_soc_ctxt *cfg)
5304 {
5305 return cfg->tx_sw_internode_queue;
5306 }
5307
5308 int
wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5309 wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5310 {
5311 return cfg->rxdma_err_dst_ring;
5312 }
5313
5314 int
wlan_cfg_get_dp_soc_rx_sw_desc_weight(struct wlan_cfg_dp_soc_ctxt * cfg)5315 wlan_cfg_get_dp_soc_rx_sw_desc_weight(struct wlan_cfg_dp_soc_ctxt *cfg)
5316 {
5317 return cfg->rx_sw_desc_weight;
5318 }
5319
5320 qdf_export_symbol(wlan_cfg_get_dp_soc_rx_sw_desc_weight);
5321
5322 int
wlan_cfg_get_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt * cfg)5323 wlan_cfg_get_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt *cfg)
5324 {
5325 return cfg->rx_sw_desc_num;
5326 }
5327
5328 void
wlan_cfg_set_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt * cfg,int desc_num)5329 wlan_cfg_set_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt *cfg,
5330 int desc_num)
5331 {
5332 cfg->rx_sw_desc_num = desc_num;
5333 }
5334
5335 uint32_t
wlan_cfg_get_reo_rings_mapping(struct wlan_cfg_dp_soc_ctxt * cfg)5336 wlan_cfg_get_reo_rings_mapping(struct wlan_cfg_dp_soc_ctxt *cfg)
5337 {
5338 return cfg->reo_rings_mapping;
5339 }
5340
5341 uint32_t
wlan_cfg_get_rx_rings_mapping(struct wlan_cfg_dp_soc_ctxt * cfg)5342 wlan_cfg_get_rx_rings_mapping(struct wlan_cfg_dp_soc_ctxt *cfg)
5343 {
5344 return cfg->rx_rings_mapping;
5345 }
5346
5347 #ifdef DP_UMAC_HW_RESET_SUPPORT
5348 uint32_t
wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt * cfg)5349 wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt *cfg)
5350 {
5351 return cfg->umac_reset_buffer_window;
5352 }
5353 #endif
5354
5355 bool
wlan_cfg_get_dp_caps(struct wlan_cfg_dp_soc_ctxt * cfg,enum cdp_capabilities dp_caps)5356 wlan_cfg_get_dp_caps(struct wlan_cfg_dp_soc_ctxt *cfg,
5357 enum cdp_capabilities dp_caps)
5358 {
5359 switch (dp_caps) {
5360 case CDP_CFG_DP_TSO:
5361 return cfg->tso_enabled;
5362 case CDP_CFG_DP_LRO:
5363 return cfg->lro_enabled;
5364 case CDP_CFG_DP_SG:
5365 return cfg->sg_enabled;
5366 case CDP_CFG_DP_GRO:
5367 return cfg->gro_enabled;
5368 case CDP_CFG_DP_OL_TX_CSUM:
5369 return cfg->ol_tx_csum_enabled;
5370 case CDP_CFG_DP_OL_RX_CSUM:
5371 return cfg->ol_rx_csum_enabled;
5372 case CDP_CFG_DP_RAWMODE:
5373 return cfg->rawmode_enabled;
5374 case CDP_CFG_DP_PEER_FLOW_CTRL:
5375 return cfg->peer_flow_ctrl_enabled;
5376 case CDP_CFG_DP_MARK_NOTIFY_FRAME_SUPPORT:
5377 return cfg->notify_frame_support;
5378 default:
5379 return false;
5380 }
5381 }
5382
wlan_cfg_set_tso_desc_attach_defer(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5383 void wlan_cfg_set_tso_desc_attach_defer(struct wlan_cfg_dp_soc_ctxt *cfg,
5384 bool val)
5385 {
5386 cfg->is_tso_desc_attach_defer = val;
5387 }
5388
wlan_cfg_is_tso_desc_attach_defer(struct wlan_cfg_dp_soc_ctxt * cfg)5389 bool wlan_cfg_is_tso_desc_attach_defer(struct wlan_cfg_dp_soc_ctxt *cfg)
5390 {
5391 return cfg->is_tso_desc_attach_defer;
5392 }
5393
5394 #ifdef QCA_LL_TX_FLOW_CONTROL_V2
5395 /**
5396 * wlan_cfg_get_tx_flow_stop_queue_th() - Get flow control stop threshold
5397 * @cfg: config context
5398 *
5399 * Return: stop threshold
5400 */
wlan_cfg_get_tx_flow_stop_queue_th(struct wlan_cfg_dp_soc_ctxt * cfg)5401 int wlan_cfg_get_tx_flow_stop_queue_th(struct wlan_cfg_dp_soc_ctxt *cfg)
5402 {
5403 return cfg->tx_flow_stop_queue_threshold;
5404 }
5405
5406 /**
5407 * wlan_cfg_get_tx_flow_start_queue_offset() - Get flow control start offset
5408 * for TX to resume
5409 * @cfg: config context
5410 *
5411 * Return: stop threshold
5412 */
wlan_cfg_get_tx_flow_start_queue_offset(struct wlan_cfg_dp_soc_ctxt * cfg)5413 int wlan_cfg_get_tx_flow_start_queue_offset(struct wlan_cfg_dp_soc_ctxt *cfg)
5414 {
5415 return cfg->tx_flow_start_queue_offset;
5416 }
5417 #endif /* QCA_LL_TX_FLOW_CONTROL_V2 */
5418
wlan_cfg_set_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5419 void wlan_cfg_set_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg,
5420 bool val)
5421 {
5422 cfg->is_rx_flow_tag_enabled = val;
5423 }
5424
wlan_cfg_rx_fst_get_hash_key(struct wlan_cfg_dp_soc_ctxt * cfg)5425 uint8_t *wlan_cfg_rx_fst_get_hash_key(struct wlan_cfg_dp_soc_ctxt *cfg)
5426 {
5427 return cfg->rx_toeplitz_hash_key;
5428 }
5429
wlan_cfg_rx_fst_get_max_search(struct wlan_cfg_dp_soc_ctxt * cfg)5430 uint8_t wlan_cfg_rx_fst_get_max_search(struct wlan_cfg_dp_soc_ctxt *cfg)
5431 {
5432 return cfg->rx_flow_max_search;
5433 }
5434
wlan_cfg_is_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5435 bool wlan_cfg_is_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5436 {
5437 return cfg->is_rx_flow_tag_enabled;
5438 }
5439
5440 qdf_export_symbol(wlan_cfg_is_rx_flow_tag_enabled);
5441
wlan_cfg_is_poll_mode_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5442 bool wlan_cfg_is_poll_mode_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5443 {
5444 return (bool)(cfg->is_poll_mode_enabled);
5445 }
5446
5447 void
wlan_cfg_set_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5448 wlan_cfg_set_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt *cfg,
5449 bool val)
5450 {
5451 cfg->is_rx_flow_search_table_per_pdev = val;
5452 }
5453
wlan_cfg_is_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt * cfg)5454 bool wlan_cfg_is_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt *cfg)
5455 {
5456 return cfg->is_rx_flow_search_table_per_pdev;
5457 }
5458
wlan_cfg_set_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt * cfg,uint16_t val)5459 void wlan_cfg_set_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt *cfg,
5460 uint16_t val)
5461 {
5462 cfg->rx_flow_search_table_size = val;
5463 }
5464
5465 uint16_t
wlan_cfg_get_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt * cfg)5466 wlan_cfg_get_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5467 {
5468 return cfg->rx_flow_search_table_size;
5469 }
5470
5471 void
wlan_cfg_set_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5472 wlan_cfg_set_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg,
5473 bool val)
5474 {
5475 cfg->is_rx_mon_protocol_flow_tag_enabled = val;
5476 }
5477
5478 bool
wlan_cfg_is_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5479 wlan_cfg_is_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5480 {
5481 return cfg->is_rx_mon_protocol_flow_tag_enabled;
5482 }
5483
5484 qdf_export_symbol(wlan_cfg_is_rx_mon_protocol_flow_tag_enabled);
5485
5486 void
wlan_cfg_set_tx_per_pkt_vdev_id_check(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5487 wlan_cfg_set_tx_per_pkt_vdev_id_check(struct wlan_cfg_dp_soc_ctxt *cfg,
5488 bool val)
5489 {
5490 cfg->tx_per_pkt_vdev_id_check = val;
5491 }
5492
5493 bool
wlan_cfg_is_tx_per_pkt_vdev_id_check_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5494 wlan_cfg_is_tx_per_pkt_vdev_id_check_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5495 {
5496 return cfg->tx_per_pkt_vdev_id_check;
5497 }
5498
5499 void
wlan_cfg_set_peer_ext_stats(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5500 wlan_cfg_set_peer_ext_stats(struct wlan_cfg_dp_soc_ctxt *cfg,
5501 bool val)
5502 {
5503 cfg->pext_stats_enabled = val;
5504 }
5505
5506 void
wlan_cfg_set_peer_jitter_stats(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5507 wlan_cfg_set_peer_jitter_stats(struct wlan_cfg_dp_soc_ctxt *cfg,
5508 bool val)
5509 {
5510 cfg->jitter_stats_enabled = val;
5511 }
5512
5513 bool
wlan_cfg_is_peer_ext_stats_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5514 wlan_cfg_is_peer_ext_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5515 {
5516 return cfg->pext_stats_enabled;
5517 }
5518
wlan_cfg_is_fst_in_cmem_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5519 bool wlan_cfg_is_fst_in_cmem_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5520 {
5521 return cfg->fst_in_cmem;
5522 }
5523
wlan_cfg_is_peer_jitter_stats_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5524 bool wlan_cfg_is_peer_jitter_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5525 {
5526 return cfg->jitter_stats_enabled;
5527 }
5528
5529 void
wlan_cfg_set_peer_link_stats(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5530 wlan_cfg_set_peer_link_stats(struct wlan_cfg_dp_soc_ctxt *cfg,
5531 bool val)
5532 {
5533 cfg->peer_link_stats_enabled = val;
5534 }
5535
5536 qdf_export_symbol(wlan_cfg_set_peer_link_stats);
5537
wlan_cfg_is_peer_link_stats_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5538 bool wlan_cfg_is_peer_link_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5539 {
5540 return cfg->peer_link_stats_enabled;
5541 }
5542
5543 qdf_export_symbol(wlan_cfg_is_peer_link_stats_enabled);
5544
wlan_cfg_is_dp_buf_page_frag_alloc_enable(struct wlan_cfg_dp_soc_ctxt * cfg)5545 bool wlan_cfg_is_dp_buf_page_frag_alloc_enable(struct wlan_cfg_dp_soc_ctxt *cfg)
5546 {
5547 return cfg->enable_dp_buf_page_frag_alloc;
5548 }
5549
5550 #ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL
wlan_cfg_is_rx_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5551 bool wlan_cfg_is_rx_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5552 {
5553 return cfg->is_rx_buff_pool_enabled;
5554 }
5555
wlan_cfg_is_rx_refill_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5556 bool wlan_cfg_is_rx_refill_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5557 {
5558 return cfg->is_rx_refill_buff_pool_enabled;
5559 }
5560
wlan_cfg_get_rx_refill_buf_pool_size(struct wlan_cfg_dp_soc_ctxt * cfg)5561 int wlan_cfg_get_rx_refill_buf_pool_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5562 {
5563 return cfg->rx_refill_buff_pool_size;
5564 }
5565
5566 void
wlan_cfg_set_rx_refill_buf_pool_size(struct wlan_cfg_dp_soc_ctxt * cfg,int size)5567 wlan_cfg_set_rx_refill_buf_pool_size(struct wlan_cfg_dp_soc_ctxt *cfg, int size)
5568 {
5569 cfg->rx_refill_buff_pool_size = size;
5570 }
5571 #else
wlan_cfg_is_rx_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5572 bool wlan_cfg_is_rx_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5573 {
5574 return false;
5575 }
5576
wlan_cfg_is_rx_refill_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5577 bool wlan_cfg_is_rx_refill_buffer_pool_enabled(
5578 struct wlan_cfg_dp_soc_ctxt *cfg)
5579 {
5580 return false;
5581 }
5582 #endif /* WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL */
5583
5584 #ifdef WLAN_DP_FEATURE_SW_LATENCY_MGR
wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5585 bool wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5586 {
5587 return (bool)(cfg->is_swlm_enabled);
5588 }
5589 #else
wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt * cfg)5590 bool wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5591 {
5592 return false;
5593 }
5594 #endif
wlan_cfg_radio0_default_reo_get(struct wlan_cfg_dp_soc_ctxt * cfg)5595 uint8_t wlan_cfg_radio0_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg)
5596 {
5597 return cfg->radio0_rx_default_reo;
5598 }
5599
wlan_cfg_radio1_default_reo_get(struct wlan_cfg_dp_soc_ctxt * cfg)5600 uint8_t wlan_cfg_radio1_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg)
5601 {
5602 return cfg->radio1_rx_default_reo;
5603 }
5604
wlan_cfg_radio2_default_reo_get(struct wlan_cfg_dp_soc_ctxt * cfg)5605 uint8_t wlan_cfg_radio2_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg)
5606 {
5607 return cfg->radio2_rx_default_reo;
5608 }
5609
wlan_cfg_set_rxdma1_enable(struct wlan_cfg_dp_soc_ctxt * cfg)5610 void wlan_cfg_set_rxdma1_enable(struct wlan_cfg_dp_soc_ctxt *cfg)
5611 {
5612 cfg->rxdma1_enable = true;
5613 }
5614
5615 void
wlan_cfg_set_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5616 wlan_cfg_set_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg,
5617 bool val)
5618 {
5619 cfg->delay_mon_replenish = val;
5620 }
5621
5622 bool
wlan_cfg_is_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt * cfg)5623 wlan_cfg_is_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg)
5624 {
5625 return cfg->delay_mon_replenish;
5626 }
5627
5628 qdf_export_symbol(wlan_cfg_is_delay_mon_replenish);
5629
5630 #ifdef WLAN_SOFTUMAC_SUPPORT
wlan_cfg_dp_soc_ctx_dump(struct wlan_cfg_dp_soc_ctxt * cfg)5631 void wlan_cfg_dp_soc_ctx_dump(struct wlan_cfg_dp_soc_ctxt *cfg)
5632 {
5633 dp_info("DP CFG SoC ctx: delay_mon_replenish = %d",
5634 cfg->delay_mon_replenish);
5635 }
5636 #else
wlan_cfg_dp_soc_ctx_dump(struct wlan_cfg_dp_soc_ctxt * cfg)5637 void wlan_cfg_dp_soc_ctx_dump(struct wlan_cfg_dp_soc_ctxt *cfg)
5638 {
5639 dp_info("DP CFG SoC ctx: delay_mon_replenish = %d",
5640 cfg->delay_mon_replenish);
5641 dp_info("reo_dst_ring_size = %d, delayed_replenish_entries = %d",
5642 cfg->reo_dst_ring_size, cfg->delayed_replenish_entries);
5643 }
5644 #endif
5645
5646 #ifdef IPA_OFFLOAD
wlan_cfg_ipa_tx_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5647 uint32_t wlan_cfg_ipa_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5648 {
5649 return cfg->ipa_tx_ring_size;
5650 }
5651
wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5652 uint32_t wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5653 {
5654 return cfg->ipa_tx_comp_ring_size;
5655 }
5656
5657 #ifdef IPA_WDI3_TX_TWO_PIPES
wlan_cfg_ipa_tx_alt_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5658 int wlan_cfg_ipa_tx_alt_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5659 {
5660 return cfg->ipa_tx_alt_ring_size;
5661 }
5662
wlan_cfg_ipa_tx_alt_comp_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5663 int wlan_cfg_ipa_tx_alt_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5664 {
5665 return cfg->ipa_tx_alt_comp_ring_size;
5666 }
5667
5668 #else
wlan_cfg_ipa_tx_alt_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5669 int wlan_cfg_ipa_tx_alt_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5670 {
5671 return cfg->ipa_tx_ring_size;
5672 }
5673
wlan_cfg_ipa_tx_alt_comp_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5674 int wlan_cfg_ipa_tx_alt_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5675 {
5676 return cfg->ipa_tx_comp_ring_size;
5677 }
5678 #endif
5679 #endif
5680
5681 #ifdef WLAN_SUPPORT_PPEDS
5682 bool
wlan_cfg_get_dp_soc_ppeds_enable(struct wlan_cfg_dp_soc_ctxt * cfg)5683 wlan_cfg_get_dp_soc_ppeds_enable(struct wlan_cfg_dp_soc_ctxt *cfg)
5684 {
5685 return cfg->ppeds_enable;
5686 }
5687
5688 int
wlan_cfg_get_dp_soc_reo2ppe_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5689 wlan_cfg_get_dp_soc_reo2ppe_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5690 {
5691 return cfg->reo2ppe_ring;
5692 }
5693
5694 int
wlan_cfg_get_dp_soc_ppe2tcl_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5695 wlan_cfg_get_dp_soc_ppe2tcl_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5696 {
5697 return cfg->ppe2tcl_ring;
5698 }
5699
5700 int
wlan_cfg_get_dp_soc_ppeds_num_tx_desc(struct wlan_cfg_dp_soc_ctxt * cfg)5701 wlan_cfg_get_dp_soc_ppeds_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
5702 {
5703 return cfg->ppeds_num_tx_desc;
5704 }
5705
5706 int
wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt * cfg)5707 wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt *cfg)
5708 {
5709 return cfg->ppeds_tx_comp_napi_budget;
5710 }
5711
5712 int
wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len(struct wlan_cfg_dp_soc_ctxt * cfg)5713 wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len(struct wlan_cfg_dp_soc_ctxt *cfg)
5714 {
5715 return cfg->ppeds_tx_desc_hotlist_len;
5716 }
5717 #endif
5718
5719 void
wlan_cfg_get_prealloc_cfg(struct cdp_ctrl_objmgr_psoc * ctrl_psoc,struct wlan_dp_prealloc_cfg * cfg)5720 wlan_cfg_get_prealloc_cfg(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
5721 struct wlan_dp_prealloc_cfg *cfg)
5722 {
5723 if (!ctrl_psoc || !cfg)
5724 return;
5725
5726 cfg->num_reo_dst_ring_entries = cfg_get(ctrl_psoc,
5727 CFG_DP_RX_DESTINATION_RING);
5728 cfg->num_tx_ring_entries = cfg_get(ctrl_psoc, CFG_DP_TX_RING_SIZE);
5729 cfg->num_tx_comp_ring_entries = cfg_get(ctrl_psoc,
5730 CFG_DP_TX_COMPL_RING_SIZE);
5731 cfg->num_wbm_rel_ring_entries = cfg_get(ctrl_psoc,
5732 CFG_DP_WBM_RELEASE_RING);
5733 cfg->num_rxdma_err_dst_ring_entries = cfg_get(ctrl_psoc,
5734 CFG_DP_RXDMA_ERR_DST_RING);
5735 cfg->num_reo_exception_ring_entries = cfg_get(ctrl_psoc,
5736 CFG_DP_REO_EXCEPTION_RING);
5737 cfg->num_tx_desc = cfg_get(ctrl_psoc, CFG_DP_TX_DESC);
5738 cfg->num_tx_ext_desc = cfg_get(ctrl_psoc, CFG_DP_TX_EXT_DESC);
5739 cfg->num_rx_sw_desc = cfg_get(ctrl_psoc, CFG_DP_RX_SW_DESC_NUM);
5740 cfg->num_rxdma_buf_ring_entries = cfg_get(ctrl_psoc,
5741 CFG_DP_RXDMA_BUF_RING);
5742 cfg->num_rxdma_refill_ring_entries = cfg_get(ctrl_psoc,
5743 CFG_DP_RXDMA_REFILL_RING);
5744 cfg->num_reo_status_ring_entries = cfg_get(ctrl_psoc,
5745 CFG_DP_REO_STATUS_RING);
5746 cfg->num_mon_status_ring_entries = cfg_get(ctrl_psoc,
5747 CFG_DP_RXDMA_MONITOR_STATUS_RING);
5748 cfg->num_tx_mon_buf_ring_entries = cfg_get(ctrl_psoc,
5749 CFG_DP_TX_MONITOR_BUF_RING);
5750 cfg->num_tx_mon_dst_ring_entries = cfg_get(ctrl_psoc,
5751 CFG_DP_TX_MONITOR_DST_RING);
5752 }
5753
5754 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2
wlan_cfg_get_pkt_capture_mode(struct wlan_cfg_dp_soc_ctxt * cfg)5755 uint32_t wlan_cfg_get_pkt_capture_mode(struct wlan_cfg_dp_soc_ctxt *cfg)
5756 {
5757 return cfg->pkt_capture_mode;
5758 }
5759 #endif
5760
5761 uint32_t
wlan_cfg_get_dp_soc_rx_mon_buf_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5762 wlan_cfg_get_dp_soc_rx_mon_buf_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5763 {
5764 return cfg->rx_mon_buf_ring_size;
5765 }
5766
5767 qdf_export_symbol(wlan_cfg_get_dp_soc_rx_mon_buf_ring_size);
5768
5769 uint32_t
wlan_cfg_get_dp_soc_tx_mon_buf_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)5770 wlan_cfg_get_dp_soc_tx_mon_buf_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
5771 {
5772 return cfg->tx_mon_buf_ring_size;
5773 }
5774
5775 qdf_export_symbol(wlan_cfg_get_dp_soc_tx_mon_buf_ring_size);
5776
5777 uint8_t
wlan_cfg_get_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt * cfg)5778 wlan_cfg_get_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg)
5779 {
5780 return cfg->rx_rel_wbm2sw_ring_id;
5781 }
5782
5783 void
wlan_cfg_set_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt * cfg,uint8_t wbm2sw_ring_id)5784 wlan_cfg_set_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg,
5785 uint8_t wbm2sw_ring_id)
5786 {
5787 cfg->rx_rel_wbm2sw_ring_id = wbm2sw_ring_id;
5788 }
5789
5790 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
5791 uint8_t
wlan_cfg_mlo_rx_ring_map_get(struct wlan_cfg_dp_soc_ctxt * cfg)5792 wlan_cfg_mlo_rx_ring_map_get(struct wlan_cfg_dp_soc_ctxt *cfg)
5793 {
5794 return cfg->mlo_chip_rx_ring_map;
5795 }
5796 #endif
5797
5798 #ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
5799 bool
wlan_cfg_get_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt * cfg)5800 wlan_cfg_get_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg)
5801 {
5802 return cfg->vdev_stats_hw_offload_config;
5803 }
5804
wlan_cfg_get_vdev_stats_hw_offload_timer(struct wlan_cfg_dp_soc_ctxt * cfg)5805 int wlan_cfg_get_vdev_stats_hw_offload_timer(struct wlan_cfg_dp_soc_ctxt *cfg)
5806 {
5807 return cfg->vdev_stats_hw_offload_timer;
5808 }
5809
5810 void
wlan_cfg_set_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5811 wlan_cfg_set_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg,
5812 bool val)
5813 {
5814 cfg->vdev_stats_hw_offload_config = val;
5815 }
5816 #else
5817 bool
wlan_cfg_get_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt * cfg)5818 wlan_cfg_get_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg)
5819 {
5820 return false;
5821 }
5822
wlan_cfg_get_vdev_stats_hw_offload_timer(struct wlan_cfg_dp_soc_ctxt * cfg)5823 int wlan_cfg_get_vdev_stats_hw_offload_timer(struct wlan_cfg_dp_soc_ctxt *cfg)
5824 {
5825 return 0;
5826 }
5827
5828 void
wlan_cfg_set_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5829 wlan_cfg_set_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg,
5830 bool val)
5831 {}
5832 #endif
5833
5834 #ifdef CONFIG_SAWF
wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt * cfg)5835 bool wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg)
5836 {
5837 return cfg->sawf_enabled;
5838 }
5839
wlan_cfg_set_sawf_config(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5840 void wlan_cfg_set_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg, bool val)
5841 {
5842 cfg->sawf_enabled = val;
5843 }
5844 #else
wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt * cfg)5845 bool wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg)
5846 {
5847 return false;
5848 }
5849
wlan_cfg_set_sawf_config(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5850 void wlan_cfg_set_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg, bool val)
5851 {
5852 }
5853 #endif
5854
5855 #ifdef CONFIG_BERYLLIUM
wlan_cfg_get_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)5856 int wlan_cfg_get_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
5857 int context)
5858 {
5859 return cfg->int_host2txmon_ring_mask[context];
5860 }
5861
5862 qdf_export_symbol(wlan_cfg_get_host2txmon_ring_mask);
5863
wlan_cfg_set_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)5864 void wlan_cfg_set_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
5865 int context, int mask)
5866 {
5867 cfg->int_host2txmon_ring_mask[context] = mask;
5868 }
5869 #else
wlan_cfg_get_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context)5870 int wlan_cfg_get_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
5871 int context)
5872 {
5873 return 0;
5874 }
5875
wlan_cfg_set_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt * cfg,int context,int mask)5876 void wlan_cfg_set_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
5877 int context, int mask)
5878 {
5879 }
5880 #endif
5881
5882 qdf_export_symbol(wlan_cfg_set_host2txmon_ring_mask);
5883
wlan_cfg_set_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt * cfg,bool txmon_hw_support)5884 void wlan_cfg_set_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt *cfg,
5885 bool txmon_hw_support)
5886 {
5887 cfg->txmon_hw_support = txmon_hw_support;
5888 }
5889
wlan_cfg_get_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt * cfg)5890 bool wlan_cfg_get_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt *cfg)
5891 {
5892 return cfg->txmon_hw_support;
5893 }
5894
5895 qdf_export_symbol(wlan_cfg_get_txmon_hw_support);
5896
wlan_cfg_get_napi_scale_factor(struct wlan_cfg_dp_soc_ctxt * cfg)5897 uint8_t wlan_cfg_get_napi_scale_factor(struct wlan_cfg_dp_soc_ctxt *cfg)
5898 {
5899 return cfg->napi_scale_factor;
5900 }
5901
wlan_cfg_get_txmon_sw_peer_filtering(struct wlan_cfg_dp_soc_ctxt * cfg)5902 bool wlan_cfg_get_txmon_sw_peer_filtering(struct wlan_cfg_dp_soc_ctxt *cfg)
5903 {
5904 return cfg->txmon_sw_peer_filtering;
5905 }
5906
5907 qdf_export_symbol(wlan_cfg_get_txmon_sw_peer_filtering);
5908
5909 uint16_t
wlan_cfg_get_pointer_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt * cfg)5910 wlan_cfg_get_pointer_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg)
5911 {
5912 return cfg->pointer_timer_threshold_rx;
5913 }
5914
5915 uint8_t
wlan_cfg_get_pointer_num_threshold_rx(struct wlan_cfg_dp_soc_ctxt * cfg)5916 wlan_cfg_get_pointer_num_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg)
5917 {
5918 return cfg->pointer_num_threshold_rx;
5919 }
5920
wlan_cfg_get_special_frame_cfg(struct wlan_cfg_dp_soc_ctxt * cfg)5921 uint32_t wlan_cfg_get_special_frame_cfg(struct wlan_cfg_dp_soc_ctxt *cfg)
5922 {
5923 return cfg->special_frame_msk;
5924 }
5925
wlan_cfg_set_ast_indication_disable(struct wlan_cfg_dp_soc_ctxt * cfg,bool val)5926 void wlan_cfg_set_ast_indication_disable(struct wlan_cfg_dp_soc_ctxt *cfg,
5927 bool val)
5928 {
5929 cfg->fw_ast_indication_disable = val;
5930 }
5931
wlan_cfg_get_ast_indication_disable(struct wlan_cfg_dp_soc_ctxt * cfg)5932 bool wlan_cfg_get_ast_indication_disable(struct wlan_cfg_dp_soc_ctxt *cfg)
5933 {
5934 return cfg->fw_ast_indication_disable;
5935 }
5936
5937 #ifdef WLAN_SUPPORT_DPDK
wlan_cfg_get_dp_soc_dpdk_cfg(struct cdp_ctrl_objmgr_psoc * psoc)5938 int wlan_cfg_get_dp_soc_dpdk_cfg(struct cdp_ctrl_objmgr_psoc *psoc)
5939 {
5940 return cfg_get(psoc, CFG_DPDK_WIFI);
5941 }
5942 #else
wlan_cfg_get_dp_soc_dpdk_cfg(struct cdp_ctrl_objmgr_psoc * psoc)5943 int wlan_cfg_get_dp_soc_dpdk_cfg(struct cdp_ctrl_objmgr_psoc *psoc)
5944 {
5945 return 0;
5946 }
5947 #endif
5948