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:

committed by
Madan Koyyalamudi

parent
503a5adb9c
commit
d7637a443d
@@ -2722,10 +2722,17 @@ done:
|
|||||||
qdf_nbuf_free(nbuf);
|
qdf_nbuf_free(nbuf);
|
||||||
}
|
}
|
||||||
} else if (wbm_err_info.reo_psh_rsn
|
} 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,
|
dp_rx_err_route_hdl(soc, nbuf, peer,
|
||||||
rx_tlv_hdr,
|
rx_tlv_hdr,
|
||||||
HAL_RX_WBM_ERR_SRC_REO);
|
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 ==
|
} else if (wbm_err_info.wbm_err_src ==
|
||||||
HAL_RX_WBM_ERR_SRC_RXDMA) {
|
HAL_RX_WBM_ERR_SRC_RXDMA) {
|
||||||
if (wbm_err_info.rxdma_psh_rsn
|
if (wbm_err_info.rxdma_psh_rsn
|
||||||
@@ -2790,10 +2797,23 @@ done:
|
|||||||
wbm_err_info.rxdma_err_code);
|
wbm_err_info.rxdma_err_code);
|
||||||
}
|
}
|
||||||
} else if (wbm_err_info.rxdma_psh_rsn
|
} 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,
|
dp_rx_err_route_hdl(soc, nbuf, peer,
|
||||||
rx_tlv_hdr,
|
rx_tlv_hdr,
|
||||||
HAL_RX_WBM_ERR_SRC_RXDMA);
|
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 {
|
} else {
|
||||||
/* Should not come here */
|
/* Should not come here */
|
||||||
qdf_assert(0);
|
qdf_assert(0);
|
||||||
|
@@ -6628,6 +6628,7 @@ dp_print_soc_rx_stats(struct dp_soc *soc)
|
|||||||
soc->stats.rx.rxdma2rel_route_drop);
|
soc->stats.rx.rxdma2rel_route_drop);
|
||||||
DP_PRINT_STATS("Reo2rel route drop:%d",
|
DP_PRINT_STATS("Reo2rel route drop:%d",
|
||||||
soc->stats.rx.reo2rel_route_drop);
|
soc->stats.rx.reo2rel_route_drop);
|
||||||
|
DP_PRINT_STATS("Rx Flush count:%d", soc->stats.rx.err.rx_flush_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEATURE_TSO_STATS
|
#ifdef FEATURE_TSO_STATS
|
||||||
|
@@ -1080,6 +1080,8 @@ struct dp_soc_stats {
|
|||||||
uint32_t pn_in_dest_check_fail;
|
uint32_t pn_in_dest_check_fail;
|
||||||
/* MSDU len err count */
|
/* MSDU len err count */
|
||||||
uint32_t msdu_len_err;
|
uint32_t msdu_len_err;
|
||||||
|
/* Rx flush count */
|
||||||
|
uint32_t rx_flush_count;
|
||||||
} err;
|
} err;
|
||||||
|
|
||||||
/* packet count per core - per ring */
|
/* packet count per core - per ring */
|
||||||
|
@@ -1443,6 +1443,7 @@ enum hal_rx_wbm_reo_push_reason {
|
|||||||
enum hal_rx_wbm_rxdma_push_reason {
|
enum hal_rx_wbm_rxdma_push_reason {
|
||||||
HAL_RX_WBM_RXDMA_PSH_RSN_ERROR = 0,
|
HAL_RX_WBM_RXDMA_PSH_RSN_ERROR = 0,
|
||||||
HAL_RX_WBM_RXDMA_PSH_RSN_ROUTE,
|
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,
|
static inline void hal_rx_dump_mpdu_start_tlv(struct rx_mpdu_start *mpdu_start,
|
||||||
|
Reference in New Issue
Block a user