mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-04 04:54:18 +00:00
323e249ce8
This updates mac80211 to version 6.1.97-1. This code is based on Linux 6.1.97 and contains all fixes included in the upstream wireless subsystem from that kernel version. This includes many bugfixes and also some security fixes. The removed patches are already integrated in upstream Linux 6.1.97 or in backports. The following patches were integrated in upstream Linux: ath11k/0013-wifi-ath11k-synchronize-ath11k_mac_he_gi_to_nl80211_.patch ath11k/0035-wifi-ath11k-Use-platform_get_irq-to-get-the-interrup.patch ath11k/0036-wifi-ath11k-fix-SAC-bug-on-peer-addition-with-sta-ba.patch ath11k/0047-wifi-ath11k-fix-deinitialization-of-firmware-resourc.patch ath11k/0053-wifi-ath11k-fix-writing-to-unintended-memory-region.patch ath11k/0060-wifi-ath11k-Ignore-frags-from-uninitialized-peer-in-.patch ath11k/0065-wifi-ath11k-fix-tx-status-reporting-in-encap-offload.patch ath11k/0067-wifi-ath11k-Fix-SKB-corruption-in-REO-destination-ri.patch ath11k/0069-wifi-ath11k-fix-registration-of-6Ghz-only-phy-withou.patch ath11k/0080-wifi-ath11k-add-support-default-regdb-while-searchin.patch ath11k/0085-wifi-ath11k-fix-memory-leak-in-WMI-firmware-stats.patch ath11k/0086-wifi-ath11k-Add-missing-check-for-ioremap.patch ath11k/0096-wifi-ath11k-fix-boot-failure-with-one-MSI-vector.patch subsys/337-wifi-mac80211-fix-race-condition-on-enabling-fast-xm.patch The following patches were integrated in upstream backports: ath11k/901-wifi-ath11k-pci-fix-compilation-in-5.16-and-older.patch build/080-resv_start_op.patch build/110-backport_napi_build_skb.patch The following files are missing in backports, we do not have to remove them any more. Some were already missing before some were removed in this update: include/linux/cordic.h include/linux/crc8.h include/linux/eeprom_93cx6.h include/linux/wl12xx.h include/net/ieee80211.h backport-include/linux/bcm47xx_nvram.h include/linux/ath9k_platform.h include/net/bluetooth/ backports ships a dummy Mediatek wed header for older kernel versions. We backported the feature in our kernel, remove the dummy header: backport-include/linux/soc/mediatek/mtk_wed.h Remove header files for subsystems used form the mainline kernel: include/trace/events/qrtr.h include/net/rsi_91x.h backport-include/linux/platform_data/brcmnand.h Link: https://github.com/openwrt/openwrt/pull/15827 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
103 lines
3.7 KiB
Diff
103 lines
3.7 KiB
Diff
From c362daa213cdeb0a9e7c2ed84849544c24505720 Mon Sep 17 00:00:00 2001
|
|
From: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
|
|
Date: Fri, 7 Oct 2022 10:41:30 +0530
|
|
Subject: [PATCH 8/9] wifi: ath11k: add support to configure channel dwell time
|
|
|
|
Add support to configure channel dwell time during scan.
|
|
Dwell time help to stay on the channel for a specified duration
|
|
during scan and aid userspace in finding WiFi networks. Very
|
|
useful in passive scans where longer dwell times are needed
|
|
to find the WiFi networks.
|
|
|
|
Configure channel dwell time from duration of the scan request
|
|
received from mac80211 when the duration is non-zero. When the
|
|
scan request does not have duration value, use the default ones,
|
|
the current implementation.
|
|
|
|
Advertise corresponding feature flag NL80211_EXT_FEATURE_SET_SCAN_DWELL
|
|
to enable the feature.
|
|
|
|
Change is applicable for all ath11k hardware.
|
|
|
|
Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
|
|
|
|
Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@quicinc.com>
|
|
Reviewed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
|
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
|
Link: https://lore.kernel.org/r/20221007051130.6067-1-quic_mpubbise@quicinc.com
|
|
---
|
|
drivers/net/wireless/ath/ath11k/mac.c | 33 +++++++++++++++++++++++----
|
|
1 file changed, 29 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
@@ -241,7 +241,10 @@ const struct htt_rx_ring_tlv_filter ath1
|
|
#define ath11k_a_rates (ath11k_legacy_rates + 4)
|
|
#define ath11k_a_rates_size (ARRAY_SIZE(ath11k_legacy_rates) - 4)
|
|
|
|
-#define ATH11K_MAC_SCAN_TIMEOUT_MSECS 200 /* in msecs */
|
|
+#define ATH11K_MAC_SCAN_CMD_EVT_OVERHEAD 200 /* in msecs */
|
|
+
|
|
+/* Overhead due to the processing of channel switch events from FW */
|
|
+#define ATH11K_SCAN_CHANNEL_SWITCH_WMI_EVT_OVERHEAD 10 /* in msecs */
|
|
|
|
static const u32 ath11k_smps_map[] = {
|
|
[WLAN_HT_CAP_SM_PS_STATIC] = WMI_PEER_SMPS_STATIC,
|
|
@@ -3609,6 +3612,7 @@ static int ath11k_mac_op_hw_scan(struct
|
|
struct scan_req_params arg;
|
|
int ret = 0;
|
|
int i;
|
|
+ u32 scan_timeout;
|
|
|
|
mutex_lock(&ar->conf_mutex);
|
|
|
|
@@ -3678,6 +3682,26 @@ static int ath11k_mac_op_hw_scan(struct
|
|
ether_addr_copy(arg.mac_mask.addr, req->mac_addr_mask);
|
|
}
|
|
|
|
+ /* if duration is set, default dwell times will be overwritten */
|
|
+ if (req->duration) {
|
|
+ arg.dwell_time_active = req->duration;
|
|
+ arg.dwell_time_active_2g = req->duration;
|
|
+ arg.dwell_time_active_6g = req->duration;
|
|
+ arg.dwell_time_passive = req->duration;
|
|
+ arg.dwell_time_passive_6g = req->duration;
|
|
+ arg.burst_duration = req->duration;
|
|
+
|
|
+ scan_timeout = min_t(u32, arg.max_rest_time *
|
|
+ (arg.num_chan - 1) + (req->duration +
|
|
+ ATH11K_SCAN_CHANNEL_SWITCH_WMI_EVT_OVERHEAD) *
|
|
+ arg.num_chan, arg.max_scan_time);
|
|
+ } else {
|
|
+ scan_timeout = arg.max_scan_time;
|
|
+ }
|
|
+
|
|
+ /* Add a margin to account for event/command processing */
|
|
+ scan_timeout += ATH11K_MAC_SCAN_CMD_EVT_OVERHEAD;
|
|
+
|
|
ret = ath11k_start_scan(ar, &arg);
|
|
if (ret) {
|
|
ath11k_warn(ar->ab, "failed to start hw scan: %d\n", ret);
|
|
@@ -3686,10 +3710,8 @@ static int ath11k_mac_op_hw_scan(struct
|
|
spin_unlock_bh(&ar->data_lock);
|
|
}
|
|
|
|
- /* Add a 200ms margin to account for event/command processing */
|
|
ieee80211_queue_delayed_work(ar->hw, &ar->scan.timeout,
|
|
- msecs_to_jiffies(arg.max_scan_time +
|
|
- ATH11K_MAC_SCAN_TIMEOUT_MSECS));
|
|
+ msecs_to_jiffies(scan_timeout));
|
|
|
|
exit:
|
|
kfree(arg.chan_list);
|
|
@@ -9065,6 +9087,9 @@ static int __ath11k_mac_register(struct
|
|
NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP);
|
|
}
|
|
|
|
+ wiphy_ext_feature_set(ar->hw->wiphy,
|
|
+ NL80211_EXT_FEATURE_SET_SCAN_DWELL);
|
|
+
|
|
ath11k_reg_init(ar);
|
|
|
|
if (!test_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags)) {
|