From bde5781c980433f1ed8142e0d77e99b00203fee6 Mon Sep 17 00:00:00 2001 From: Rmys Date: Wed, 18 Dec 2024 19:57:36 +0300 Subject: [PATCH] wpa_supplicant --- ...-extra-ies-only-if-allowed-by-driver.patch | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 network/connection/wpa_supplicant/files/0007-nl80211-add-extra-ies-only-if-allowed-by-driver.patch diff --git a/network/connection/wpa_supplicant/files/0007-nl80211-add-extra-ies-only-if-allowed-by-driver.patch b/network/connection/wpa_supplicant/files/0007-nl80211-add-extra-ies-only-if-allowed-by-driver.patch new file mode 100644 index 0000000000..88f99d96d3 --- /dev/null +++ b/network/connection/wpa_supplicant/files/0007-nl80211-add-extra-ies-only-if-allowed-by-driver.patch @@ -0,0 +1,73 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: David Bauer +Date: Sun, 30 Jan 2022 20:22:00 +0100 +Subject: [PATCH] nl80211: add extra-ies only if allowed by driver +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upgrading wpa_supplicant from 2.9 to 2.10 breaks broadcom-wl +based adapters. The reason for it is hostapd tries to install additional +IEs for scanning while the driver does not support this. + +The kernel indicates the maximum number of bytes for additional scan IEs +using the NL80211_ATTR_MAX_SCAN_IE_LEN attribute. Save this value and +only add additional scan IEs in case the driver can accommodate these +additional IEs. + +Reported-by: Étienne Morice +Tested-by: Étienne Morice +Signed-off-by: David Bauer + +Bug: http://lists.infradead.org/pipermail/hostap/2022-January/040178.html +Bug-ArchLinux: https://bugs.archlinux.org/task/73495 +Bug-Debian: https://bugs.debian.org/1004524 +Origin: http://lists.infradead.org/pipermail/hostap/2022-January/040185.html +--- + src/drivers/driver.h | 3 +++ + src/drivers/driver_nl80211_capa.c | 4 ++++ + src/drivers/driver_nl80211_scan.c | 2 +- + 3 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/drivers/driver.h b/src/drivers/driver.h +index 4331782d897a..243e9b5cc4d8 100644 +--- a/src/drivers/driver.h ++++ b/src/drivers/driver.h +@@ -2357,6 +2357,9 @@ struct wpa_driver_capa { + /** Maximum number of iterations in a single scan plan */ + u32 max_sched_scan_plan_iterations; + ++ /** Maximum number of extra IE bytes for scans */ ++ u16 max_scan_ie_len; ++ + /** Whether sched_scan (offloaded scanning) is supported */ + int sched_scan_supported; + +diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c +index 26c1f41406d2..d5ba66b1073e 100644 +--- a/src/drivers/driver_nl80211_capa.c ++++ b/src/drivers/driver_nl80211_capa.c +@@ -976,6 +976,10 @@ static int wiphy_info_handler(struct nl_msg *msg, void *arg) + nla_get_u32(tb[NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS]); + } + ++ if (tb[NL80211_ATTR_MAX_SCAN_IE_LEN]) ++ capa->max_scan_ie_len = ++ nla_get_u16(tb[NL80211_ATTR_MAX_SCAN_IE_LEN]); ++ + if (tb[NL80211_ATTR_MAX_MATCH_SETS]) + capa->max_match_sets = + nla_get_u8(tb[NL80211_ATTR_MAX_MATCH_SETS]); +diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c +index b055e684a9f8..a8ea8f2cf1d7 100644 +--- a/src/drivers/driver_nl80211_scan.c ++++ b/src/drivers/driver_nl80211_scan.c +@@ -221,7 +221,7 @@ nl80211_scan_common(struct i802_bss *bss, u8 cmd, + wpa_printf(MSG_DEBUG, "nl80211: Passive scan requested"); + } + +- if (params->extra_ies) { ++ if (params->extra_ies && drv->capa.max_scan_ie_len >= params->extra_ies_len) { + wpa_hexdump(MSG_MSGDUMP, "nl80211: Scan extra IEs", + params->extra_ies, params->extra_ies_len); + if (nla_put(msg, NL80211_ATTR_IE, params->extra_ies_len,