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