qcacmn: Keep rx_refill_buf_ring using index pdev->lmac_id under MCL case
Fix static analysis issue of rx_refill_buf_ring buffer overflow. rx_refill_buf_ring length is different for WIN/MCL. For MCL length is 1, WIN is 3. So rx_refill_buf_ring should always use index pdev->lmac_id to replenish rx buffer for different MACs under MCL. Change-Id: I00af069c09c01a81ae4aa54bad5beb79dc6fcff5 CRs-Fixed: 2703683
Tento commit je obsažen v:
@@ -1673,8 +1673,14 @@ static int dp_process_lmac_rings(struct dp_intr *int_ctx, int total_budget)
|
|||||||
(1 << mac_for_pdev)) {
|
(1 << mac_for_pdev)) {
|
||||||
union dp_rx_desc_list_elem_t *desc_list = NULL;
|
union dp_rx_desc_list_elem_t *desc_list = NULL;
|
||||||
union dp_rx_desc_list_elem_t *tail = NULL;
|
union dp_rx_desc_list_elem_t *tail = NULL;
|
||||||
struct dp_srng *rx_refill_buf_ring =
|
struct dp_srng *rx_refill_buf_ring;
|
||||||
&soc->rx_refill_buf_ring[mac_for_pdev];
|
|
||||||
|
if (wlan_cfg_per_pdev_lmac_ring(soc->wlan_cfg_ctx))
|
||||||
|
rx_refill_buf_ring =
|
||||||
|
&soc->rx_refill_buf_ring[mac_for_pdev];
|
||||||
|
else
|
||||||
|
rx_refill_buf_ring =
|
||||||
|
&soc->rx_refill_buf_ring[pdev->lmac_id];
|
||||||
|
|
||||||
intr_stats->num_host2rxdma_ring_masks++;
|
intr_stats->num_host2rxdma_ring_masks++;
|
||||||
DP_STATS_INC(pdev, replenish.low_thresh_intrs,
|
DP_STATS_INC(pdev, replenish.low_thresh_intrs,
|
||||||
|
@@ -2264,7 +2264,10 @@ dp_rxdma_err_process(struct dp_intr *int_ctx, struct dp_soc *soc,
|
|||||||
dp_srng_access_end(int_ctx, soc, err_dst_srng);
|
dp_srng_access_end(int_ctx, soc, err_dst_srng);
|
||||||
|
|
||||||
if (rx_bufs_used) {
|
if (rx_bufs_used) {
|
||||||
dp_rxdma_srng = &soc->rx_refill_buf_ring[mac_id];
|
if (wlan_cfg_per_pdev_lmac_ring(soc->wlan_cfg_ctx))
|
||||||
|
dp_rxdma_srng = &soc->rx_refill_buf_ring[mac_id];
|
||||||
|
else
|
||||||
|
dp_rxdma_srng = &soc->rx_refill_buf_ring[pdev->lmac_id];
|
||||||
rx_desc_pool = &soc->rx_desc_buf[mac_id];
|
rx_desc_pool = &soc->rx_desc_buf[mac_id];
|
||||||
|
|
||||||
dp_rx_buffers_replenish(soc, mac_id, dp_rxdma_srng,
|
dp_rx_buffers_replenish(soc, mac_id, dp_rxdma_srng,
|
||||||
|
Odkázat v novém úkolu
Zablokovat Uživatele