Message ID | 20230315112103.18426-1-quic_mpubbise@quicinc.com |
---|---|
State | Superseded |
Headers | show |
Series | [v3] wifi: ath11k: Optimize 6 GHz scan time | expand |
Manikanta Pubbisetty <quic_mpubbise@quicinc.com> wrote: > 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> New warning: drivers/net/wireless/ath/ath11k/mac.c:3827: line length of 91 exceeds 90 columns I couldn't quickly figure out how to fix that, any ideas?
On 3/22/2023 5:25 PM, Kalle Valo wrote: > Manikanta Pubbisetty <quic_mpubbise@quicinc.com> wrote: > >> 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> > > New warning: > > drivers/net/wireless/ath/ath11k/mac.c:3827: line length of 91 exceeds 90 columns > > I couldn't quickly figure out how to fix that, any ideas? > I'd thought that max_line_length is 100 from the checkpatch.pl; I have sent V4 patch addressing the warning. Thanks, Manikanta
Manikanta Pubbisetty <quic_mpubbise@quicinc.com> writes: > On 3/22/2023 5:25 PM, Kalle Valo wrote: > >> Manikanta Pubbisetty <quic_mpubbise@quicinc.com> wrote: >> >>> 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> >> >> New warning: >> >> drivers/net/wireless/ath/ath11k/mac.c:3827: line length of 91 exceeds 90 columns >> >> I couldn't quickly figure out how to fix that, any ideas? >> > > I'd thought that max_line_length is 100 from the checkpatch.pl In ath11k-check it's set to 90.
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index cad832e0e6b8..ce5a7a912a10 100644 --- 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 ieee80211_hw *hw, 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_CONF_PER_CH_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) { diff --git a/drivers/net/wireless/ath/ath11k/wmi.h b/drivers/net/wireless/ath/ath11k/wmi.h index b23b7a22bc9a..dddd279233ec 100644 --- 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_CONF_PER_CH_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,
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> --- V3: - Rebased on ToT V2: - Rebased on ToT drivers/net/wireless/ath/ath11k/mac.c | 25 +++++++++++++++++++++++-- drivers/net/wireless/ath/ath11k/wmi.h | 4 ++++ 2 files changed, 27 insertions(+), 2 deletions(-) base-commit: 3df3715e556027e94246b2cb30986563362a65f4