summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVarun Reddy Yeturu <vyeturu@qca.qualcomm.com>2014-10-09 18:18:51 -0700
committerAnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com>2014-10-10 16:07:42 +0530
commitca9e2166b4bfe18c96efac0803aa5ea185a810ad (patch)
treec56bfcfdbe5bc69108be41ffa996cf32bd8cb299
parentc52bef018cad92090c7a228f2d1b8daefd3e2c31 (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.c21
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);