wpa_supplicant
This commit is contained in:
+73
@@ -0,0 +1,73 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: David Bauer <mail@david-bauer.net>
|
||||
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 <neon.emorice@mail.com>
|
||||
Tested-by: Étienne Morice <neon.emorice@mail.com>
|
||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
|
||||
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,
|
||||
Reference in New Issue
Block a user