qcacmn: Add handling for rxdma_rx_flush and invalid psh_rsn

In WBM error path, add handling for packets received with
rxdma_psh_rsn as rxdma_rx_flush. Also add assert for packets
received with an invalid push reason.

Change-Id: I4e445d52f00bbbdca358225aef488da0e8dccaa7
CRs-Fixed: 2978262
This commit is contained in:
Chaithanya Garrepalli
2021-07-02 13:32:55 +05:30
committed by Madan Koyyalamudi
parent 503a5adb9c
commit d7637a443d
4 changed files with 26 additions and 2 deletions

View File

@@ -2722,10 +2722,17 @@ done:
qdf_nbuf_free(nbuf);
}
} else if (wbm_err_info.reo_psh_rsn
== HAL_RX_WBM_REO_PSH_RSN_ROUTE)
== HAL_RX_WBM_REO_PSH_RSN_ROUTE) {
dp_rx_err_route_hdl(soc, nbuf, peer,
rx_tlv_hdr,
HAL_RX_WBM_ERR_SRC_REO);
} else {
/* should not enter here */
dp_rx_err_alert("invalid reo push reason %u",
wbm_err_info.reo_psh_rsn);
qdf_nbuf_free(nbuf);
qdf_assert_always(0);
}
} else if (wbm_err_info.wbm_err_src ==
HAL_RX_WBM_ERR_SRC_RXDMA) {
if (wbm_err_info.rxdma_psh_rsn
@@ -2790,10 +2797,23 @@ done:
wbm_err_info.rxdma_err_code);
}
} else if (wbm_err_info.rxdma_psh_rsn
== HAL_RX_WBM_RXDMA_PSH_RSN_ROUTE)
== HAL_RX_WBM_RXDMA_PSH_RSN_ROUTE) {
dp_rx_err_route_hdl(soc, nbuf, peer,
rx_tlv_hdr,
HAL_RX_WBM_ERR_SRC_RXDMA);
} else if (wbm_err_info.rxdma_psh_rsn
== HAL_RX_WBM_RXDMA_PSH_RSN_FLUSH) {
dp_rx_err_err("rxdma push reason %u",
wbm_err_info.rxdma_psh_rsn);
DP_STATS_INC(soc, rx.err.rx_flush_count, 1);
qdf_nbuf_free(nbuf);
} else {
/* should not enter here */
dp_rx_err_alert("invalid rxdma push reason %u",
wbm_err_info.rxdma_psh_rsn);
qdf_nbuf_free(nbuf);
qdf_assert_always(0);
}
} else {
/* Should not come here */
qdf_assert(0);

View File

@@ -6628,6 +6628,7 @@ dp_print_soc_rx_stats(struct dp_soc *soc)
soc->stats.rx.rxdma2rel_route_drop);
DP_PRINT_STATS("Reo2rel route drop:%d",
soc->stats.rx.reo2rel_route_drop);
DP_PRINT_STATS("Rx Flush count:%d", soc->stats.rx.err.rx_flush_count);
}
#ifdef FEATURE_TSO_STATS

View File

@@ -1080,6 +1080,8 @@ struct dp_soc_stats {
uint32_t pn_in_dest_check_fail;
/* MSDU len err count */
uint32_t msdu_len_err;
/* Rx flush count */
uint32_t rx_flush_count;
} err;
/* packet count per core - per ring */

View File

@@ -1443,6 +1443,7 @@ enum hal_rx_wbm_reo_push_reason {
enum hal_rx_wbm_rxdma_push_reason {
HAL_RX_WBM_RXDMA_PSH_RSN_ERROR = 0,
HAL_RX_WBM_RXDMA_PSH_RSN_ROUTE,
HAL_RX_WBM_RXDMA_PSH_RSN_FLUSH,
};
static inline void hal_rx_dump_mpdu_start_tlv(struct rx_mpdu_start *mpdu_start,