From 818a652e86cccac651273f258fd63a38ba0529bf Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Thu, 24 Oct 2019 17:43:05 -0700 Subject: [PATCH] MIDDLEWARE-2134: Fix spurious link up/down when AP IP address range changes Fixed additional link down/up events in whd_wifi_link_state_change_handler by checking additional condition during the transition. --- .../TARGET_WHD/interface/WhdSTAInterface.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/features/netsocket/emac-drivers/TARGET_WHD/interface/WhdSTAInterface.cpp b/features/netsocket/emac-drivers/TARGET_WHD/interface/WhdSTAInterface.cpp index ce5abcd4eb..b7d46ad176 100644 --- a/features/netsocket/emac-drivers/TARGET_WHD/interface/WhdSTAInterface.cpp +++ b/features/netsocket/emac-drivers/TARGET_WHD/interface/WhdSTAInterface.cpp @@ -162,13 +162,21 @@ static void *whd_wifi_link_state_change_handler(whd_interface_t ifp, return NULL; } - if (event_header->event_type == WLC_E_DEAUTH_IND || - event_header->event_type == WLC_E_DISASSOC_IND) { + if ((event_header->event_type == WLC_E_DEAUTH_IND) || + (event_header->event_type == WLC_E_DISASSOC_IND) || + ((event_header->event_type == WLC_E_PSK_SUP) && + (event_header->status == WLC_SUP_KEYED) && + (event_header->reason == WLC_E_SUP_DEAUTH))) { whd_emac_wifi_link_state_changed(ifp, WHD_FALSE); + return handler_user_data; } - if (whd_wifi_is_ready_to_transceive(ifp) == WHD_SUCCESS) { + if (((event_header->event_type == WLC_E_PSK_SUP) && + (event_header->status == WLC_SUP_KEYED) && + (event_header->reason == WLC_E_SUP_OTHER)) || + (whd_wifi_is_ready_to_transceive(ifp) == WHD_SUCCESS)) { whd_emac_wifi_link_state_changed(ifp, WHD_TRUE); + return handler_user_data; } return handler_user_data;