diff options
author | Kevin Lund <kglund@google.com> | 2020-06-11 21:11:15 (GMT) |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2020-10-10 15:34:59 (GMT) |
commit | 2fd35d98575dd251653b9470f75409f6c8af3ff1 (patch) | |
tree | ffa31b2865fe5f3eadeef92d240eea4a33eadfec /wpa_supplicant/blacklist.c | |
parent | 5653301409b7d8fcc76b4052032f5534bff51e9e (diff) | |
download | hostap-2fd35d98575dd251653b9470f75409f6c8af3ff1.zip hostap-2fd35d98575dd251653b9470f75409f6c8af3ff1.tar.gz hostap-2fd35d98575dd251653b9470f75409f6c8af3ff1.tar.bz2 |
wpa_supplicant: Track consecutive connection failures
Within wpas_connection_failed(), the 'count' value of wpa_blacklist is
erroneously used as a tally of the number times the device has failed
to associate to a given BSSID without making a successful connection.
This is not accurate because there are a variety of ways a BSS can be
added to the blacklist beyond failed association such as interference
or deauthentication. This 'count' is lost whenever the blacklist is
cleared, so the wpa_supplicant stores an additional value
'extra_blacklist_count' which helps persist the 'count' through clears.
These count values are used to determine how long to wait to rescan
after a failed connection attempt.
While this logic was already slightly wrong, it would have been
completely broken by the upcoming change which adds time-based
blacklisting functionality. With the upcoming change, 'count' values
are not cleared on association, and thus do not necessarily even
approximate the "consecutive connection failures" which they were being
used for.
This change seeks to remove this unnecessary overloading of the
blacklist 'count' by directly tracking consecutive connection failures
within the wpa_supplicant struct, independent of the blacklist. This new
'consecutive_conn_failures' is iterated with every connection failure
and cleared when any successful connection is made. This change also
removes the now unused 'extra_blacklist_count' value.
Signed-off-by: Kevin Lund <kglund@google.com>
Signed-off-by: Brian Norris <briannorris@chromium.org>
Diffstat (limited to 'wpa_supplicant/blacklist.c')
-rw-r--r-- | wpa_supplicant/blacklist.c | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/wpa_supplicant/blacklist.c b/wpa_supplicant/blacklist.c index e53dc38..2e01e7f 100644 --- a/wpa_supplicant/blacklist.c +++ b/wpa_supplicant/blacklist.c @@ -123,19 +123,14 @@ int wpa_blacklist_del(struct wpa_supplicant *wpa_s, const u8 *bssid) void wpa_blacklist_clear(struct wpa_supplicant *wpa_s) { struct wpa_blacklist *e, *prev; - int max_count = 0; e = wpa_s->blacklist; wpa_s->blacklist = NULL; while (e) { - if (e->count > max_count) - max_count = e->count; prev = e; e = e->next; wpa_printf(MSG_DEBUG, "Removed BSSID " MACSTR " from " "blacklist (clear)", MAC2STR(prev->bssid)); os_free(prev); } - - wpa_s->extra_blacklist_count += max_count; } |