diff options
| author | Kalikinkar dhara <c_kaliki@qca.qualcomm.com> | 2014-04-07 16:59:05 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-04-10 07:12:43 -0700 |
| commit | 461083dfef646a3d00d7c495edc66cd534cfd417 (patch) | |
| tree | f4338ff80c735b7f12d1dd9a425b22467beea273 | |
| parent | 31f15243360fdb162c549095e229255a2b36cb8f (diff) | |
qcacld: Do not process SIGNAL_POLL request if roaming is in progress
When framework issues signal_poll request to get the statistics of
the station, supplicant shall get blocked for a maximum period of
800 msec waiting for the response if the processing of the
corresponding command fails in the host driver. This time out is
configured by WLAN_WAIT_TIME_STATS.
It is observed that if the signal_poll command is issued when the
device is trying to roam, the host driver times out to get the
response and thus the supplicant is blocked for this duration.
This results in the failed security association (4-way handshake)
with the AP as the supplicant shall not receive any of the events
from the driver till it gets the response from the driver as part
of the signal_poll command.
Thus do not process signal_poll request in the host driver if the
device is in the roaming state.
(Cherry picked from I0bea7027fd2fc54ac188251082e14b0d84d877aa)
CRs-Fixed: 644762
Change-Id: I57a8a71a5c11794cdd3fc881d81b5c19424cd5a6
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index 6d2e591fedd3..e43b7625a539 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -15559,6 +15559,13 @@ eHalStatus csrGetStatistics(tpAniSirGlobal pMac, eCsrStatsRequesterType requeste //smsLog(pMac, LOGW, "csrGetStatistics: wrong state curState(%d) not connected", pMac->roam.curState); return eHAL_STATUS_FAILURE; } + + if (csrNeighborMiddleOfRoaming((tHalHandle)pMac)) + { + smsLog(pMac, LOG1, FL("in the middle of roaming states")); + return eHAL_STATUS_FAILURE; + } + if((!statsMask) && (!callback)) { //msg |
