diff options
author | Quaker Fang <Quaker.Fang@Sun.COM> | 2008-11-26 10:20:48 +0800 |
---|---|---|
committer | Quaker Fang <Quaker.Fang@Sun.COM> | 2008-11-26 10:20:48 +0800 |
commit | fe3e6e3a98f98e7ab1a751934c0116fb914b9c82 (patch) | |
tree | 8514dd8856ba9a63469d8594adbed9cb82862d67 /usr/src/cmd/cmd-inet/usr.lib/wpad/wpa_supplicant.c | |
parent | 11fde2dbebcdb8d699c8e033cc1c342167ca3322 (diff) | |
download | illumos-gate-fe3e6e3a98f98e7ab1a751934c0116fb914b9c82.tar.gz |
6708829 ral needs to support Suspend/Resume
6775915 rum driver failed to connect to WPA access point sometimes
Diffstat (limited to 'usr/src/cmd/cmd-inet/usr.lib/wpad/wpa_supplicant.c')
-rw-r--r-- | usr/src/cmd/cmd-inet/usr.lib/wpad/wpa_supplicant.c | 42 |
1 files changed, 16 insertions, 26 deletions
diff --git a/usr/src/cmd/cmd-inet/usr.lib/wpad/wpa_supplicant.c b/usr/src/cmd/cmd-inet/usr.lib/wpad/wpa_supplicant.c index 1bc2953afe..8995fe7f92 100644 --- a/usr/src/cmd/cmd-inet/usr.lib/wpad/wpa_supplicant.c +++ b/usr/src/cmd/cmd-inet/usr.lib/wpad/wpa_supplicant.c @@ -9,8 +9,6 @@ * See README for more details. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <stdio.h> #include <stdlib.h> #include <stdarg.h> @@ -493,33 +491,19 @@ void wpa_event_handler(void *cookie, wpa_event_type event) { struct wpa_supplicant *wpa_s = cookie; - uint8_t bssid[IEEE80211_ADDR_LEN]; switch (event) { case EVENT_ASSOC: - wpa_s->wpa_state = WPA_ASSOCIATED; - wpa_printf(MSG_DEBUG, "\nAssociation event - clear replay " - "counter\n"); - (void) memset(wpa_s->rx_replay_counter, 0, - WPA_REPLAY_COUNTER_LEN); - wpa_s->rx_replay_counter_set = 0; - wpa_s->renew_snonce = 1; - if (wpa_s->driver->get_bssid(wpa_s->linkid, - (char *)bssid) >= 0 && - memcmp(bssid, wpa_s->bssid, IEEE80211_ADDR_LEN) != 0) { - wpa_printf(MSG_DEBUG, "Associated to a new BSS: " - "BSSID=" MACSTR, MAC2STR(bssid)); - (void) memcpy(wpa_s->bssid, bssid, IEEE80211_ADDR_LEN); - if (wpa_s->key_mgmt != WPA_KEY_MGMT_NONE) - wpa_clear_keys(wpa_s, bssid); - } - - wpa_s->eapol_received = 0; - if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE) { - wpa_supplicant_cancel_auth_timeout(wpa_s); - } else { - /* Timeout for receiving the first EAPOL packet */ - wpa_supplicant_req_auth_timeout(wpa_s, 10, 0); + wpa_printf(MSG_DEBUG, "\nAssociation event\n"); + /* async event */ + if (wpa_s->wpa_state < WPA_ASSOCIATED) { + wpa_s->wpa_state = WPA_ASSOCIATED; + if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE) { + wpa_supplicant_cancel_auth_timeout(wpa_s); + } else { + /* Timeout for receiving first EAPOL packet */ + wpa_supplicant_req_auth_timeout(wpa_s, 10, 0); + } } break; case EVENT_DISASSOC: @@ -532,6 +516,12 @@ wpa_event_handler(void *cookie, wpa_event_type event) break; case EVENT_SCAN_RESULTS: wpa_supplicant_scan_results(wpa_s); + /* reset vars */ + (void) memset(wpa_s->rx_replay_counter, 0, + WPA_REPLAY_COUNTER_LEN); + wpa_s->rx_replay_counter_set = 0; + wpa_s->renew_snonce = 1; + wpa_s->eapol_received = 0; break; default: wpa_printf(MSG_INFO, "Unknown event %d", event); |