qcacmn: Enable timer based low threshold interrupt

Enable timer based low threshold interrupt for waikiki monitor
tx/rx source rings

Change-Id: I8c422b4157d0077cfa211d1b754fecbb2b98fad6
这个提交包含在:
Naga
2021-12-07 14:54:30 +05:30
提交者 Madan Koyyalamudi
父节点 6219f3d454
当前提交 984bfae507
修改 8 个文件,包含 394 行新增25 行删除

查看文件

@@ -1450,6 +1450,10 @@ static int dp_srng_calculate_msi_group(struct dp_soc *soc,
grp_mask = &soc->wlan_cfg_ctx->int_host2rxdma_mon_ring_mask[0];
break;
case TX_MONITOR_BUF:
grp_mask = &soc->wlan_cfg_ctx->int_host2txmon_ring_mask[0];
break;
case TCL_DATA:
/* CMD_CREDIT_RING is used as command in 8074 and credit in 9000 */
case TCL_CMD_CREDIT:
@@ -2402,8 +2406,7 @@ static int dp_process_lmac_rings(struct dp_intr *int_ctx, int total_budget)
remaining_quota = budget;
}
if (int_ctx->host2rxdma_ring_mask &
(1 << mac_for_pdev)) {
if (int_ctx->host2rxdma_ring_mask & (1 << mac_for_pdev)) {
union dp_rx_desc_list_elem_t *desc_list = NULL;
union dp_rx_desc_list_elem_t *tail = NULL;
struct dp_srng *rx_refill_buf_ring;
@@ -2416,15 +2419,21 @@ static int dp_process_lmac_rings(struct dp_intr *int_ctx, int total_budget)
&soc->rx_refill_buf_ring[pdev->lmac_id];
intr_stats->num_host2rxdma_ring_masks++;
DP_STATS_INC(pdev, replenish.low_thresh_intrs,
1);
DP_STATS_INC(pdev, replenish.low_thresh_intrs, 1);
dp_rx_buffers_replenish(soc, mac_for_pdev,
rx_refill_buf_ring,
&soc->rx_desc_buf[mac_for_pdev],
0, &desc_list, &tail);
}
}
if (int_ctx->host2rxdma_mon_ring_mask)
dp_rx_mon_buf_refill(int_ctx);
if (int_ctx->host2txmon_ring_mask)
dp_tx_mon_buf_refill(int_ctx);
budget_done:
return total_budget - budget;
}
@@ -2978,6 +2987,9 @@ static void dp_soc_interrupt_map_calculate_msi(struct dp_soc *soc,
wlan_cfg_get_tx_ring_near_full_mask(soc->wlan_cfg_ctx,
intr_ctx_num);
int host2txmon_ring_mask =
wlan_cfg_get_host2txmon_ring_mask(soc->wlan_cfg_ctx,
intr_ctx_num);
unsigned int vector =
(intr_ctx_num % msi_vector_count) + msi_vector_start;
int num_irq = 0;
@@ -2988,7 +3000,7 @@ static void dp_soc_interrupt_map_calculate_msi(struct dp_soc *soc,
rx_wbm_rel_ring_mask | reo_status_ring_mask | rxdma2host_ring_mask |
host2rxdma_ring_mask | host2rxdma_mon_ring_mask |
rx_near_full_grp_1_mask | rx_near_full_grp_2_mask |
tx_ring_near_full_mask)
tx_ring_near_full_mask | host2txmon_ring_mask)
irq_id_map[num_irq++] =
pld_get_msi_irq(soc->osdev->dev, vector);
@@ -3077,6 +3089,8 @@ static void dp_soc_interrupt_detach(struct cdp_soc_t *txrx_soc)
soc->intr_ctx[i].rx_near_full_grp_1_mask = 0;
soc->intr_ctx[i].rx_near_full_grp_2_mask = 0;
soc->intr_ctx[i].tx_ring_near_full_mask = 0;
soc->intr_ctx[i].tx_mon_ring_mask = 0;
soc->intr_ctx[i].host2txmon_ring_mask = 0;
hif_event_history_deinit(soc->hif_handle, i);
qdf_lro_deinit(soc->intr_ctx[i].lro_ctx);
@@ -3145,12 +3159,13 @@ static QDF_STATUS dp_soc_interrupt_attach(struct cdp_soc_t *txrx_soc)
int tx_ring_near_full_mask =
wlan_cfg_get_tx_ring_near_full_mask(soc->wlan_cfg_ctx,
i);
int host2txmon_ring_mask =
wlan_cfg_get_host2txmon_ring_mask(soc->wlan_cfg_ctx, i);
soc->intr_ctx[i].dp_intr_id = i;
soc->intr_ctx[i].tx_ring_mask = tx_mask;
soc->intr_ctx[i].rx_ring_mask = rx_mask;
soc->intr_ctx[i].rx_mon_ring_mask = rx_mon_mask;
soc->intr_ctx[i].tx_mon_ring_mask = tx_mon_ring_mask;
soc->intr_ctx[i].rx_err_ring_mask = rx_err_ring_mask;
soc->intr_ctx[i].rxdma2host_ring_mask = rxdma2host_ring_mask;
soc->intr_ctx[i].host2rxdma_ring_mask = host2rxdma_ring_mask;
@@ -3164,6 +3179,8 @@ static QDF_STATUS dp_soc_interrupt_attach(struct cdp_soc_t *txrx_soc)
rx_near_full_grp_2_mask;
soc->intr_ctx[i].tx_ring_near_full_mask =
tx_ring_near_full_mask;
soc->intr_ctx[i].tx_mon_ring_mask = tx_mon_ring_mask;
soc->intr_ctx[i].host2txmon_ring_mask = host2txmon_ring_mask;
soc->intr_ctx[i].soc = soc;
@@ -14282,6 +14299,7 @@ static void dp_soc_cfg_init(struct dp_soc *soc)
soc->ast_offload_support = AST_OFFLOAD_ENABLE_STATUS;
soc->mec_fw_offload = FW_MEC_FW_OFFLOAD_ENABLED;
soc->num_hw_dscp_tid_map = HAL_MAX_HW_DSCP_TID_V2_MAPS;
wlan_cfg_set_txmon_hw_support(soc->wlan_cfg_ctx, true);
break;
default:
qdf_print("%s: Unknown tgt type %d\n", __func__, target_type);