From a24579c66f4aa44ace37158f8472eec13488dc1d Mon Sep 17 00:00:00 2001 From: Nisha Menon Date: Fri, 10 Jul 2020 13:40:36 -0700 Subject: [PATCH] qcacmn: Remove unnecessary msdu count check in mdpu desc Remove uncessary msdu count check against msdu count in mpdu desc info while processing REO Rx err pkts. As per h/w team msdu count can be obtained from msdu link desc instead of mpdu desc info. SOC level Rx err stat rx.err.msdu_count_mismatch is incremented to log this condition. Change-Id: I4f7d2df7335778f2f2d28e542da17fc7f6970009 CRs-Fixed: 2729693 --- dp/wifi3.0/dp_rx_err.c | 3 ++- dp/wifi3.0/dp_types.h | 2 ++ hal/wifi3.0/hal_rx.h | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c index c31eff840a71..32b7db31230b 100644 --- a/dp/wifi3.0/dp_rx_err.c +++ b/dp/wifi3.0/dp_rx_err.c @@ -571,7 +571,8 @@ more_msdu_link_desc: dp_rx_link_desc_return_by_addr(soc, buf_addr_info, HAL_BM_ACTION_PUT_IN_IDLE_LIST); - QDF_BUG(msdu_processed == mpdu_desc_info->msdu_count); + if (qdf_unlikely(msdu_processed != mpdu_desc_info->msdu_count)) + DP_STATS_INC(soc, rx.err.msdu_count_mismatch, 1); return rx_bufs_used; } diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 8b48d654bef4..d034f298fb81 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -847,6 +847,8 @@ struct dp_soc_stats { uint32_t reo_err_oor_sg_count; /* RX msdu rejected count on delivery to vdev stack_fn*/ uint32_t rejected; + /* Incorrect msdu count in MPDU desc info */ + uint32_t msdu_count_mismatch; } err; /* packet count per core - per ring */ diff --git a/hal/wifi3.0/hal_rx.h b/hal/wifi3.0/hal_rx.h index a1805038a213..a9efc7fa4a71 100644 --- a/hal/wifi3.0/hal_rx.h +++ b/hal/wifi3.0/hal_rx.h @@ -1833,6 +1833,9 @@ static inline void hal_rx_msdu_list_get(hal_soc_handle_t hal_soc_hdl, /* num_msdus received in mpdu descriptor may be incorrect * sometimes due to HW issue. Check msdu buffer address also */ + if (!i && (HAL_RX_BUFFER_ADDR_31_0_GET( + &msdu_details[i].buffer_addr_info_details) == 0)) + break; if (HAL_RX_BUFFER_ADDR_31_0_GET( &msdu_details[i].buffer_addr_info_details) == 0) { /* set the last msdu bit in the prev msdu_desc_info */