aboutsummaryrefslogtreecommitdiff
path: root/package/kernel/mac80211/patches/ath11k/0049-wifi-ath11k-Optimize-6-GHz-scan-time.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/ath11k/0049-wifi-ath11k-Optimize-6-GHz-scan-time.patch')
-rw-r--r--package/kernel/mac80211/patches/ath11k/0049-wifi-ath11k-Optimize-6-GHz-scan-time.patch101
1 files changed, 0 insertions, 101 deletions
diff --git a/package/kernel/mac80211/patches/ath11k/0049-wifi-ath11k-Optimize-6-GHz-scan-time.patch b/package/kernel/mac80211/patches/ath11k/0049-wifi-ath11k-Optimize-6-GHz-scan-time.patch
deleted file mode 100644
index f468990feb..0000000000
--- a/package/kernel/mac80211/patches/ath11k/0049-wifi-ath11k-Optimize-6-GHz-scan-time.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 8b4d2f080afbd4280ecca0f4b3ceea943a7a86d0 Mon Sep 17 00:00:00 2001
-From: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
-Date: Thu, 23 Mar 2023 11:39:13 +0530
-Subject: [PATCH] wifi: ath11k: Optimize 6 GHz scan time
-
-Currently, time taken to scan all supported channels on WCN6750
-is ~8 seconds and connection time is almost 10 seconds. WCN6750
-supports three Wi-Fi bands (i.e., 2.4/5/6 GHz) and the numbers of
-channels for scan come around ~100 channels (default case).
-Since the chip doesn't have support for DBS (Dual Band Simultaneous),
-scans cannot be parallelized resulting in longer scan times.
-
-Among the 100 odd channels, ~60 channels are in 6 GHz band. Therefore,
-optimizing the scan for 6 GHz channels will bring down the overall
-scan time.
-
-WCN6750 firmware has support to scan a 6 GHz channel based on co-located
-AP information i.e., RNR IE which is found in the legacy 2.4/5 GHz scan
-results. When a scan request with all supported channel list is enqueued
-to the firmware, then based on WMI_SCAN_CHAN_FLAG_SCAN_ONLY_IF_RNR_FOUND
-scan channel flag, firmware will scan only those 6 GHz channels for which
-RNR IEs are found in the legacy scan results.
-
-In the proposed design, based on NL80211_SCAN_FLAG_COLOCATED_6GHZ scan
-flag, driver will set the WMI_SCAN_CHAN_FLAG_SCAN_ONLY_IF_RNR_FOUND flag
-for non-PSC channels. Since there is high probability to find 6 GHz APs
-on PSC channels, these channels are always scanned. Only non-PSC channels
-are selectively scanned based on cached RNR information from the legacy
-scan results.
-
-If NL80211_SCAN_FLAG_COLOCATED_6GHZ is not set in the scan flags,
-then scan will happen on all supported channels (default behavior).
-
-With these optimizations, scan time is improved by 1.5-1.8 seconds on
-WCN6750. Similar savings have been observed on WCN6855.
-
-Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
-Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.16
-
-Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
-Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
-Link: https://lore.kernel.org/r/20230323060913.10097-1-quic_mpubbise@quicinc.com
----
- drivers/net/wireless/ath/ath11k/mac.c | 25 +++++++++++++++++++++++--
- drivers/net/wireless/ath/ath11k/wmi.h | 4 ++++
- 2 files changed, 27 insertions(+), 2 deletions(-)
-
---- a/drivers/net/wireless/ath/ath11k/mac.c
-+++ b/drivers/net/wireless/ath/ath11k/mac.c
-@@ -3819,8 +3819,29 @@ static int ath11k_mac_op_hw_scan(struct
- goto exit;
- }
-
-- for (i = 0; i < arg->num_chan; i++)
-- arg->chan_list[i] = req->channels[i]->center_freq;
-+ for (i = 0; i < arg->num_chan; i++) {
-+ if (test_bit(WMI_TLV_SERVICE_SCAN_CONFIG_PER_CHANNEL,
-+ ar->ab->wmi_ab.svc_map)) {
-+ arg->chan_list[i] =
-+ u32_encode_bits(req->channels[i]->center_freq,
-+ WMI_SCAN_CONFIG_PER_CHANNEL_MASK);
-+
-+ /* If NL80211_SCAN_FLAG_COLOCATED_6GHZ is set in scan
-+ * flags, then scan all PSC channels in 6 GHz band and
-+ * those non-PSC channels where RNR IE is found during
-+ * the legacy 2.4/5 GHz scan.
-+ * If NL80211_SCAN_FLAG_COLOCATED_6GHZ is not set,
-+ * then all channels in 6 GHz will be scanned.
-+ */
-+ if (req->channels[i]->band == NL80211_BAND_6GHZ &&
-+ req->flags & NL80211_SCAN_FLAG_COLOCATED_6GHZ &&
-+ !cfg80211_channel_is_psc(req->channels[i]))
-+ arg->chan_list[i] |=
-+ WMI_SCAN_CH_FLAG_SCAN_ONLY_IF_RNR_FOUND;
-+ } else {
-+ arg->chan_list[i] = req->channels[i]->center_freq;
-+ }
-+ }
- }
-
- if (req->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) {
---- a/drivers/net/wireless/ath/ath11k/wmi.h
-+++ b/drivers/net/wireless/ath/ath11k/wmi.h
-@@ -2100,6 +2100,7 @@ enum wmi_tlv_service {
-
- /* The second 128 bits */
- WMI_MAX_EXT_SERVICE = 256,
-+ WMI_TLV_SERVICE_SCAN_CONFIG_PER_CHANNEL = 265,
- WMI_TLV_SERVICE_REG_CC_EXT_EVENT_SUPPORT = 281,
- WMI_TLV_SERVICE_BIOS_SAR_SUPPORT = 326,
-
-@@ -3249,6 +3250,9 @@ struct wmi_start_scan_cmd {
- #define WMI_SCAN_DWELL_MODE_SHIFT 21
- #define WMI_SCAN_FLAG_EXT_PASSIVE_SCAN_START_TIME_ENHANCE 0x00000800
-
-+#define WMI_SCAN_CONFIG_PER_CHANNEL_MASK GENMASK(19, 0)
-+#define WMI_SCAN_CH_FLAG_SCAN_ONLY_IF_RNR_FOUND BIT(20)
-+
- enum {
- WMI_SCAN_DWELL_MODE_DEFAULT = 0,
- WMI_SCAN_DWELL_MODE_CONSERVATIVE = 1,