diff --git a/dp/wifi3.0/dp_rx_mon_status.c b/dp/wifi3.0/dp_rx_mon_status.c index d232e74e990b..cf31a445bb91 100644 --- a/dp/wifi3.0/dp_rx_mon_status.c +++ b/dp/wifi3.0/dp_rx_mon_status.c @@ -2039,10 +2039,10 @@ dp_rx_pdev_mon_status_desc_pool_init(struct dp_pdev *pdev, uint32_t mac_id) qdf_mem_zero(&pdev->ppdu_info, sizeof(pdev->ppdu_info)); /* - * Set ppdu_id to HAL_INVALID_PPDU_ID in order to avoid ppdu_id + * Set last_ppdu_id to HAL_INVALID_PPDU_ID in order to avoid ppdu_id * match with '0' ppdu_id from monitor status ring */ - pdev->ppdu_info.com_info.ppdu_id = HAL_INVALID_PPDU_ID; + pdev->ppdu_info.com_info.last_ppdu_id = HAL_INVALID_PPDU_ID; qdf_mem_zero(&pdev->rx_mon_stats, sizeof(pdev->rx_mon_stats)); diff --git a/hal/wifi3.0/hal_api_mon.h b/hal/wifi3.0/hal_api_mon.h index 890725ebfdb7..3ed0268816fc 100644 --- a/hal/wifi3.0/hal_api_mon.h +++ b/hal/wifi3.0/hal_api_mon.h @@ -480,6 +480,7 @@ struct hal_rx_ppdu_common_info { uint32_t mpdu_cnt_fcs_ok; uint32_t mpdu_cnt_fcs_err; uint32_t mpdu_fcs_ok_bitmap[HAL_RX_NUM_WORDS_PER_PPDU_BITMAP]; + uint32_t last_ppdu_id; uint32_t mpdu_cnt; uint8_t num_users; }; diff --git a/hal/wifi3.0/hal_generic_api.h b/hal/wifi3.0/hal_generic_api.h index 00405bd72d56..689d5ef69a48 100644 --- a/hal/wifi3.0/hal_generic_api.h +++ b/hal/wifi3.0/hal_generic_api.h @@ -568,17 +568,19 @@ hal_rx_status_get_tlv_info_generic(void *rx_tlv_hdr, void *ppduinfo, case WIFIRX_PPDU_START_E: { - if (qdf_likely(ppdu_info->com_info.ppdu_id != + if (qdf_unlikely(ppdu_info->com_info.last_ppdu_id == HAL_RX_GET(rx_tlv, RX_PPDU_START_0, PHY_PPDU_ID))) - /* Reset ppdu_info before processing the ppdu */ - qdf_mem_zero(ppdu_info, - sizeof(struct hal_rx_ppdu_info)); - else - qdf_assert_always(0); + hal_err("Matching ppdu_id(%u) detected", + ppdu_info->com_info.last_ppdu_id); - ppdu_info->com_info.ppdu_id = - HAL_RX_GET(rx_tlv, RX_PPDU_START_0, - PHY_PPDU_ID); + /* Reset ppdu_info before processing the ppdu */ + qdf_mem_zero(ppdu_info, + sizeof(struct hal_rx_ppdu_info)); + + ppdu_info->com_info.last_ppdu_id = + ppdu_info->com_info.ppdu_id = + HAL_RX_GET(rx_tlv, RX_PPDU_START_0, + PHY_PPDU_ID); /* channel number is set in PHY meta data */ ppdu_info->rx_status.chan_num =