From e86a3e3bf4b86287889a1f26baff8f987dd6d01d Mon Sep 17 00:00:00 2001 From: Vulupala Shashank Reddy Date: Tue, 29 Jun 2021 19:46:14 +0530 Subject: [PATCH] qcacld-3.0: Fix channel freq for EAPOL M1 in packet capture Some times there is delay in update of channel freq in vdev because of which M1 channel freq is zero during initial connection. Fill freq from msdu start from rx_pkt_tlv. Change-Id: Ia0a8f61c9113fbe5bc3ad932dcb67111b86629af CRs-Fixed: 2964512 --- .../core/src/wlan_pkt_capture_data_txrx.c | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) 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