diff --git a/drivers/staging/qcacld-3.0/components/pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h b/drivers/staging/qcacld-3.0/components/pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h index e933c47ce78e..c56ff2787944 100644 --- a/drivers/staging/qcacld-3.0/components/pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h +++ b/drivers/staging/qcacld-3.0/components/pkt_capture/core/inc/wlan_pkt_capture_data_txrx.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -42,6 +43,8 @@ #define IEEE80211_RADIOTAP_HE_DATA1_STBC_KNOWN 0x0200 #endif +#define HAL_TX_PKT_TYPE_11B 1 + /** * pkt_capture_data_process_type - data pkt types to process * for packet capture mode diff --git a/drivers/staging/qcacld-3.0/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c b/drivers/staging/qcacld-3.0/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c index 6cebfe5481b9..e8c8682737c3 100644 --- a/drivers/staging/qcacld-3.0/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c +++ b/drivers/staging/qcacld-3.0/components/pkt_capture/core/src/wlan_pkt_capture_data_txrx.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -115,6 +115,7 @@ static unsigned char pkt_capture_get_tx_rate( case 0x0: ret = 0x16; *preamble = LONG_PREAMBLE; + break; case 0x1: ret = 0xB; *preamble = LONG_PREAMBLE; @@ -179,12 +180,14 @@ static void pkt_capture_tx_get_phy_info( mcs = 8 + pktcapture_hdr->mcs; else mcs = pktcapture_hdr->mcs; + + tx_status->ht_mcs = mcs; break; case 0x3: tx_status->vht_flags = 1; mcs = pktcapture_hdr->mcs; tx_status->vht_flag_values3[0] = - mcs << 0x4 | (pktcapture_hdr->nss + 1); + mcs << 0x4 | (pktcapture_hdr->nss); tx_status->vht_flag_values2 = pktcapture_hdr->bw; break; case 0x4: @@ -205,9 +208,9 @@ static void pkt_capture_tx_get_phy_info( break; } - if (preamble == 0) + if (preamble_type != HAL_TX_PKT_TYPE_11B) tx_status->ofdm_flag = 1; - else if (preamble == 1) + else tx_status->cck_flag = 1; tx_status->mcs = mcs; @@ -727,9 +730,9 @@ static void pkt_capture_rx_get_phy_info(void *context, void *psoc, break; } - if (preamble == 0) + if (preamble_type != HAL_RX_PKT_TYPE_11B) rx_status->ofdm_flag = 1; - else if (preamble == 1) + else rx_status->cck_flag = 1; rx_status->bw = bw; diff --git a/drivers/staging/qcacld-3.0/components/pkt_capture/core/src/wlan_pkt_capture_main.c b/drivers/staging/qcacld-3.0/components/pkt_capture/core/src/wlan_pkt_capture_main.c index 27081aa1c9a6..d4009775dd07 100644 --- a/drivers/staging/qcacld-3.0/components/pkt_capture/core/src/wlan_pkt_capture_main.c +++ b/drivers/staging/qcacld-3.0/components/pkt_capture/core/src/wlan_pkt_capture_main.c @@ -292,8 +292,8 @@ pkt_capture_process_tx_data(void *soc, void *log_data, u_int16_t vdev_id, /* nss not available */ pktcapture_hdr.nss = 0; pktcapture_hdr.rssi_comb = tx_comp_status.ack_frame_rssi; - /* rate not available */ - pktcapture_hdr.rate = 0; + /* update rate from available mcs */ + pktcapture_hdr.rate = tx_comp_status.mcs; pktcapture_hdr.stbc = tx_comp_status.stbc; pktcapture_hdr.sgi = tx_comp_status.sgi; pktcapture_hdr.ldpc = tx_comp_status.ldpc; diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_power.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_power.c index df9f54dc88d2..9d46488cd79d 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_power.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_power.c @@ -2969,8 +2969,8 @@ static int __wlan_hdd_cfg80211_get_txpower(struct wiphy *wiphy, HDD_IS_RATE_LIMIT_REQ(is_rate_limited, hdd_ctx->config->nb_commands_interval); if (hdd_ctx->driver_status != DRIVER_MODULES_ENABLED || - is_rate_limited) { - hdd_debug("Modules not enabled/rate limited, use cached stats"); + is_rate_limited || hdd_is_roaming_in_progress(hdd_ctx)) { + hdd_debug("Modules not enabled/rate limited/roaming, use cached stats"); /* Send cached data to upperlayer*/ vdev = hdd_objmgr_get_vdev(adapter); if (!vdev) { diff --git a/drivers/staging/qcacld-3.0/core/mac/inc/qwlan_version.h b/drivers/staging/qcacld-3.0/core/mac/inc/qwlan_version.h index a22196838e55..6ac0327ecc61 100644 --- a/drivers/staging/qcacld-3.0/core/mac/inc/qwlan_version.h +++ b/drivers/staging/qcacld-3.0/core/mac/inc/qwlan_version.h @@ -32,9 +32,9 @@ #define QWLAN_VERSION_MAJOR 2 #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 8 -#define QWLAN_VERSION_EXTRA "B" +#define QWLAN_VERSION_EXTRA "E" #define QWLAN_VERSION_BUILD 33 -#define QWLAN_VERSIONSTR "2.0.8.33B" +#define QWLAN_VERSIONSTR "2.0.8.33E" #endif /* QWLAN_VERSION_H */ diff --git a/drivers/staging/qcacld-3.0/core/wma/src/wma_scan_roam.c b/drivers/staging/qcacld-3.0/core/wma/src/wma_scan_roam.c index 409c88336202..702063ef6170 100644 --- a/drivers/staging/qcacld-3.0/core/wma/src/wma_scan_roam.c +++ b/drivers/staging/qcacld-3.0/core/wma/src/wma_scan_roam.c @@ -1398,16 +1398,6 @@ int wma_mlme_roam_synch_event_handler_cb(void *handle, uint8_t *event, wma_roam_update_vdev(wma, roam_synch_ind_ptr); - if (QDF_IS_STATUS_ERROR(wma->csr_roam_synch_cb(wma->mac_context, - roam_synch_ind_ptr, - bss_desc_ptr, SIR_ROAM_SYNCH_PROPAGATION))) { - wma_err("CSR roam synch propagation failed, abort roam"); - status = -EINVAL; - goto cleanup_label; - } - - wma_process_roam_synch_complete(wma, synch_event->vdev_id); - /* update freq and channel width */ wma->interfaces[synch_event->vdev_id].ch_freq = roam_synch_ind_ptr->chan_freq; @@ -1426,6 +1416,16 @@ int wma_mlme_roam_synch_event_handler_cb(void *handle, uint8_t *event, param_buf->chan, &wma->interfaces[synch_event->vdev_id]); + if (QDF_IS_STATUS_ERROR(wma->csr_roam_synch_cb(wma->mac_context, + roam_synch_ind_ptr, + bss_desc_ptr, SIR_ROAM_SYNCH_PROPAGATION))) { + wma_err("CSR roam synch propagation failed, abort roam"); + status = -EINVAL; + goto cleanup_label; + } + + wma_process_roam_synch_complete(wma, synch_event->vdev_id); + wma->csr_roam_synch_cb(wma->mac_context, roam_synch_ind_ptr, bss_desc_ptr, SIR_ROAM_SYNCH_COMPLETE); wma->interfaces[synch_event->vdev_id].roam_synch_delay =