xref: /wlan-dirver/qca-wifi-host-cmn/wlan_cfg/wlan_cfg.c (revision 162ac04ff74f0ec725c4dae0ed28c2787657fa69)
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
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
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
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
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
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
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
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
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
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 
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
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
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
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
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
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
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
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  */
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
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
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
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
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
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
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
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
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
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
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
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
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 
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 
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
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 
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 
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
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
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
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
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 *
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 *
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 
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 *
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 
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 
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 
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 
4511 int wlan_cfg_get_mon_drop_thresh(struct wlan_cfg_dp_soc_ctxt *cfg)
4512 {
4513 	return cfg->mon_drop_thresh;
4514 }
4515 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
4703 int wlan_cfg_get_num_contexts(struct wlan_cfg_dp_soc_ctxt *cfg)
4704 {
4705 	return cfg->num_int_ctxts;
4706 }
4707 
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 
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 
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 
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 
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 
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
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
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 
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 
4758 uint32_t wlan_cfg_get_max_clients(struct wlan_cfg_dp_soc_ctxt *cfg)
4759 {
4760 	return cfg->max_clients;
4761 }
4762 
4763 uint32_t wlan_cfg_max_alloc_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4764 {
4765 	return cfg->max_alloc_size;
4766 }
4767 
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 
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
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
4786 wlan_cfg_rx_pending_lo_threshold(struct wlan_cfg_dp_soc_ctxt *cfg)
4787 {
4788 	return cfg->rx_pending_low_threshold;
4789 }
4790 
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)
4799 int wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *cfg)
4800 {
4801 	return 1;
4802 }
4803 
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)
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 
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
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 
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 
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 
4845 int wlan_cfg_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4846 {
4847 	return cfg->tx_ring_size;
4848 }
4849 
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 
4856 int wlan_cfg_time_control_bp(struct wlan_cfg_dp_soc_ctxt *cfg)
4857 {
4858 	return cfg->time_control_bp;
4859 }
4860 
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 
4870 int wlan_cfg_qref_control_size(struct wlan_cfg_dp_soc_ctxt *cfg)
4871 {
4872 	return cfg->qref_control_size;
4873 }
4874 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
4943 bool wlan_cfg_get_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg)
4944 {
4945 	return cfg->raw_mode_war;
4946 }
4947 
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 
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 
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 
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 
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 
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 
4979 int wlan_cfg_get_min_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
4980 {
4981 	return cfg->min_tx_desc;
4982 }
4983 
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 
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 
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 
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 
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 
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 
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
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
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 
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 
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 
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 
5062 bool wlan_cfg_is_gro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5063 {
5064 	return  cfg->gro_enabled;
5065 }
5066 
5067 bool wlan_cfg_is_lro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5068 {
5069 	return  cfg->lro_enabled;
5070 }
5071 
5072 bool wlan_cfg_is_ipa_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5073 {
5074 	return  cfg->ipa_enabled;
5075 }
5076 
5077 void wlan_cfg_set_rx_hash(struct wlan_cfg_dp_soc_ctxt *cfg, bool val)
5078 {
5079 	cfg->rx_hash = val;
5080 }
5081 
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
5088 void wlan_cfg_set_rx_rr(struct wlan_cfg_dp_soc_ctxt *cfg, bool val)
5089 {
5090 	cfg->rx_rr = val;
5091 }
5092 
5093 bool wlan_cfg_is_rx_rr_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5094 {
5095 	return  cfg->rx_rr;
5096 }
5097 #else
5098 void wlan_cfg_set_rx_rr(struct wlan_cfg_dp_soc_ctxt *cfg, bool val)
5099 {
5100 }
5101 
5102 bool wlan_cfg_is_rx_rr_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5103 {
5104 	return  false;
5105 }
5106 #endif
5107 
5108 int wlan_cfg_get_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg)
5109 {
5110 	return  cfg->nss_enabled;
5111 }
5112 
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 
5118 int wlan_cfg_get_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg)
5119 {
5120 	return  cfg->nss_cfg;
5121 }
5122 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
5190 int wlan_cfg_get_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg)
5191 {
5192 	return cfg->tcp_udp_checksumoffload;
5193 }
5194 
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 
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 
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 
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  */
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  */
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 
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 
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 
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 
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 
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
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 
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 
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
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
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
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
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
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
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
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
5514 wlan_cfg_is_peer_ext_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5515 {
5516 	return cfg->pext_stats_enabled;
5517 }
5518 
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 
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
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 
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 
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
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 
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 
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
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
5572 bool wlan_cfg_is_rx_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5573 {
5574 	return false;
5575 }
5576 
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
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
5590 bool wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
5591 {
5592 	return false;
5593 }
5594 #endif
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 
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 
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 
5610 void wlan_cfg_set_rxdma1_enable(struct wlan_cfg_dp_soc_ctxt *cfg)
5611 {
5612 	cfg->rxdma1_enable = true;
5613 }
5614 
5615 void
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
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
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
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
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 
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
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 
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
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 
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 
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
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
5818 wlan_cfg_get_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg)
5819 {
5820 	return false;
5821 }
5822 
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
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
5835 bool wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg)
5836 {
5837 	return cfg->sawf_enabled;
5838 }
5839 
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
5845 bool wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg)
5846 {
5847 	return false;
5848 }
5849 
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
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 
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
5870 int wlan_cfg_get_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
5871 				      int context)
5872 {
5873 	return 0;
5874 }
5875 
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 
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 
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 
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 
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
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
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 
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 
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 
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
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
5943 int wlan_cfg_get_dp_soc_dpdk_cfg(struct cdp_ctrl_objmgr_psoc *psoc)
5944 {
5945 	return 0;
5946 }
5947 #endif
5948