diff options
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_assoc.c | 7 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 9 |
2 files changed, 16 insertions, 0 deletions
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c index 63d7b7954919..762689a7374d 100644 --- a/CORE/HDD/src/wlan_hdd_assoc.c +++ b/CORE/HDD/src/wlan_hdd_assoc.c @@ -2415,6 +2415,13 @@ eHalStatus hdd_smeRoamCallback( void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U3 } break; case eCSR_ROAM_LOSTLINK: + if(roamResult == eCSR_ROAM_RESULT_LOSTLINK) { + VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, + "Roaming started due to connection lost"); + netif_tx_disable(pAdapter->dev); + netif_carrier_off(pAdapter->dev); + break; + } case eCSR_ROAM_DISASSOCIATED: { hdd_context_t* pHddCtx = (hdd_context_t*)pAdapter->pHddCtx; diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index becbba0a5cd5..4f8831792550 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -13767,6 +13767,15 @@ static void csrRoamLinkDown(tpAniSirGlobal pMac, tANI_U32 sessionId) { return; } + /* + * Incase of station mode, immediately stop data transmission whenever + * link down is detected. + */ + if (csrRoamIsStaMode(pMac, sessionId)) { + smsLog(pMac, LOG1, FL("Inform Link lost for session %d"), sessionId); + csrRoamCallCallback(pMac, sessionId, NULL, 0, eCSR_ROAM_LOSTLINK, + eCSR_ROAM_RESULT_LOSTLINK); + } /* deregister the clients requesting stats from PE/TL & also stop the corresponding timers*/ csrRoamDeregStatisticsReq(pMac); pMac->roam.vccLinkQuality = eCSR_ROAM_LINK_QUAL_POOR_IND; |
