diff options
author | Felix Fietkau <nbd@nbd.name> | 2017-01-15 14:19:43 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-01-15 14:53:28 +0100 |
commit | 40e4c342fd49175b7f367655fac38850435667d4 (patch) | |
tree | 8b5c6cf8f8e2421e03aa30d3e88412b19807776f /package/network/services/hostapd/patches/002-Fix-duplicate-Reassociation-Request-frame-dropping.patch | |
parent | a206394efa88291dbf825210ca3bab056c407802 (diff) | |
download | upstream-40e4c342fd49175b7f367655fac38850435667d4.tar.gz upstream-40e4c342fd49175b7f367655fac38850435667d4.tar.bz2 upstream-40e4c342fd49175b7f367655fac38850435667d4.zip |
hostapd: backport a few upstream fixes
Fixes reassoc issues with WDS mode
Fixes reassoc issues in AP mode
Fixes IBSS reauthentication issues
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/network/services/hostapd/patches/002-Fix-duplicate-Reassociation-Request-frame-dropping.patch')
-rw-r--r-- | package/network/services/hostapd/patches/002-Fix-duplicate-Reassociation-Request-frame-dropping.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/002-Fix-duplicate-Reassociation-Request-frame-dropping.patch b/package/network/services/hostapd/patches/002-Fix-duplicate-Reassociation-Request-frame-dropping.patch new file mode 100644 index 0000000000..6db1e9b34b --- /dev/null +++ b/package/network/services/hostapd/patches/002-Fix-duplicate-Reassociation-Request-frame-dropping.patch @@ -0,0 +1,36 @@ +From: Jouni Malinen <jouni@qca.qualcomm.com> +Date: Sat, 14 Jan 2017 01:04:31 +0200 +Subject: [PATCH] Fix duplicate Reassociation Request frame dropping + +Relational operators (==) have higher precedence than the ternary +conditional in C. The last_subtype check for association/reassociation +was broken due to incorrect assumption about the precedence. Fix this by +adding parenthesis around the ternary conditional. + +The previous implementation worked for Association Request frames by +accident since WLAN_FC_STYPE_ASSOC_REQ happens to have value 0 and when +the last receive frame was an Association Request frame, the +sta->last_subtype == reassoc check was true and non-zero +WLAN_FC_STYPE_REASSOC_REQ was interpreted as true. However, this was +broken for Reassociation Request frame. reassoc == 1 in that case could +have matched received Association Response frame (subtype == 1), but +those are not received in AP mode and as such, this did not break other +behavior apart from not being able to drop duplicated Reassociation +Request frames. + +Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> +--- + +--- a/src/ap/ieee802_11.c ++++ b/src/ap/ieee802_11.c +@@ -2485,8 +2485,8 @@ static void handle_assoc(struct hostapd_ + if ((fc & WLAN_FC_RETRY) && + sta->last_seq_ctrl != WLAN_INVALID_MGMT_SEQ && + sta->last_seq_ctrl == seq_ctrl && +- sta->last_subtype == reassoc ? WLAN_FC_STYPE_REASSOC_REQ : +- WLAN_FC_STYPE_ASSOC_REQ) { ++ sta->last_subtype == (reassoc ? WLAN_FC_STYPE_REASSOC_REQ : ++ WLAN_FC_STYPE_ASSOC_REQ)) { + hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211, + HOSTAPD_LEVEL_DEBUG, + "Drop repeated association frame seq_ctrl=0x%x", |