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