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