diff options
Diffstat (limited to 'package/hostapd/patches')
| -rw-r--r-- | package/hostapd/patches/740-process_assoc_resp_tx_status.patch | 48 | 
1 files changed, 48 insertions, 0 deletions
diff --git a/package/hostapd/patches/740-process_assoc_resp_tx_status.patch b/package/hostapd/patches/740-process_assoc_resp_tx_status.patch new file mode 100644 index 000000000..a0d9a0ffc --- /dev/null +++ b/package/hostapd/patches/740-process_assoc_resp_tx_status.patch @@ -0,0 +1,48 @@ +--- a/src/ap/ieee802_11.c ++++ b/src/ap/ieee802_11.c +@@ -1629,13 +1629,6 @@ static void handle_assoc_cb(struct hosta + 	int new_assoc = 1; + 	struct ieee80211_ht_capabilities ht_cap; +  +-	if (!ok) { +-		hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211, +-			       HOSTAPD_LEVEL_DEBUG, +-			       "did not acknowledge association response"); +-		return; +-	} +- + 	if (len < IEEE80211_HDRLEN + (reassoc ? sizeof(mgmt->u.reassoc_resp) : + 				      sizeof(mgmt->u.assoc_resp))) { + 		printf("handle_assoc_cb(reassoc=%d) - too short payload " +@@ -1643,11 +1636,6 @@ static void handle_assoc_cb(struct hosta + 		return; + 	} +  +-	if (reassoc) +-		status = le_to_host16(mgmt->u.reassoc_resp.status_code); +-	else +-		status = le_to_host16(mgmt->u.assoc_resp.status_code); +- + 	sta = ap_get_sta(hapd, mgmt->da); + 	if (!sta) { + 		printf("handle_assoc_cb: STA " MACSTR " not found\n", +@@ -1655,6 +1643,19 @@ static void handle_assoc_cb(struct hosta + 		return; + 	} +  ++	if (!ok) { ++		hostapd_logger(hapd, mgmt->da, HOSTAPD_MODULE_IEEE80211, ++			       HOSTAPD_LEVEL_DEBUG, ++			       "did not acknowledge association response"); ++		sta->flags &= ~WLAN_STA_ASSOC_REQ_OK; ++		return; ++	} ++ ++	if (reassoc) ++		status = le_to_host16(mgmt->u.reassoc_resp.status_code); ++	else ++		status = le_to_host16(mgmt->u.assoc_resp.status_code); ++ + 	if (status != WLAN_STATUS_SUCCESS) + 		goto fail; +   | 
