diff options
| author | Varun Reddy Yeturu <vyeturu@qca.qualcomm.com> | 2014-10-09 18:18:51 -0700 |
|---|---|---|
| committer | AnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com> | 2014-10-10 16:07:42 +0530 |
| commit | ca9e2166b4bfe18c96efac0803aa5ea185a810ad (patch) | |
| tree | c56bfcfdbe5bc69108be41ffa996cf32bd8cb299 | |
| parent | c52bef018cad92090c7a228f2d1b8daefd3e2c31 (diff) | |
wlan: qca-cld: LFR3: Exception Handling
1) Ignore the roam synch indications when one is in progress
2) Do not send roam synch complete when roam synch is not in progress
Change-Id: I38e7c3069f1e0177d35afdbd891f3229bfcdf1f3
CRs-Fixed: 736943
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index a271fd9d36dc..1b4dfc3130dd 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -4724,6 +4724,12 @@ static int wma_roam_synch_event_handler(void *handle, u_int8_t *event, u_int32_t return -EINVAL; } + if(wma->interfaces[synch_event->vdev_id].roam_synch_in_progress == + VOS_TRUE) { + WMA_LOGE("%s: Ignoring RSI since one is already in progress", + __func__); + return -EINVAL; + } wma->interfaces[synch_event->vdev_id].roam_synch_in_progress = VOS_TRUE; len = sizeof(tSirSmeRoamOffloadSynchInd) + synch_event->bcn_probe_rsp_len + @@ -27245,6 +27251,7 @@ void wma_process_roam_synch_complete(WMA_HANDLE handle, wmi_buf_t wmi_buf; u_int8_t *buf_ptr; u_int16_t len; + v_BOOL_t roam_synch_in_progress; len = sizeof(wmi_roam_synch_complete_fixed_param); if (!wma_handle || !wma_handle->wmi_handle) { @@ -27252,11 +27259,19 @@ void wma_process_roam_synch_complete(WMA_HANDLE handle, __func__); return; } - wma_handle->interfaces[synchcnf->sessionId].roam_synch_in_progress = - VOS_FALSE; + roam_synch_in_progress = + wma_handle->interfaces[synchcnf->sessionId].roam_synch_in_progress; + if (roam_synch_in_progress == VOS_FALSE) { + WMA_LOGE("%s: Dont send the roam synch complete since Roam Synch" + "Propagation is not in Progress", __func__); + return; + } else { + wma_handle->interfaces[synchcnf->sessionId].roam_synch_in_progress = + VOS_FALSE; + } wmi_buf = wmi_buf_alloc(wma_handle->wmi_handle, len); if (!wmi_buf) { - WMA_LOGE("%s: wmai_buf_alloc failed", __func__); + WMA_LOGE("%s: wmi_buf_alloc failed", __func__); return; } cmd = (wmi_roam_synch_complete_fixed_param *)wmi_buf_data(wmi_buf); |
