prima: Enable split scan immediately after GO is started
Currently split scan is enabled when stats timer is invoked
(hdd_tx_rx_pkt_cnt_stat_timer_handler).It could be possible that,
during a P2P connection after GO is started, a scan is triggered
before the stat timer is invoked leading to a full scan, due to
which a client can receive a beacon miss resulting in connection
failure or disconnection.
CRs-Fixed: 928153
Change-Id: Ifff1e123cbf3b5362535f1b02594dab92ccd4436
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index ff0418d..69fdb2d 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -811,6 +811,7 @@
struct iw_michaelmicfailure msg;
v_CONTEXT_t pVosContext = NULL;
ptSapContext pSapCtx = NULL;
+ hdd_config_t *cfg_param;
dev = (struct net_device *)usrDataForCallback;
pHostapdAdapter = netdev_priv(dev);
@@ -834,6 +835,8 @@
sapEvent = pSapEvent->sapHddEventCode;
memset(&wrqu, '\0', sizeof(wrqu));
pHddCtx = (hdd_context_t*)(pHostapdAdapter->pHddCtx);
+ cfg_param = pHddCtx->cfg_ini;
+
switch(sapEvent)
{
@@ -845,14 +848,27 @@
pHostapdState->vosStatus = pSapEvent->sapevt.sapStartBssCompleteEvent.status;
vos_status = vos_event_set(&pHostapdState->vosEvent);
-
+
if (!VOS_IS_STATUS_SUCCESS(vos_status) || pHostapdState->vosStatus)
- {
+ {
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, ("ERROR: startbss event failed!!"));
goto stopbss;
}
else
- {
+ {
+ if (pHostapdAdapter->device_mode == WLAN_HDD_P2P_GO)
+ {
+ if ((cfg_param->dynSplitscan) &&
+ (!pHddCtx->issplitscan_enabled))
+ {
+ pHddCtx->issplitscan_enabled = TRUE;
+ sme_enable_disable_split_scan(
+ WLAN_HDD_GET_HAL_CTX(pHostapdAdapter),
+ cfg_param->nNumStaChanCombinedConc,
+ cfg_param->nNumP2PChanCombinedConc);
+ }
+ }
+
pHddApCtx->uBCStaId = pSapEvent->sapevt.sapStartBssCompleteEvent.staId;
//@@@ need wep logic here to set privacy bit
vos_status = hdd_softap_Register_BC_STA(pHostapdAdapter, pHddApCtx->uPrivacy);
@@ -862,7 +878,7 @@
hdd_stop_bss_link(pHostapdAdapter, usrDataForCallback);
}
}
-
+
if (0 != (WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->nAPAutoShutOff)
{
// AP Inactivity timer init and start