wlan: Allow sched scan start request only in dis-connected state
Support Sched scan start only in disconnected state.
Change-Id: Ief6f683b81b6b7acd4e6ffe6e186d9e45bda27c2
Crs-Fixed: 593797
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 27d3e8c..0d78c10 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -7839,6 +7839,7 @@
{
hdd_adapter_list_node_t *pAdapterNode = NULL, *pNext = NULL;
hdd_adapter_t *pTempAdapter = NULL;
+ hdd_station_ctx_t *pStaCtx;
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
int status = 0;
status = hdd_get_front_adapter(pHddCtx, &pAdapterNode);
@@ -7846,22 +7847,21 @@
while ((NULL != pAdapterNode) && (VOS_STATUS_SUCCESS == status))
{
pTempAdapter = pAdapterNode->pAdapter;
+ pStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pTempAdapter);
- if (pTempAdapter != pAdapter)
+ if (((WLAN_HDD_INFRA_STATION == pTempAdapter->device_mode)
+ && (eConnectionState_NotConnected != pStaCtx->conn_info.connState))
+ || (WLAN_HDD_P2P_CLIENT == pTempAdapter->device_mode)
+ || (WLAN_HDD_P2P_GO == pTempAdapter->device_mode)
+ || (WLAN_HDD_SOFTAP == pTempAdapter->device_mode)
+ )
{
- if (((WLAN_HDD_INFRA_STATION == pTempAdapter->device_mode) &&
- (eConnectionState_NotConnected != (WLAN_HDD_GET_STATION_CTX_PTR(pTempAdapter))->conn_info.connState)) ||
- (WLAN_HDD_P2P_CLIENT == pTempAdapter->device_mode) ||
- (WLAN_HDD_P2P_GO == pTempAdapter->device_mode) ||
- (WLAN_HDD_SOFTAP == pTempAdapter->device_mode))
- {
- return eHAL_STATUS_SUCCESS;
- }
+ return eHAL_STATUS_FAILURE;
}
status = hdd_get_next_adapter ( pHddCtx, pAdapterNode, &pNext );
pAdapterNode = pNext;
}
- return eHAL_STATUS_FAILURE;
+ return eHAL_STATUS_SUCCESS;
}
/*
@@ -7906,15 +7906,16 @@
"%s: HAL context is Null!!!", __func__);
return -EINVAL;
}
+
/* The current firmware design for PNO does not consider concurrent
* active sessions.Hence , determine the concurrent active sessions
* and return a failure to the framework on a request for schedule
* scan.
*/
- if (eHAL_STATUS_SUCCESS == wlan_hdd_is_pno_allowed(pAdapter))
+ if (eHAL_STATUS_SUCCESS != wlan_hdd_is_pno_allowed(pAdapter))
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- "%s: Cannot handle sched_scan as p2p session is active", __func__);
+ FL("Cannot handle sched_scan"));
return -EBUSY;
}