/*********************************************************************** * rsnWait_to_waitToDisconnCmplt *********************************************************************** DESCRIPTION: INPUT: OUTPUT: RETURN: TI_OK on success, TI_NOK otherwise ************************************************************************/ static TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData) { paramInfo_t param; TI_STATUS tStatus; conn_t *pConn = (conn_t *)pData; tStatus = rsn_stop(((conn_t *)pData)->hRsn, TI_FALSE); param.paramType = RX_DATA_PORT_STATUS_PARAM; param.content.rxDataPortStatus = CLOSE; rxData_setParam(((conn_t *)pData)->hRxData, ¶m); /* Update TxMgmtQueue SM to close Tx path. */ txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_CLOSE); /* Update current BSS connection type and mode */ currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_FALSE, BSS_INDEPENDENT); /* Start the disconnect complete time out timer. Disconect Complete event, which stops the timer. */ tmr_StartTimer (pConn->hConnTimer, conn_timeout, (TI_HANDLE)pConn, DISCONNECT_TIMEOUT_MSEC, TI_FALSE); /* Stop beacon generation */ TWD_CmdFwDisconnect (((conn_t *)pData)->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED); return tStatus; }
static TI_STATUS stopModules( conn_t *pConn ) { measurementMgr_disconnected(pConn->hMeasurementMgr); rxData_stop(pConn->hRxData); ctrlData_stop(pConn->hCtrlData); TrafficMonitor_Stop(pConn->hTrafficMonitor); switchChannel_stop(pConn->hSwitchChannel); healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_DISCONNECTED); siteMgr_stop(pConn->hSiteMgr); /* stopping power save */ PowerMgr_stopPS(pConn->hPwrMngr); scanConcentrator_switchToNotConnected( pConn->hScanCnc ); /* Set Current BSS Module to stop triggerring roaming events */ currBSS_updateConnectedState(pConn->hCurrBss, FALSE, BSS_INFRASTRUCTURE); SoftGemini_unSetPSmode(pConn->hSoftGemini); return OK; }
/*********************************************************************** * idle_to_selfWait *********************************************************************** DESCRIPTION: INPUT: OUTPUT: RETURN: TI_OK on success, TI_NOK otherwise ************************************************************************/ static TI_STATUS idle_to_selfWait (void *pData) { conn_t *pConn = (conn_t *)pData; TI_UINT16 randomTime; siteMgr_join (pConn->hSiteMgr); /* get a randomTime that is constructed of the lower 13 bits ot the system time to get a MS random time of ~8000 ms */ randomTime = os_timeStampMs (pConn->hOs) & 0x1FFF; /* Update current BSS connection type and mode */ currBSS_updateConnectedState (pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT); tmr_StartTimer (pConn->hConnTimer, conn_timeout, (TI_HANDLE)pConn, pConn->timeout + randomTime, TI_FALSE); /* Notify that the driver is associated to the supplicant\IP stack. */ EvHandlerSendEvent (pConn->hEvHandler, IPC_EVENT_ASSOCIATED, NULL, 0); return TI_OK; }
/*********************************************************************** * rsnWait_to_connected *********************************************************************** DESCRIPTION: INPUT: OUTPUT: RETURN: TI_OK on success, TI_NOK otherwise ************************************************************************/ static TI_STATUS rsnWait_to_connected(void *pData) { paramInfo_t param; conn_t *pConn=(conn_t *)pData; TrafficMonitor_Start( pConn->hTrafficMonitor ); healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_CONNECTED); siteMgr_start(pConn->hSiteMgr); param.paramType = RX_DATA_PORT_STATUS_PARAM; param.content.rxDataPortStatus = OPEN; rxData_setParam(((conn_t *)pData)->hRxData, ¶m); /* Update TxMgmtQueue SM to open Tx path to all packets. */ txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_OPEN); /* Update current BSS connection type and mode */ currBSS_updateConnectedState(pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT); #ifdef REPORT_LOG WLAN_OS_REPORT(("************ NEW CONNECTION ************\n")); siteMgr_printPrimarySiteDesc(pConn->hSiteMgr); WLAN_OS_REPORT(("****************************************\n")); #endif sme_ReportConnStatus(((conn_t *)pData)->hSmeSm, STATUS_SUCCESSFUL, 0); return TI_OK; }
static TI_STATUS configHW_to_connected(void *pData) { conn_t *pConn=(conn_t *)pData; EScrResourceId uResourceIndex; /* Update TxMgmtQueue SM to open Tx path to all packets. */ txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_OPEN); #ifdef XCC_MODULE_INCLUDED XCCMngr_updateIappInformation(pConn->hXCCMngr, XCC_ASSOC_OK); #endif /* Start keep alive process */ siteMgr_start(pConn->hSiteMgr); /* free both SCR resources */ for (uResourceIndex = SCR_RESOURCE_SERVING_CHANNEL; uResourceIndex < SCR_RESOURCE_NUM_OF_RESOURCES; uResourceIndex++) { scr_clientComplete(pConn->hScr, SCR_CID_CONNECT, uResourceIndex ); pConn->scrRequested[ uResourceIndex ] = TI_FALSE; } /* Update current BSS connection type and mode */ currBSS_updateConnectedState(pConn->hCurrBss, TI_TRUE, BSS_INFRASTRUCTURE); pConn->pConnStatusCB( pConn->connStatCbObj, STATUS_SUCCESSFUL, 0); SoftGemini_SetPSmode(pConn->hSoftGemini); return TI_OK; }
/*********************************************************************** * rsnWait_to_waitToDisconnCmplt *********************************************************************** DESCRIPTION: INPUT: OUTPUT: RETURN: TI_OK on success, TI_NOK otherwise ************************************************************************/ static TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData) { paramInfo_t param; TI_STATUS tStatus; tStatus = rsn_stop(((conn_t *)pData)->hRsn, TI_FALSE); param.paramType = RX_DATA_PORT_STATUS_PARAM; param.content.rxDataPortStatus = CLOSE; rxData_setParam(((conn_t *)pData)->hRxData, ¶m); /* Update TxMgmtQueue SM to close Tx path. */ txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_CLOSE); /* Update current BSS connection type and mode */ currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_FALSE, BSS_INDEPENDENT); /* Stop beacon generation */ TWD_CmdFwDisconnect (((conn_t *)pData)->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED); return tStatus; }
/*********************************************************************** * idle_to_selfWait *********************************************************************** DESCRIPTION: INPUT: OUTPUT: RETURN: TI_OK on success, TI_NOK otherwise ************************************************************************/ static TI_STATUS idle_to_selfWait (void *pData) { conn_t *pConn = (conn_t *)pData; TI_UINT16 randomTime; siteMgr_join (pConn->hSiteMgr); /* get a randomTime that is constructed of the lower 13 bits ot the system time to get a MS random time of ~8000 ms */ randomTime = os_timeStampMs (pConn->hOs) & 0x1FFF; /* Update current BSS connection type and mode */ currBSS_updateConnectedState (pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT); tmr_StartTimer (pConn->hConnTimer, conn_timeout, (TI_HANDLE)pConn, pConn->timeout + randomTime, TI_FALSE); return TI_OK; }
static TI_STATUS configHW_to_connected(void *pData) { conn_t *pConn=(conn_t *)pData; EScrResourceId uResourceIndex; /* Update TxMgmtQueue SM to open Tx path to all packets. */ txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_OPEN); /* Start keep alive process */ siteMgr_start(pConn->hSiteMgr); /* free both SCR resources */ for (uResourceIndex = SCR_RESOURCE_SERVING_CHANNEL; uResourceIndex < SCR_RESOURCE_NUM_OF_RESOURCES; uResourceIndex++) { scr_clientComplete(pConn->hScr, SCR_CID_CONNECT, uResourceIndex ); pConn->scrRequested[ uResourceIndex ] = TI_FALSE; } /* Update current BSS connection type and mode */ currBSS_updateConnectedState(pConn->hCurrBss, TI_TRUE, BSS_INFRASTRUCTURE); pConn->pConnStatusCB( pConn->connStatCbObj, STATUS_SUCCESSFUL, 0); SoftGemini_SetPSmode(pConn->hSoftGemini); #ifdef REPORT_LOG TRACE0(pConn->hReport, REPORT_SEVERITY_CONSOLE, "************ NEW CONNECTION ************\n"); WLAN_OS_REPORT(("************ NEW CONNECTION ************\n")); siteMgr_printPrimarySiteDesc(pConn->hSiteMgr); TRACE0(pConn->hReport, REPORT_SEVERITY_CONSOLE, "****************************************\n"); WLAN_OS_REPORT(("****************************************\n")); #else os_printf("%s: *** NEW CONNECTION ***\n", __func__); #endif return TI_OK; }
static TI_STATUS configHW_to_connected(void *pData) { TI_STATUS status; paramInfo_t param; conn_t *pConn=(conn_t *)pData; param.paramType = TX_DATA_PORT_STATUS_PARAM; param.content.txDataPortStatus = OPEN; status = txData_setParam(pConn->hTxData, ¶m); if (status != OK) return status; #ifdef EXC_MODULE_INCLUDED excMngr_updateIappInformation(pConn->hExcMngr, EXC_ASSOC_OK); #endif /* Start keep alive process */ siteMgr_start(pConn->hSiteMgr); scr_clientComplete( pConn->hScr, SCR_CID_CONNECT ); pConn->scrRequested = FALSE; /* Update current BSS connection type and mode */ currBSS_updateConnectedState(pConn->hCurrBss, TRUE, BSS_INFRASTRUCTURE); pConn->pConnStatusCB( pConn->connStatCbObj, STATUS_SUCCESSFUL, 0); /* set Hw not available now that the connection process ended successfully */ MacServices_powerAutho_AwakeRequiredUpdate(pConn->hMacServices, POWERAUTHO_AWAKE_NOT_REQUIRED, POWERAUTHO_AWAKE_REASON_CONNECTION); SoftGemini_SetPSmode(pConn->hSoftGemini); WLAN_OS_REPORT(("************ NEW CONNECTION ************\n")); siteMgr_printPrimarySiteDesc(pConn->hSiteMgr); return OK; }
/*********************************************************************** * idle_to_rsnWait *********************************************************************** DESCRIPTION: INPUT: OUTPUT: RETURN: TI_OK on success, TI_NOK otherwise ************************************************************************/ static TI_STATUS idle_to_rsnWait(void *pData) { paramInfo_t param; siteMgr_join(((conn_t *)pData)->hSiteMgr); param.paramType = RX_DATA_PORT_STATUS_PARAM; param.content.rxDataPortStatus = OPEN_EAPOL; rxData_setParam(((conn_t *)pData)->hRxData, ¶m); /* Update TxMgmtQueue SM to enable EAPOL packets. */ txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_EAPOL); /* * Notify that the driver is associated to the supplicant\IP stack. */ EvHandlerSendEvent(((conn_t *)pData)->hEvHandler, IPC_EVENT_ASSOCIATED, NULL,0); /* Update current BSS connection type and mode */ currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_TRUE, BSS_INDEPENDENT); return rsn_start(((conn_t *)pData)->hRsn); }
/*********************************************************************** * selfWait_to_waitToDisconnCmplt *********************************************************************** DESCRIPTION: INPUT: OUTPUT: RETURN: TI_OK on success, TI_NOK otherwise ************************************************************************/ static TI_STATUS selfWait_to_waitToDisconnCmplt (void *pData) { conn_t *pConn = (conn_t *)pData; paramInfo_t param; tmr_StopTimer (pConn->hConnTimer); siteMgr_removeSelfSite(pConn->hSiteMgr); /* Update current BSS connection type and mode */ currBSS_updateConnectedState(pConn->hCurrBss, TI_FALSE, BSS_INDEPENDENT); /* stop beacon generation */ param.paramType = RX_DATA_PORT_STATUS_PARAM; param.content.rxDataPortStatus = CLOSE; rxData_setParam(pConn->hRxData, ¶m); /* Update TxMgmtQueue SM to close Tx path. */ txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_CLOSE); TWD_CmdFwDisconnect (pConn->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED); return TI_OK; }