Index: wpa_supplicant/events.c |
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c |
index c16ea58294df8203c2b50c3a9909a6f0454fb7eb..f37c898fe358cf28d01ccd7652b68495252ee5ba 100644 |
--- a/wpa_supplicant/events.c |
+++ b/wpa_supplicant/events.c |
@@ -1278,7 +1278,13 @@ static void wpa_supplicant_event_disassoc(struct wpa_supplicant *wpa_s, |
bssid = wpa_s->bssid; |
if (is_zero_ether_addr(bssid)) |
bssid = wpa_s->pending_bssid; |
- wpa_blacklist_add(wpa_s, bssid); |
+ /* |
+ * Don't blacklist the AP on normal/expected disconnects. |
+ */ |
+ if (reason_code != WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY && |
+ reason_code != WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA && |
+ reason_code != WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA) |
+ wpa_blacklist_add(wpa_s, bssid); |
wpa_sm_notify_disassoc(wpa_s->wpa); |
wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_DISCONNECTED "bssid=" MACSTR |
" reason=%d", |