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
This commit is contained in:
Pavankumar Nandeshwar
2023-03-21 09:26:30 -07:00
committed by Madan Koyyalamudi
parent c46d796117
commit 2bea262d35
3 changed files with 347 additions and 171 deletions

View File

@@ -1349,7 +1349,7 @@ int dp_register_ppeds_interrupts(struct dp_soc *soc, struct dp_srng *srng,
"pci%d_ppe2tcl", pci_slot); "pci%d_ppe2tcl", pci_slot);
ret = pld_pfrm_request_irq(soc->osdev->dev, irq, ret = pld_pfrm_request_irq(soc->osdev->dev, irq,
dp_ppe_ds_ppe2tcl_irq_handler, dp_ppe_ds_ppe2tcl_irq_handler,
IRQF_SHARED | IRQF_NO_SUSPEND, IRQF_NO_SUSPEND,
be_soc->irq_name[1], be_soc->irq_name[1],
dp_get_ppe_ds_ctxt(soc)); dp_get_ppe_ds_ctxt(soc));
if (ret) if (ret)

View File

@@ -1253,7 +1253,7 @@ QDF_STATUS hif_register_umac_reset_handler(struct hif_opaque_softc *hif_scn,
/* Register the interrupt handler */ /* Register the interrupt handler */
ret = pfrm_request_irq(hif_sc->qdf_dev->dev, irq, ret = pfrm_request_irq(hif_sc->qdf_dev->dev, irq,
hif_umac_reset_irq_handler, hif_umac_reset_irq_handler,
IRQF_SHARED | IRQF_NO_SUSPEND, IRQF_NO_SUSPEND,
"umac_hw_reset_irq", "umac_hw_reset_irq",
umac_reset_ctx); umac_reset_ctx);
if (ret) { if (ret) {

View File

@@ -890,14 +890,11 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO
WLAN_CFG_TX_MON_RING_MASK_1, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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 */ /* 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 */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0,
WLAN_CFG_UMAC_RESET_INTR_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, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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}, 0, 0, 0, 0, 0, 0, 0, 0},
/* ppe2tcl ring mask */ /* 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},
WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0, 0, 0},
/* umac reset mask */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0,
0, WLAN_CFG_UMAC_RESET_INTR_MASK_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, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* ppe wbm ds release ring ring mask */ /* 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 */ /* 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 */ /* 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},
WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0, 0},
/* umac reset mask */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0,
0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_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, WLAN_CFG_TX_MON_RING_MASK_1,
0, 0, 0, 0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* ppe ds wbm release ring ring mask */ /* 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},
WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0, 0, 0},
/* Reo2ppe ring mask */ /* 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}, 0, 0, 0, 0, 0, 0},
/* ppe2tcl ring mask */ /* 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},
WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0, 0},
/* umac reset mask */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_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, WLAN_CFG_TX_MON_RING_MASK_1,
0, 0, 0, 0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* ppe ds wbm release ring ring mask */ /* 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},
WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0, 0},
/* Reo2ppe ring mask */ /* 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}, 0, 0, 0, 0, 0},
/* ppe2tcl ring mask */ /* 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},
WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0, 0},
/* umac reset mask */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_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, WLAN_CFG_TX_MON_RING_MASK_1,
0, 0, 0, 0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* ppe ds wbm release ring ring mask */ /* 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},
WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0, 0},
/* Reo2ppe ring mask */ /* 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},
WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0, 0},
/* ppe2tcl ring mask */ /* 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, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0, 0},
/* umac reset mask */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_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, WLAN_CFG_TX_MON_RING_MASK_1,
0, 0, 0, 0, 0, 0}, 0, 0, 0, 0, 0, 0},
/* ppe ds wbm release ring ring mask */ /* 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},
WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0, 0, 0, 0, 0},
/* Reo2ppe ring mask */ /* 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, WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0, 0}, 0, 0, 0, 0, 0},
/* ppe2tcl ring mask */ /* 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, WLAN_CFG_PPE2TCL_RING_MASK_0, 0, 0},
/* umac reset mask */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_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, WLAN_CFG_TX_MON_RING_MASK_1,
0, 0, 0, 0, 0}, 0, 0, 0, 0, 0},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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, WLAN_CFG_REO2PPE_RING_MASK_0, 0, 0}, 0, 0, 0, 0, 0},
/* ppe2tcl ring mask */ /* 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 */ /* umac reset mask */
{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_UMAC_RESET_INTR_MASK_0}, 0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0},
}, },
}; };
#else #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] = { static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIONS] = {
/* Interrupt assignment for integrated configuration */ /* 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, {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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 */ /* 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 */ /* umac reset 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_UMAC_RESET_INTR_MASK_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_0 |
WLAN_CFG_TX_MON_RING_MASK_1, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* 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 */ /* 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 */ /* 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 */ /* 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 */ /* 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_0,
WLAN_CFG_TX_MON_RING_MASK_1, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* 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 */ /* 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 */ /* 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 */ /* 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 */ /* 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_0,
WLAN_CFG_TX_MON_RING_MASK_1, WLAN_CFG_TX_MON_RING_MASK_1,
0, 0, 0, 0, 0, 0, 0, 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 */ /* 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 */ /* 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 */ /* 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 */ /* 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_0,
WLAN_CFG_TX_MON_RING_MASK_1, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* 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 */ /* 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 */ /* 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 */ /* 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 */ /* 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, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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 */ /* 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 */ /* 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 */ /* 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, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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 */ /* 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 */ /* 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 */ /* 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, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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 */ /* 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 */ /* 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 */ /* 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, { 0, 0, 0, 0,
WLAN_CFG_RX_RING_MASK_0, WLAN_CFG_RX_RING_MASK_0,
WLAN_CFG_RX_RING_MASK_1, WLAN_CFG_RX_RING_MASK_1,
WLAN_CFG_RX_RING_MASK_2, WLAN_CFG_RX_RING_MASK_2 |
WLAN_CFG_RX_RING_MASK_3, 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 */ /* rx mon ring masks */
{ 0, 0, 0, { 0, 0, 0,
WLAN_CFG_RX_MON_RING_MASK_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, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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 */ /* 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 */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, WLAN_CFG_UMAC_RESET_INTR_MASK_0, {0, 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},
@@ -2386,14 +2353,11 @@ static struct dp_int_mask_assignment dp_mask_assignment[NUM_INTERRUPT_COMBINATIO
WLAN_CFG_TX_MON_RING_MASK_1, WLAN_CFG_TX_MON_RING_MASK_1,
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},
/* ppe ds wbm release ring ring mask */ /* 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 */ /* 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 */ /* 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 */ /* umac reset mask */
{0, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0,
WLAN_CFG_UMAC_RESET_INTR_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 #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 #endif
/* g_wlan_srng_cfg[] - Per ring_type specific configuration */ /* 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 #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, void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
int num_dp_msi, int num_dp_msi,
int interrupt_mode, 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 i = 0;
int interrupt_index = 0; int interrupt_index = 0;
int int_host2rxdma_mon_ring_mask; struct dp_int_mask_assignment *mask_assignment;
bool host2rxmon_mask_set = false;
bool txmon_hw_support = false;
if(interrupt_mode == DP_INTR_INTEGRATED) { if(interrupt_mode == DP_INTR_INTEGRATED) {
interrupt_index = 0; 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++) { for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
wlan_cfg_ctx->int_tx_ring_mask[i] = if (!wlan_cfg_get_dp_soc_is_ppeds_enabled(wlan_cfg_ctx))
dp_mask_assignment[interrupt_index].tx_ring_mask[i]; mask_assignment = &dp_mask_assignment[interrupt_index];
wlan_cfg_ctx->int_rx_mon_ring_mask[i] = else if (interrupt_index == 8)
dp_mask_assignment[interrupt_index].rx_mon_ring_mask[i]; mask_assignment = &dp_ds_mask_assignment_8msi;
wlan_cfg_ctx->int_rx_err_ring_mask[i] = else if (interrupt_index == 9)
dp_mask_assignment[interrupt_index].rx_err_ring_mask[i]; mask_assignment = &dp_ds_mask_assignment_9msi;
wlan_cfg_ctx->int_rx_wbm_rel_ring_mask[i] = else
dp_mask_assignment[interrupt_index].rx_wbm_rel_ring_mask[i]; mask_assignment = &dp_mask_assignment[interrupt_index];
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];
txmon_hw_support = wlan_cfg_get_txmon_hw_support(wlan_cfg_ctx); wlan_cfg_mask_assignment(wlan_cfg_ctx, mask_assignment,
if (txmon_hw_support) { interrupt_index, i, is_monitor_mode);
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];
} }
} }
#endif #endif