diff options
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.patch | 101 |
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, |