aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant/events.c
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2012-06-18 09:39:07 -0700
committerIrfan Sheriff <isheriff@google.com>2012-06-18 15:24:25 -0700
commit7db4ef75f0190d98dbc84f8968ede3ac0ae29571 (patch)
tree80b639b3f83f87d56356d27401f215bdb2ee85d2 /wpa_supplicant/events.c
parent61dc7fcf73a67f1611a17db5b8170fb468e5137b (diff)
downloadexternal_wpa_supplicant_8-7db4ef75f0190d98dbc84f8968ede3ac0ae29571.zip
external_wpa_supplicant_8-7db4ef75f0190d98dbc84f8968ede3ac0ae29571.tar.gz
external_wpa_supplicant_8-7db4ef75f0190d98dbc84f8968ede3ac0ae29571.tar.bz2
Restore STA reconnection behavior
Have the customized retry behavior only for P2P & do group failure indication beyond 5 retries Bug: 6674338 Change-Id: I58cba356ebdb7fc4eaa9bedfa417b7d5d35bb306
Diffstat (limited to 'wpa_supplicant/events.c')
-rw-r--r--wpa_supplicant/events.c51
1 files changed, 34 insertions, 17 deletions
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index e729e82..5ce5b72 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -2263,23 +2263,40 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)
sme_event_assoc_reject(wpa_s, data);
#ifdef ANDROID_P2P
- /* If assoc reject is reported by the driver, then avoid
- * waiting for the authentication timeout. Cancel the
- * authentication timeout and retry the assoc.
- */
- if(wpa_s->assoc_retries++ < 5) {
- wpa_printf(MSG_ERROR, "Retrying assoc "
- "Iteration:%d", wpa_s->assoc_retries);
- wpa_supplicant_cancel_auth_timeout(wpa_s);
-
- /* Clear the states */
- wpa_sm_notify_disassoc(wpa_s->wpa);
- wpa_supplicant_disassociate(wpa_s, WLAN_REASON_DEAUTH_LEAVING);
-
- wpa_s->reassociate = 1;
- wpa_supplicant_req_scan(wpa_s, 1, 0);
- } else
- wpa_s->assoc_retries = 0;
+#ifdef CONFIG_P2P
+ else if (wpa_s->p2p_group_interface != NOT_P2P_GROUP_INTERFACE) {
+
+ if(!wpa_s->current_ssid) {
+ wpa_printf(MSG_ERROR, "current_ssid == NULL");
+ break;
+ }
+ /* If assoc reject is reported by the driver, then avoid
+ * waiting for the authentication timeout. Cancel the
+ * authentication timeout and retry the assoc.
+ */
+ if(wpa_s->current_ssid->assoc_retry++ < 5) {
+ wpa_printf(MSG_ERROR, "Retrying assoc: %d ",
+ wpa_s->current_ssid->assoc_retry);
+ wpa_supplicant_cancel_auth_timeout(wpa_s);
+
+ /* Clear the states */
+ wpa_sm_notify_disassoc(wpa_s->wpa);
+ wpa_supplicant_deauthenticate(wpa_s, WLAN_REASON_DEAUTH_LEAVING);
+
+ wpa_s->reassociate = 1;
+ wpa_supplicant_req_scan(wpa_s, 1, 0);
+ } else {
+ /* If we ASSOC_REJECT's hits threshold, disable the
+ * network
+ */
+ wpa_printf(MSG_ERROR, "Assoc retry threshold reached. "
+ "Disabling the network");
+ wpa_s->current_ssid->assoc_retry = 0;
+ wpa_supplicant_disable_network(wpa_s, wpa_s->current_ssid);
+ wpas_p2p_group_remove(wpa_s, wpa_s->ifname);
+ }
+ }
+#endif
#endif /* ANDROID_P2P */
break;
case EVENT_AUTH_TIMED_OUT: