diff --git a/dp/wifi3.0/monitor/dp_rx_mon.c b/dp/wifi3.0/monitor/dp_rx_mon.c index db1149b5b8..d80e34575b 100644 --- a/dp/wifi3.0/monitor/dp_rx_mon.c +++ b/dp/wifi3.0/monitor/dp_rx_mon.c @@ -83,10 +83,11 @@ dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev, struct cdp_rx_indication_ppdu *cdp_rx_ppdu) { struct dp_peer *peer; - struct dp_ast_entry *ast_entry; struct dp_soc *soc = pdev->soc; - uint32_t ast_index; int chain; + uint16_t sw_peer_id; + struct mon_rx_user_status *rx_user_status; + uint32_t num_users = ppdu_info->com_info.num_users; cdp_rx_ppdu->ppdu_id = ppdu_info->com_info.ppdu_id; cdp_rx_ppdu->timestamp = ppdu_info->rx_status.tsft; @@ -116,23 +117,11 @@ dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev, QDF_MON_STATUS_DCM_SHIFT) & 0x1; } + qdf_assert_always(num_users <= CDP_MU_MAX_USERS); dp_rx_mon_handle_cfr_mu_info(pdev, ppdu_info, cdp_rx_ppdu); - ast_index = ppdu_info->rx_status.ast_index; - if (ast_index >= wlan_cfg_get_max_ast_idx(soc->wlan_cfg_ctx)) { - cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; - cdp_rx_ppdu->num_users = 0; - return; - } - - ast_entry = soc->ast_table[ast_index]; - if (!ast_entry || ast_entry->peer_id == HTT_INVALID_PEER) { - cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; - cdp_rx_ppdu->num_users = 0; - return; - } - - peer = dp_peer_get_ref_by_id(soc, ast_entry->peer_id, - DP_MOD_ID_RX_PPDU_STATS); + rx_user_status = &ppdu_info->rx_user_status[num_users - 1]; + sw_peer_id = rx_user_status->sw_peer_id; + peer = dp_peer_get_ref_by_id(soc, sw_peer_id, DP_MOD_ID_RX_PPDU_STATS); if (!peer) { cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; cdp_rx_ppdu->num_users = 0; @@ -141,7 +130,7 @@ dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev, cdp_rx_ppdu->peer_id = peer->peer_id; cdp_rx_ppdu->vdev_id = peer->vdev->vdev_id; - cdp_rx_ppdu->num_users = ppdu_info->com_info.num_users; + cdp_rx_ppdu->num_users = num_users; } bool