aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/554-multi_ap-don-t-reject-backhaul-STA-on-fronhaul-BSS.patch
diff options
context:
space:
mode:
authorArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>2018-12-10 17:02:27 +0100
committerDaniel Golle <daniel@makrotopia.org>2019-02-20 13:17:11 +0100
commit2e0f41e73a93e8fa8b74f053e638f05247ee9113 (patch)
treee2b6e0633ebdae58e92575e84ea3c0108521c8ae /package/network/services/hostapd/patches/554-multi_ap-don-t-reject-backhaul-STA-on-fronhaul-BSS.patch
parent8554982e1fd0c8f25e5f154b046eb955f6af2019 (diff)
downloadupstream-2e0f41e73a93e8fa8b74f053e638f05247ee9113.tar.gz
upstream-2e0f41e73a93e8fa8b74f053e638f05247ee9113.tar.bz2
upstream-2e0f41e73a93e8fa8b74f053e638f05247ee9113.zip
hostapd: add Multi-AP patches and config options
Cherry-pick Multi-AP commits from uptream: 9c06f0f6a hostapd: Add Multi-AP protocol support 5abc7823b wpa_supplicant: Add Multi-AP backhaul STA support a1debd338 tests: Refactor test_multi_ap bfcdac1c8 Multi-AP: Don't reject backhaul STA on fronthaul BSS cb3c156e7 tests: Update multi_ap_fronthaul_on_ap to match implementation 56a2d788f WPS: Add multi_ap_subelem to wps_build_wfa_ext() 83ebf5586 wpa_supplicant: Support Multi-AP backhaul STA onboarding with WPS 66819b07b hostapd: Support Multi-AP backhaul STA onboarding with WPS 8682f384c hostapd: Add README-MULTI-AP b1daf498a tests: Multi-AP WPS provisioning Add support for Multi-AP to the UCI configuration. Every wifi-iface gets an option 'multi_ap'. For APs, its value can be 0 (multi-AP support disabled), 1 (backhaul AP), 2 (fronthaul AP), or 3 (fronthaul + backhaul AP). For STAs, it can be 0 (not a backhaul STA) or 1 (backhaul STA, can only associate with backhaul AP). Also add new optional parameter to wps_start ubus call of wpa_supplicant to indicate that a Multi-AP backhaul link is required. Signed-off-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Diffstat (limited to 'package/network/services/hostapd/patches/554-multi_ap-don-t-reject-backhaul-STA-on-fronhaul-BSS.patch')
-rw-r--r--package/network/services/hostapd/patches/554-multi_ap-don-t-reject-backhaul-STA-on-fronhaul-BSS.patch106
1 files changed, 106 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/554-multi_ap-don-t-reject-backhaul-STA-on-fronhaul-BSS.patch b/package/network/services/hostapd/patches/554-multi_ap-don-t-reject-backhaul-STA-on-fronhaul-BSS.patch
new file mode 100644
index 0000000000..6c30a1793e
--- /dev/null
+++ b/package/network/services/hostapd/patches/554-multi_ap-don-t-reject-backhaul-STA-on-fronhaul-BSS.patch
@@ -0,0 +1,106 @@
+From 71b061b8a13791a1ed858d924e401541c8584030 Mon Sep 17 00:00:00 2001
+From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
+Date: Wed, 9 Jan 2019 19:08:00 +0100
+Subject: [PATCH] multi_ap: don't reject backhaul STA on fronhaul BSS
+
+The Multi-AP specification only specifies that information elements have
+to be added to the association requests and responses; it doesn't
+specify anything about what should be done in case they are missing.
+Currently, we reject non-backhaul associations on a backhaul-only BSS,
+and non-fronthaul associations on a fronthaul-only BSS.
+
+However, this makes WPS fail when fronthaul and backhaul are separate
+SSIDs. Indeed, WPS for the backhaul link is performed on the *fronthaul*
+SSID. Thus, the association request used for WPS *will* contain the
+Multi-AP IE indicating a backhaul STA. Rejecting that association makes
+WPS fail.
+
+Therefore, accept a multi-AP backhaul STA association request on a
+fronthaul-only BSS. Still issue a warning about it, but only at level
+DEBUG intead of INFO. Also change the condition checking to make it
+clearer.
+
+While we're at it, also fix the handling of unexpected bits in the
+Multi-AP IE. 4 bits are reserved in the specification, so these
+certainly have to be ignored. The specification also doesn't say that
+setting one of the other bits is not allowed. Therefore, only report
+unexpected values in the Multi-AP IE, don't reject because of it.
+Note that a malformed IE (containing more than one byte) still triggers
+a rejection.
+
+Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
+---
+v4: new patch
+
+Cfr. discussion on http://lists.infradead.org/pipermail/hostap/2019-January/039232.html
+and follow-ups.
+---
+ src/ap/ieee802_11.c | 38 +++++++++++++++++++-----------------
+ tests/hwsim/test_multi_ap.py | 6 ++----
+ 2 files changed, 22 insertions(+), 22 deletions(-)
+
+--- a/src/ap/ieee802_11.c
++++ b/src/ap/ieee802_11.c
+@@ -2253,28 +2253,30 @@ static u16 check_multi_ap(struct hostapd
+ }
+ }
+
+- if (multi_ap_value == MULTI_AP_BACKHAUL_STA)
+- sta->flags |= WLAN_STA_MULTI_AP;
+-
+- if ((hapd->conf->multi_ap & BACKHAUL_BSS) &&
+- multi_ap_value == MULTI_AP_BACKHAUL_STA)
+- return WLAN_STATUS_SUCCESS;
+-
+- if (hapd->conf->multi_ap & FRONTHAUL_BSS) {
+- if (multi_ap_value == MULTI_AP_BACKHAUL_STA) {
+- hostapd_logger(hapd, sta->addr,
+- HOSTAPD_MODULE_IEEE80211,
+- HOSTAPD_LEVEL_INFO,
+- "Backhaul STA tries to associate with fronthaul-only BSS");
+- return WLAN_STATUS_ASSOC_DENIED_UNSPEC;
+- }
+- return WLAN_STATUS_SUCCESS;
++ if (multi_ap_value && multi_ap_value != MULTI_AP_BACKHAUL_STA)
++ hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
++ HOSTAPD_LEVEL_INFO,
++ "Multi-AP IE with unexpected value 0x%02x",
++ multi_ap_value);
++
++ if (!(multi_ap_value & MULTI_AP_BACKHAUL_STA)) {
++ if (hapd->conf->multi_ap & FRONTHAUL_BSS)
++ return WLAN_STATUS_SUCCESS;
++
++ hostapd_logger(hapd, sta->addr,
++ HOSTAPD_MODULE_IEEE80211,
++ HOSTAPD_LEVEL_INFO,
++ "Non-Multi-AP STA tries to associate with backhaul-only BSS");
++ return WLAN_STATUS_ASSOC_DENIED_UNSPEC;
+ }
+
+- hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
+- HOSTAPD_LEVEL_INFO,
+- "Non-Multi-AP STA tries to associate with backhaul-only BSS");
+- return WLAN_STATUS_ASSOC_DENIED_UNSPEC;
++ if (!(hapd->conf->multi_ap & BACKHAUL_BSS))
++ hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
++ HOSTAPD_LEVEL_DEBUG,
++ "Backhaul STA tries to associate with fronthaul-only BSS");
++
++ sta->flags |= WLAN_STA_MULTI_AP;
++ return WLAN_STATUS_SUCCESS;
+ }
+
+
+--- a/tests/hwsim/test_multi_ap.py
++++ b/tests/hwsim/test_multi_ap.py
+@@ -59,7 +59,5 @@ def test_multi_ap_fronthaul_on_ap(dev, a
+ dev[0].request("DISCONNECT")
+ if ev is None:
+ raise Exception("Connection result not reported")
+- if "CTRL-EVENT-ASSOC-REJECT" not in ev:
+- raise Exception("Association rejection not reported")
+- if "status_code=12" not in ev:
+- raise Exception("Unexpected association status code: " + ev)
++ if "CTRL-EVENT-DISCONNECTED" not in ev:
++ raise Exception("Unexpected connection result")