diff --git a/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c b/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c index 1814cf5fd051..a4776fea1f62 100644 --- a/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c +++ b/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c @@ -736,20 +736,13 @@ static void pkt_capture_rx_mon_get_rx_status(void *context, void *dp_soc, struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)desc; struct rx_msdu_start *msdu_start = &pkt_tlvs->msdu_start_tlv.rx_msdu_start; - struct connection_info info[MAX_NUMBER_OF_CONC_CONNECTIONS]; - struct wlan_objmgr_psoc *psoc; struct wlan_objmgr_vdev *vdev = context; struct pkt_capture_vdev_priv *vdev_priv; - uint32_t conn_count; - uint8_t vdev_id; - int i; - - rx_status->rtap_flags |= pkt_capture_get_rx_rtap_flags(rx_tlv_hdr); - rx_status->ant_signal_db = hal_rx_msdu_start_get_rssi(rx_tlv_hdr); - rx_status->rssi_comb = hal_rx_msdu_start_get_rssi(rx_tlv_hdr); - rx_status->tsft = msdu_start->ppdu_start_timestamp; - - vdev_id = wlan_vdev_get_id(vdev); + uint8_t primary_chan_num; + uint32_t center_chan_freq; + struct wlan_objmgr_psoc *psoc; + struct wlan_objmgr_pdev *pdev; + enum reg_wifi_band band; psoc = wlan_vdev_get_psoc(vdev); if (!psoc) { @@ -757,22 +750,31 @@ static void pkt_capture_rx_mon_get_rx_status(void *context, void *dp_soc, return; } + rx_status->rtap_flags |= pkt_capture_get_rx_rtap_flags(rx_tlv_hdr); + rx_status->ant_signal_db = hal_rx_msdu_start_get_rssi(rx_tlv_hdr); + rx_status->rssi_comb = hal_rx_msdu_start_get_rssi(rx_tlv_hdr); + rx_status->tsft = msdu_start->ppdu_start_timestamp; + primary_chan_num = hal_rx_msdu_start_get_freq(rx_tlv_hdr); + center_chan_freq = hal_rx_msdu_start_get_freq(rx_tlv_hdr) >> 16; + rx_status->chan_num = primary_chan_num; + band = wlan_reg_freq_to_band(center_chan_freq); + + pdev = wlan_objmgr_get_pdev_by_id(psoc, 0, WLAN_PKT_CAPTURE_ID); + if (!pdev) { + pkt_capture_err("Failed to get pdev"); + return; + } + + rx_status->chan_freq = + wlan_reg_chan_band_to_freq(pdev, primary_chan_num, BIT(band)); + wlan_objmgr_pdev_release_ref(pdev, WLAN_PKT_CAPTURE_ID); + vdev_priv = pkt_capture_vdev_get_priv(vdev); if (qdf_unlikely(!vdev)) return; rx_status->rssi_comb = vdev_priv->rx_avg_rssi; - /* Update the connected channel info from policy manager */ - conn_count = policy_mgr_get_connection_info(psoc, info); - for (i = 0; i < conn_count; i++) { - if (info[i].vdev_id == vdev_id) { - rx_status->chan_freq = info[0].ch_freq; - rx_status->chan_num = info[0].channel; - break; - } - } - if (rx_status->chan_freq > CHANNEL_FREQ_5150) rx_status->ofdm_flag = 1; else