qcacmn: Enable wbm2sw_release ring for ppe2tcl ring

Enable wbm2sw_release ring for ppe2tcl ring to
handle tx completions

Change-Id: I38e81bb46e376e3f059f321454aa4d241e6aadb7
CRs-Fixed: 3309444
Este commit está contenido en:
Pavankumar Nandeshwar
2022-09-29 06:08:41 -07:00
cometido por Madan Koyyalamudi
padre 84e3277bc8
commit ab2bd061c2
Se han modificado 14 ficheros con 354 adiciones y 17 borrados

Ver fichero

@@ -95,6 +95,8 @@
#define WLAN_CFG_UMAC_RESET_INTR_MASK_0 0x1
#define WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_0 0x1
struct dp_int_mask_assignment {
uint8_t tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
uint8_t rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
@@ -111,6 +113,7 @@ struct dp_int_mask_assignment {
uint8_t tx_ring_near_full_irq_mask[WLAN_CFG_INT_NUM_CONTEXTS];
uint8_t host2txmon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
uint8_t tx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
uint8_t ppeds_wbm_release_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
uint8_t umac_reset_intr_mask[WLAN_CFG_INT_NUM_CONTEXTS];
};
@@ -1258,6 +1261,9 @@ 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, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_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},
@@ -1335,6 +1341,9 @@ 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, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_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},
@@ -1420,6 +1429,9 @@ 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, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_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},
@@ -1505,6 +1517,9 @@ 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, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_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},
@@ -1590,6 +1605,9 @@ 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, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_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},
@@ -1675,6 +1693,9 @@ 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, WLAN_CFG_PPEDS_WBM_RELEASE_RING_MASK_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},
@@ -1760,6 +1781,9 @@ 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 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},
/* 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},
@@ -1836,6 +1860,9 @@ 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},
/* 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},
/* 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},
@@ -1912,6 +1939,9 @@ 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},
/* 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},
/* 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},
@@ -1988,6 +2018,9 @@ 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},
/* 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},
/* 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},
@@ -2064,6 +2097,9 @@ 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},
/* 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},
/* 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},
@@ -2140,6 +2176,9 @@ 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},
/* 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},
/* 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},
@@ -2348,6 +2387,8 @@ void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
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];
if (is_monitor_mode) {
wlan_cfg_ctx->int_rx_ring_mask[i] = 0;
wlan_cfg_ctx->int_rxdma2host_ring_mask[i] = 0;
@@ -2503,6 +2544,8 @@ wlan_soc_ppe_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
wlan_cfg_ctx->ppe_release_ring = cfg_get(psoc,
CFG_DP_PPE_RELEASE_RING);
wlan_cfg_ctx->ppe_num_tx_desc = cfg_get(psoc, CFG_DP_PPEDS_TX_DESC);
wlan_cfg_ctx->ppe_tx_comp_napi_budget =
cfg_get(psoc, CFG_DP_PPEDS_TX_CMP_NAPI_BUDGET);
}
#else
static inline void
@@ -4005,6 +4048,12 @@ wlan_cfg_get_dp_soc_ppe_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
{
return cfg->ppe_num_tx_desc;
}
int
wlan_cfg_get_dp_soc_ppe_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt *cfg)
{
return cfg->ppe_tx_comp_napi_budget;
}
#endif
void