wlan: Allow PNO during any ongoing or active session
Currently firmware supports PNO scan in case of
active session.
Allow support for PNO scan from driver side.
Change-Id: I3d564368a18534499d1a309ab258f5923382362e
CRs-Fixed: 1102356
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index b4e5228..4e45232 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -17251,11 +17251,19 @@
hdd_station_ctx_t *pStaCtx;
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
int status = 0;
+
+ if (WLAN_HDD_INFRA_STATION != pAdapter->device_mode)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "%s: PNO is allowed only in STA interface", __func__);
+ return eHAL_STATUS_FAILURE;
+ }
+
status = hdd_get_front_adapter(pHddCtx, &pAdapterNode);
/* The current firmware design does not allow PNO during any
- * active sessions. Hence, determine the active sessions
- * and return a failure.
+ * active sessions. PNO is allowed only in case when sap session
+ * is present and sapo auth offload feature enabled in firmare.
*/
while ((NULL != pAdapterNode) && (VOS_STATUS_SUCCESS == status))
{
@@ -17266,7 +17274,8 @@
&& (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)
+ || (WLAN_HDD_SOFTAP == pTempAdapter->device_mode &&
+ !pHddCtx->cfg_ini->enable_sap_auth_offload)
|| (WLAN_HDD_TM_LEVEL_4 == pHddCtx->tmInfo.currentTmLevel)
)
{
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 4206760..c8e8530 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -27000,17 +27000,18 @@
WDI_ASSERT(0);
return WDI_STATUS_E_FAILURE;
}
-
/*----------------------------------------------------------------------
Avoid Enable PNO during any active session or an ongoing session
- ----------------------------------------------------------------------*/
- if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
- WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
+ Allow only if SAP auth offload feature is enabled
+ ----------------------------------------------------------------------*/
+ if ((pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
+ WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) &&
+ !WDI_getFwWlanFeatCaps(SAP_OFFLOADS))
{
- WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
"%s:(Active/Ongoing Session) - Fail request", __func__);
- return WDI_STATUS_E_FAILURE;
+ return WDI_STATUS_E_FAILURE;
}
/*-------------------------------------------------------------------------