From 3592e1c973f2e85e91521139a7f18ba0fa98f9c8 Mon Sep 17 00:00:00 2001 From: Vulupala Shashank Reddy Date: Mon, 5 Apr 2021 17:41:16 +0530 Subject: [PATCH] qcacld-3.0: Fix Frequency for data rx packets in packet capture mode Currently centre frequency filled in data rx packets for packet capture mode. Need to fill base frequency so filling frequency from connection policy manager. Change-Id: I79abe4e8a27a853c156eff8618be2f280fc54e78 CRs-Fixed: 2942107 --- .../core/src/wlan_pkt_capture_data_txrx.c | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 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 1d89abd8702b..71d84ca23ce2 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 @@ -726,33 +726,57 @@ static uint8_t pkt_capture_get_rx_rtap_flags(void *ptr_rx_tlv_hdr) #define CHANNEL_FREQ_5150 5150 /** * pkt_capture_rx_mon_get_rx_status() - Get rx status + * @context: objmgr vdev * @psoc: dp_soc handle * @desc: Pointer to struct rx_pkt_tlvs * @rx_status: Pointer to struct mon_rx_status * * Return: none */ -static void pkt_capture_rx_mon_get_rx_status(void *psoc, void *desc, +static void pkt_capture_rx_mon_get_rx_status(void *context, void *dp_soc, + void *desc, struct mon_rx_status *rx_status) { uint8_t *rx_tlv_hdr = desc; 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; + 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->chan_freq = hal_rx_msdu_start_get_freq(rx_tlv_hdr) >> 16; - rx_status->chan_num = cds_freq_to_chan(rx_status->chan_freq); 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); + + psoc = wlan_vdev_get_psoc(vdev); + if (!psoc) { + pkt_capture_err("Failed to get psoc"); + return; + } + + /* 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 rx_status->cck_flag = 1; - pkt_capture_rx_get_phy_info(psoc, desc, rx_status); + pkt_capture_rx_get_phy_info(dp_soc, desc, rx_status); } #endif @@ -945,7 +969,8 @@ pkt_capture_rx_data_cb( */ /* need to update this to fill rx_status*/ - pkt_capture_rx_mon_get_rx_status(psoc, rx_tlv_hdr, &rx_status); + pkt_capture_rx_mon_get_rx_status(context, psoc, + rx_tlv_hdr, &rx_status); rx_status.chan_noise_floor = NORMALIZED_TO_NOISE_FLOOR; rx_status.tx_status = status; rx_status.tx_retry_cnt = tx_retry_cnt;