aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/001-Fix-race-condition-between-AssocResp-callback-and-4a.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/hostapd/patches/001-Fix-race-condition-between-AssocResp-callback-and-4a.patch')
-rw-r--r--package/network/services/hostapd/patches/001-Fix-race-condition-between-AssocResp-callback-and-4a.patch83
1 files changed, 0 insertions, 83 deletions
diff --git a/package/network/services/hostapd/patches/001-Fix-race-condition-between-AssocResp-callback-and-4a.patch b/package/network/services/hostapd/patches/001-Fix-race-condition-between-AssocResp-callback-and-4a.patch
deleted file mode 100644
index bf54e9df32..0000000000
--- a/package/network/services/hostapd/patches/001-Fix-race-condition-between-AssocResp-callback-and-4a.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From: Jouni Malinen <jouni@qca.qualcomm.com>
-Date: Tue, 20 Dec 2016 01:30:09 +0200
-Subject: [PATCH] Fix race condition between AssocResp callback and 4addr event
-
-It is apparently possible for the NL80211_CMD_UNEXPECTED_4ADDR_FRAME
-event to be delivered to hostapd before the NL80211_CMD_FRAME_TX_STATUS
-event for (Re)Association Response frame. This resulted in the 4-address
-WDS mode not getting enabled for a STA. This could occur in particular
-when operating under heavy load and the STA is reconnecting to the same
-AP in a sequence where Deauthentication frame is followed immediately by
-Authentication frame and the driver event processing gets delayed due to
-removal of the previous netdev taking time in the middle of this
-sequence.
-
-Fix this by recording a pending item for 4-address WDS enabling if the
-NL80211_CMD_UNEXPECTED_4ADDR_FRAME event would have been dropped due to
-incompleted association and then process this pending item if the TX
-status for the (Re)Association Response frame is received and it shows
-that the frame was acknowledged.
-
-Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
----
-
---- a/src/ap/ieee802_11.c
-+++ b/src/ap/ieee802_11.c
-@@ -2634,6 +2634,8 @@ static void handle_assoc(struct hostapd_
- taxonomy_sta_info_assoc_req(hapd, sta, pos, left);
- #endif /* CONFIG_TAXONOMY */
-
-+ sta->pending_wds_enable = 0;
-+
- fail:
- /*
- * In case of a successful response, add the station to the driver.
-@@ -3248,6 +3250,14 @@ static void handle_assoc_cb(struct hosta
-
- hostapd_set_sta_flags(hapd, sta);
-
-+ if (!(sta->flags & WLAN_STA_WDS) && sta->pending_wds_enable) {
-+ wpa_printf(MSG_DEBUG, "Enable 4-address WDS mode for STA "
-+ MACSTR " based on pending request",
-+ MAC2STR(sta->addr));
-+ sta->pending_wds_enable = 0;
-+ sta->flags |= WLAN_STA_WDS;
-+ }
-+
- if (sta->flags & WLAN_STA_WDS) {
- int ret;
- char ifname_wds[IFNAMSIZ + 1];
-@@ -3512,10 +3522,22 @@ void ieee802_11_rx_from_unknown(struct h
- struct sta_info *sta;
-
- sta = ap_get_sta(hapd, src);
-- if (sta && (sta->flags & WLAN_STA_ASSOC)) {
-+ if (sta &&
-+ ((sta->flags & WLAN_STA_ASSOC) ||
-+ ((sta->flags & WLAN_STA_ASSOC_REQ_OK) && wds))) {
- if (!hapd->conf->wds_sta)
- return;
-
-+ if ((sta->flags & (WLAN_STA_ASSOC | WLAN_STA_ASSOC_REQ_OK)) ==
-+ WLAN_STA_ASSOC_REQ_OK) {
-+ wpa_printf(MSG_DEBUG,
-+ "Postpone 4-address WDS mode enabling for STA "
-+ MACSTR " since TX status for AssocResp is not yet known",
-+ MAC2STR(sta->addr));
-+ sta->pending_wds_enable = 1;
-+ return;
-+ }
-+
- if (wds && !(sta->flags & WLAN_STA_WDS)) {
- int ret;
- char ifname_wds[IFNAMSIZ + 1];
---- a/src/ap/sta_info.h
-+++ b/src/ap/sta_info.h
-@@ -115,6 +115,7 @@ struct sta_info {
- unsigned int radius_das_match:1;
- unsigned int ecsa_supported:1;
- unsigned int added_unassoc:1;
-+ unsigned int pending_wds_enable:1;
-
- u16 auth_alg;
-