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