From 2bea262d35eb4bd03fcfa3b715edfffd72ea87db Mon Sep 17 00:00:00 2001 From: Pavankumar Nandeshwar Date: Tue, 21 Mar 2023 09:26:30 -0700 Subject: [PATCH] qcacmn: Change MSI configs for lower MSI line groups ppe2tcl and Umac reset interrupts need dedicated irq lines. Hence, group some of the existing dp groups togeather to share MSI lines to make space for ppe2tcl and Umac reset dedicated irqs. Change-Id: I5181caeaeb4d0107b62e7ac812c2f829fd8215a2 CRs-Fixed: 3423553 --- dp/wifi3.0/be/dp_be.c | 2 +- hif/src/hif_exec.c | 2 +- wlan_cfg/wlan_cfg.c | 514 ++++++++++++++++++++++++++++-------------- 3 files changed, 347 insertions(+), 171 deletions(-) diff --git a/dp/wifi3.0/be/dp_be.c b/dp/wifi3.0/be/dp_be.c index a3f3ddd809..ba5c5361a7 100644 --- a/dp/wifi3.0/be/dp_be.c +++ b/dp/wifi3.0/be/dp_be.c @@ -1349,7 +1349,7 @@ int dp_register_ppeds_interrupts(struct dp_soc *soc, struct dp_srng *srng, "pci%d_ppe2tcl", pci_slot); ret = pld_pfrm_request_irq(soc->osdev->dev, irq, dp_ppe_ds_ppe2tcl_irq_handler, - IRQF_SHARED | IRQF_NO_SUSPEND, + IRQF_NO_SUSPEND, be_soc->irq_name[1], dp_get_ppe_ds_ctxt(soc)); if (ret) diff --git a/hif/src/hif_exec.c b/hif/src/hif_exec.c index e61d9fb720..45afa5a10b 100644 --- a/hif/src/hif_exec.c +++ b/hif/src/hif_exec.c @@ -1253,7 +1253,7 @@ QDF_STATUS hif_register_umac_reset_handler(struct hif_opaque_softc *hif_scn, /* Register the interrupt handler */ ret = pfrm_request_irq(hif_sc->qdf_dev->dev, irq, hif_umac_reset_irq_handler, - IRQF_SHARED | IRQF_NO_SUSPEND, + IRQF_NO_SUSPEND, "umac_hw_reset_irq", umac_reset_ctx); if (ret) { diff --git a/wlan_cfg/wlan_cfg.c b/wlan_cfg/wlan_cfg.c index de14e9d54b..a3dbded6bf 100644 --- a/wlan_cfg/wlan_cfg.c +++ b/wlan_cfg/wlan_cfg.c @@ -890,14 +890,11 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, 0}, @@ -984,14 +981,12 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0}, @@ -1078,14 +1073,11 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe wbm ds release ring ring mask */ - { 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0}, @@ -1163,14 +1155,12 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0}, @@ -1248,14 +1238,12 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0}, @@ -1333,14 +1321,11 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0}, @@ -1418,14 +1403,12 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0}, + 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0}, @@ -1501,20 +1484,20 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0}, + 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0}, }, }; #else + +/* DS and Umac reset not supported if available MSI lines are less than 8 */ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIONS] = { /* Interrupt assignment for integrated configuration */ { @@ -1592,11 +1575,14 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO {WLAN_CFG_TX_MON_RING_MASK_0, WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + WLAN_CFG_PPE2TCL_RING_MASK_0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0}, @@ -1673,15 +1659,14 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO { WLAN_CFG_TX_MON_RING_MASK_0 | WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* ppe ds wbm release ring ring mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ - {WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, /* Interrupt assignment for 2 MSI combination */ { @@ -1755,15 +1740,14 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO { WLAN_CFG_TX_MON_RING_MASK_0, WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* ppe ds wbm release ring ring mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ - {0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, /* Interrupt assignment for 3 MSI combination */ { @@ -1845,15 +1829,14 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO { WLAN_CFG_TX_MON_RING_MASK_0, WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* ppe ds wbm release ring ring mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ - {0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, /* Interrupt assignment for 4 MSI combination */ { @@ -1927,15 +1910,14 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO { WLAN_CFG_TX_MON_RING_MASK_0, WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* ppe ds wbm release ring ring mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ - {0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, /* Interrupt assignment for 5 MSI combination */ { @@ -2018,17 +2000,13 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ - {0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, /* Interrupt assignment for 6 MSI combination */ { @@ -2104,17 +2082,13 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ - {0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, /* Interrupt assignment for 7 MSI combination */ { @@ -2198,17 +2172,13 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ - {0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, /* Interrupt assignment for 8 MSI combination */ { @@ -2222,9 +2192,9 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO { 0, 0, 0, 0, WLAN_CFG_RX_RING_MASK_0, WLAN_CFG_RX_RING_MASK_1, - WLAN_CFG_RX_RING_MASK_2, + WLAN_CFG_RX_RING_MASK_2 | WLAN_CFG_RX_RING_MASK_3, - 0, 0, 0, 0, 0, 0, 0, 0}, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* rx mon ring masks */ { 0, 0, 0, WLAN_CFG_RX_MON_RING_MASK_0, @@ -2292,14 +2262,11 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, 0, 0}, @@ -2386,14 +2353,11 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO WLAN_CFG_TX_MON_RING_MASK_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe ds wbm release ring ring mask */ - { 0, 0, 0, 0, 0, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* Reo2ppe ring mask */ - {0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ppe2tcl ring mask */ - {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, - 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* umac reset mask */ {0, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, 0}, @@ -3013,6 +2977,198 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO }, }; #endif + +struct dp_int_mask_assignment dp_ds_mask_assignment_8msi = + /* Interrupt assignment for 8 MSI combination */ + { + /* tx ring masks */ + { WLAN_CFG_TX_RING_MASK_0, + WLAN_CFG_TX_RING_MASK_1, + WLAN_CFG_TX_RING_MASK_2 | + WLAN_CFG_TX_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx ring masks */ + { 0, 0, 0, + WLAN_CFG_RX_RING_MASK_0, + WLAN_CFG_RX_RING_MASK_1, + WLAN_CFG_RX_RING_MASK_2 | + WLAN_CFG_RX_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx mon ring masks */ + { 0, 0, + WLAN_CFG_RX_MON_RING_MASK_0, + WLAN_CFG_RX_MON_RING_MASK_1, + WLAN_CFG_RX_MON_RING_MASK_2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* host2rxdma ring masks */ + { 0, 0, + WLAN_CFG_HOST2RXDMA_RING_MASK_0, + WLAN_CFG_HOST2RXDMA_RING_MASK_1, + WLAN_CFG_HOST2RXDMA_RING_MASK_2 | + WLAN_CFG_HOST2RXDMA_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rxdma2host ring masks */ + { 0, 0, + WLAN_CFG_RXDMA2HOST_RING_MASK_0, + WLAN_CFG_RXDMA2HOST_RING_MASK_1, + WLAN_CFG_RXDMA2HOST_RING_MASK_2 | + WLAN_CFG_RXDMA2HOST_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* host2rxdma mon ring masks */ + { 0, 0, + WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0, + WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1, + WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rxdma2host mon ring masks */ + { 0, 0, + WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0, + WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1, + WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx err ring masks */ + { 0, 0, + WLAN_CFG_RX_ERR_RING_MASK_0, + WLAN_CFG_RX_ERR_RING_MASK_1, + WLAN_CFG_RX_ERR_RING_MASK_2 | + WLAN_CFG_RX_ERR_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx wbm rel ring masks */ + { 0, 0, + WLAN_CFG_RX_WBM_REL_RING_MASK_0, + WLAN_CFG_RX_WBM_REL_RING_MASK_1, + WLAN_CFG_RX_WBM_REL_RING_MASK_2 | + WLAN_CFG_RX_WBM_REL_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* reo status ring masks */ + { 0, 0, + WLAN_CFG_REO_STATUS_RING_MASK_0, + WLAN_CFG_REO_STATUS_RING_MASK_1, + WLAN_CFG_REO_STATUS_RING_MASK_2 | + WLAN_CFG_REO_STATUS_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx_ring_near_full_irq mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx_ring_near_full_irq_2 mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* tx_ring_near_full_irq mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* host2txmon ring masks */ + { WLAN_CFG_HOST2TXMON_RING_MASK_0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* tx mon ring masks */ + { WLAN_CFG_TX_MON_RING_MASK_0, + WLAN_CFG_TX_MON_RING_MASK_1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* ppe ds wbm release ring ring mask */ + { WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* Reo2ppe ring mask */ + {0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* ppe2tcl ring mask */ + {0, 0, 0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + /* umac reset mask */ + {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, + 0, 0, 0, 0, 0, 0, 0, 0}, + }; + +struct dp_int_mask_assignment dp_ds_mask_assignment_9msi = + /* Interrupt assignment for 9 MSI combination */ + { + /* tx ring masks */ + { WLAN_CFG_TX_RING_MASK_0, + WLAN_CFG_TX_RING_MASK_1, + WLAN_CFG_TX_RING_MASK_2, + WLAN_CFG_TX_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx ring masks */ + { 0, 0, 0, 0, + WLAN_CFG_RX_RING_MASK_0, + WLAN_CFG_RX_RING_MASK_1, + WLAN_CFG_RX_RING_MASK_2 | + WLAN_CFG_RX_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx mon ring masks */ + { 0, 0, 0, + WLAN_CFG_RX_MON_RING_MASK_0, + WLAN_CFG_RX_MON_RING_MASK_1, + WLAN_CFG_RX_MON_RING_MASK_2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* host2rxdma ring masks */ + { 0, 0, 0, + WLAN_CFG_HOST2RXDMA_RING_MASK_0, + WLAN_CFG_HOST2RXDMA_RING_MASK_1, + WLAN_CFG_HOST2RXDMA_RING_MASK_2, + WLAN_CFG_HOST2RXDMA_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rxdma2host ring masks */ + { 0, 0, 0, + WLAN_CFG_RXDMA2HOST_RING_MASK_0, + WLAN_CFG_RXDMA2HOST_RING_MASK_1, + WLAN_CFG_RXDMA2HOST_RING_MASK_2, + WLAN_CFG_RXDMA2HOST_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* host2rxdma mon ring masks */ + { 0, 0, 0, + WLAN_CFG_HOST2RXDMA_MON_RING_MASK_0, + WLAN_CFG_HOST2RXDMA_MON_RING_MASK_1, + WLAN_CFG_HOST2RXDMA_MON_RING_MASK_2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rxdma2host mon ring masks */ + { 0, 0, 0, + WLAN_CFG_RXDMA2HOST_MON_RING_MASK_0, + WLAN_CFG_RXDMA2HOST_MON_RING_MASK_1, + WLAN_CFG_RXDMA2HOST_MON_RING_MASK_2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx err ring masks */ + { 0, 0, 0, + WLAN_CFG_RX_ERR_RING_MASK_0, + WLAN_CFG_RX_ERR_RING_MASK_1, + WLAN_CFG_RX_ERR_RING_MASK_2, + WLAN_CFG_RX_ERR_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx wbm rel ring masks */ + { 0, 0, 0, + WLAN_CFG_RX_WBM_REL_RING_MASK_0, + WLAN_CFG_RX_WBM_REL_RING_MASK_1, + WLAN_CFG_RX_WBM_REL_RING_MASK_2, + WLAN_CFG_RX_WBM_REL_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* reo status ring masks */ + { 0, 0, 0, + WLAN_CFG_REO_STATUS_RING_MASK_0, + WLAN_CFG_REO_STATUS_RING_MASK_1, + WLAN_CFG_REO_STATUS_RING_MASK_2, + WLAN_CFG_REO_STATUS_RING_MASK_3, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx_ring_near_full_irq mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* rx_ring_near_full_irq_2 mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* tx_ring_near_full_irq mask */ + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* host2txmon ring masks */ + { WLAN_CFG_HOST2TXMON_RING_MASK_0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* tx mon ring masks */ + { WLAN_CFG_TX_MON_RING_MASK_0, + WLAN_CFG_TX_MON_RING_MASK_1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* ppe ds wbm release ring ring mask */ + { WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* Reo2ppe ring mask */ + {0, 0, 0, 0, 0, 0, WLAN_CFG_REO2PPE_RING_MASK_0, + 0, 0, 0, 0, 0, 0, 0, 0, 0}, + /* ppe2tcl ring mask */ + {0, 0, 0, 0, 0, 0, 0, WLAN_CFG_PPE2TCL_RING_MASK_0, + 0, 0, 0, 0, 0, 0, 0, 0}, + /* umac reset mask */ + {0, 0, 0, 0, 0, 0, 0, 0, + WLAN_CFG_UMAC_RESET_INTR_MASK_0, 0, 0, 0, 0, 0, 0, 0}, + }; #endif /* g_wlan_srng_cfg[] - Per ring_type specific configuration */ @@ -3237,6 +3393,76 @@ void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, #else +static void +wlan_cfg_mask_assignment(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, + struct dp_int_mask_assignment *mask_assignment, + int interrupt_index, int i, bool is_monitor_mode) +{ + int int_host2rxdma_mon_ring_mask; + bool host2rxmon_mask_set = false; + bool txmon_hw_support = false; + + wlan_cfg_ctx->int_tx_ring_mask[i] = + mask_assignment->tx_ring_mask[i]; + wlan_cfg_ctx->int_rx_mon_ring_mask[i] = + mask_assignment->rx_mon_ring_mask[i]; + wlan_cfg_ctx->int_rx_err_ring_mask[i] = + mask_assignment->rx_err_ring_mask[i]; + wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] = + mask_assignment->rx_wbm_rel_ring_mask[i]; + wlan_cfg_ctx->int_reo_status_ring_mask[i] = + mask_assignment->reo_status_ring_mask[i]; + wlan_cfg_ctx->int_ppeds_wbm_release_ring_mask[i] = + mask_assignment->ppeds_wbm_release_ring_mask[i]; + wlan_cfg_ctx->int_ppe2tcl_ring_mask[i] = + mask_assignment->ppe2tcl_ring_mask[i]; + wlan_cfg_ctx->int_reo2ppe_ring_mask[i] = + mask_assignment->reo2ppe_ring_mask[i]; + if (is_monitor_mode) { + wlan_cfg_ctx->int_rx_ring_mask[i] = 0; + wlan_cfg_ctx->int_rxdma2host_ring_mask[i] = 0; + } else { + wlan_cfg_ctx->int_rx_ring_mask[i] = + mask_assignment->rx_ring_mask[i]; + wlan_cfg_ctx->int_rxdma2host_ring_mask[i] = + mask_assignment->rxdma2host_ring_mask[i]; + } + wlan_cfg_ctx->int_host2rxdma_ring_mask[i] = + mask_assignment->host2rxdma_ring_mask[i]; + wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] = + mask_assignment->host2rxdma_mon_ring_mask[i]; + wlan_cfg_ctx->int_rxdma2host_mon_ring_mask[i] = + mask_assignment->rxdma2host_mon_ring_mask[i]; + wlan_cfg_ctx->int_rx_ring_near_full_irq_1_mask[i] = + mask_assignment->rx_ring_near_full_irq_1_mask[i]; + wlan_cfg_ctx->int_rx_ring_near_full_irq_2_mask[i] = + mask_assignment->rx_ring_near_full_irq_2_mask[i]; + wlan_cfg_ctx->int_tx_ring_near_full_irq_mask[i] = + mask_assignment->tx_ring_near_full_irq_mask[i]; + + txmon_hw_support = wlan_cfg_get_txmon_hw_support(wlan_cfg_ctx); + if (txmon_hw_support) { + wlan_cfg_ctx->int_tx_mon_ring_mask[i] = + mask_assignment->tx_mon_ring_mask[i]; + wlan_cfg_ctx->int_host2txmon_ring_mask[i] = + mask_assignment->host2txmon_ring_mask[i]; + int_host2rxdma_mon_ring_mask = + mask_assignment->host2rxdma_mon_ring_mask[i]; + if (int_host2rxdma_mon_ring_mask && !host2rxmon_mask_set) { + wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[interrupt_index] = + mask_assignment->host2rxdma_mon_ring_mask[i]; + host2rxmon_mask_set = true; + } + } else { + wlan_cfg_ctx->int_tx_mon_ring_mask[i] = 0; + wlan_cfg_ctx->int_host2txmon_ring_mask[i] = 0; + wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] = + mask_assignment->host2rxdma_mon_ring_mask[i]; + } + wlan_cfg_ctx->int_umac_reset_intr_mask[i] = + mask_assignment->umac_reset_intr_mask[i]; +} + void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, int num_dp_msi, int interrupt_mode, @@ -3244,9 +3470,7 @@ void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, { int i = 0; int interrupt_index = 0; - int int_host2rxdma_mon_ring_mask; - bool host2rxmon_mask_set = false; - bool txmon_hw_support = false; + struct dp_int_mask_assignment *mask_assignment; if(interrupt_mode == DP_INTR_INTEGRATED) { interrupt_index = 0; @@ -3258,65 +3482,17 @@ void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, } for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) { - wlan_cfg_ctx->int_tx_ring_mask[i] = - dp_mask_assignment[interrupt_index].tx_ring_mask[i]; - wlan_cfg_ctx->int_rx_mon_ring_mask[i] = - dp_mask_assignment[interrupt_index].rx_mon_ring_mask[i]; - wlan_cfg_ctx->int_rx_err_ring_mask[i] = - dp_mask_assignment[interrupt_index].rx_err_ring_mask[i]; - wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] = - dp_mask_assignment[interrupt_index].rx_wbm_rel_ring_mask[i]; - wlan_cfg_ctx->int_reo_status_ring_mask[i] = - dp_mask_assignment[interrupt_index].reo_status_ring_mask[i]; - wlan_cfg_ctx->int_ppeds_wbm_release_ring_mask[i] = - dp_mask_assignment[interrupt_index].ppeds_wbm_release_ring_mask[i]; - wlan_cfg_ctx->int_ppe2tcl_ring_mask[i] = - dp_mask_assignment[interrupt_index].ppe2tcl_ring_mask[i]; - wlan_cfg_ctx->int_reo2ppe_ring_mask[i] = - dp_mask_assignment[interrupt_index].reo2ppe_ring_mask[i]; - if (is_monitor_mode) { - wlan_cfg_ctx->int_rx_ring_mask[i] = 0; - wlan_cfg_ctx->int_rxdma2host_ring_mask[i] = 0; - } else { - wlan_cfg_ctx->int_rx_ring_mask[i] = - dp_mask_assignment[interrupt_index].rx_ring_mask[i]; - wlan_cfg_ctx->int_rxdma2host_ring_mask[i] = - dp_mask_assignment[interrupt_index].rxdma2host_ring_mask[i]; - } - wlan_cfg_ctx->int_host2rxdma_ring_mask[i] = - dp_mask_assignment[interrupt_index].host2rxdma_ring_mask[i]; - wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] = - dp_mask_assignment[interrupt_index].host2rxdma_mon_ring_mask[i]; - wlan_cfg_ctx->int_rxdma2host_mon_ring_mask[i] = - dp_mask_assignment[interrupt_index].rxdma2host_mon_ring_mask[i]; - wlan_cfg_ctx->int_rx_ring_near_full_irq_1_mask[i] = - dp_mask_assignment[interrupt_index].rx_ring_near_full_irq_1_mask[i]; - wlan_cfg_ctx->int_rx_ring_near_full_irq_2_mask[i] = - dp_mask_assignment[interrupt_index].rx_ring_near_full_irq_2_mask[i]; - wlan_cfg_ctx->int_tx_ring_near_full_irq_mask[i] = - dp_mask_assignment[interrupt_index].tx_ring_near_full_irq_mask[i]; + if (!wlan_cfg_get_dp_soc_is_ppeds_enabled(wlan_cfg_ctx)) + mask_assignment = &dp_mask_assignment[interrupt_index]; + else if (interrupt_index == 8) + mask_assignment = &dp_ds_mask_assignment_8msi; + else if (interrupt_index == 9) + mask_assignment = &dp_ds_mask_assignment_9msi; + else + mask_assignment = &dp_mask_assignment[interrupt_index]; - txmon_hw_support = wlan_cfg_get_txmon_hw_support(wlan_cfg_ctx); - if (txmon_hw_support) { - wlan_cfg_ctx->int_tx_mon_ring_mask[i] = - dp_mask_assignment[interrupt_index].tx_mon_ring_mask[i]; - wlan_cfg_ctx->int_host2txmon_ring_mask[i] = - dp_mask_assignment[interrupt_index].host2txmon_ring_mask[i]; - int_host2rxdma_mon_ring_mask = - dp_mask_assignment[interrupt_index].host2rxdma_mon_ring_mask[i]; - if (int_host2rxdma_mon_ring_mask && !host2rxmon_mask_set) { - wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[interrupt_index] = - dp_mask_assignment[interrupt_index].host2rxdma_mon_ring_mask[i]; - host2rxmon_mask_set = true; - } - } else { - wlan_cfg_ctx->int_tx_mon_ring_mask[i] = 0; - wlan_cfg_ctx->int_host2txmon_ring_mask[i] = 0; - wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[i] = - dp_mask_assignment[interrupt_index].host2rxdma_mon_ring_mask[i]; - } - wlan_cfg_ctx->int_umac_reset_intr_mask[i] = - dp_mask_assignment[interrupt_index].umac_reset_intr_mask[i]; + wlan_cfg_mask_assignment(wlan_cfg_ctx, mask_assignment, + interrupt_index, i, is_monitor_mode); } } #endif