Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
From 26cd9bafc1d25e602952ee86cd2a5b8c3a995490 Mon Sep 17 00:00:00 2001
|
||||
From: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
Date: Fri, 28 Jul 2023 16:27:47 +0300
|
||||
Subject: [PATCH] Revert "Do prune_association only after the STA is
|
||||
authorized"
|
||||
|
||||
Commit e978072baaca ("Do prune_association only after the STA is
|
||||
authorized") causes issues when an STA roams from one interface to
|
||||
another interface on the same PHY. The mt7915 driver is not able to
|
||||
handle this properly. While the commits fixes a DoS, there are other
|
||||
devices and drivers with the same limitation, so revert to the orginal
|
||||
behavior for now, until we have a better solution in place.
|
||||
|
||||
Ref: https://github.com/openwrt/openwrt/issues/13156
|
||||
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
---
|
||||
src/ap/hostapd.c | 14 +++++++++++---
|
||||
src/ap/sta_info.c | 3 ---
|
||||
2 files changed, 11 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3646,6 +3646,8 @@ int hostapd_remove_iface(struct hapd_int
|
||||
void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
|
||||
int reassoc)
|
||||
{
|
||||
+ int mld_assoc_link_id = -1;
|
||||
+
|
||||
if (hapd->tkip_countermeasures) {
|
||||
hostapd_drv_sta_deauth(hapd, sta->addr,
|
||||
WLAN_REASON_MICHAEL_MIC_FAILURE);
|
||||
@@ -3653,10 +3655,16 @@ void hostapd_new_assoc_sta(struct hostap
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
- if (ap_sta_is_mld(hapd, sta) &&
|
||||
- sta->mld_assoc_link_id != hapd->mld_link_id)
|
||||
- return;
|
||||
+ if (ap_sta_is_mld(hapd, sta)) {
|
||||
+ if (sta->mld_assoc_link_id == hapd->mld_link_id) {
|
||||
+ mld_assoc_link_id = sta->mld_assoc_link_id;
|
||||
+ } else {
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
#endif /* CONFIG_IEEE80211BE */
|
||||
+ if (mld_assoc_link_id != -2)
|
||||
+ hostapd_prune_associations(hapd, sta->addr, mld_assoc_link_id);
|
||||
|
||||
ap_sta_clear_disconnect_timeouts(hapd, sta);
|
||||
sta->post_csa_sa_query = 0;
|
||||
--- a/src/ap/sta_info.c
|
||||
+++ b/src/ap/sta_info.c
|
||||
@@ -1412,9 +1412,6 @@ bool ap_sta_set_authorized_flag(struct h
|
||||
mld_assoc_link_id = -2;
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211BE */
|
||||
- if (mld_assoc_link_id != -2)
|
||||
- hostapd_prune_associations(hapd, sta->addr,
|
||||
- mld_assoc_link_id);
|
||||
sta->flags |= WLAN_STA_AUTHORIZED;
|
||||
} else {
|
||||
sta->flags &= ~WLAN_STA_AUTHORIZED;
|
||||
Reference in New Issue
Block a user