/* STOP_MLME, SET_DATA_PORT_CLOSE, DIS_JOIN */ static TI_STATUS mlmeWait_to_WaitDisconnect(void *pData) { TI_STATUS status; paramInfo_t *pParam; conn_t *pConn = (conn_t *)pData; status = mlme_stop( pConn->hMlme, DISCONNECT_IMMEDIATE, pConn->disConnReasonToAP ); if (status != TI_OK) return status; pParam = (paramInfo_t *)os_memoryAlloc(pConn->hOs, sizeof(paramInfo_t)); if (!pParam) { return TI_NOK; } pParam->paramType = RX_DATA_PORT_STATUS_PARAM; pParam->content.rxDataPortStatus = CLOSE; rxData_setParam(pConn->hRxData, pParam); /* Update TxMgmtQueue SM to close Tx path. */ txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_CLOSE); /* 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); /* FW will send the disconn frame according to disConnType */ TWD_CmdFwDisconnect (pConn->hTWD, pConn->disConnType, pConn->disConnReasonToAP); os_memoryFree(pConn->hOs, pParam, sizeof(paramInfo_t)); 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; 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; }
/* This function is called from the WAIT_FOR_JOIN_CB_CMPLT state (before mlme_start) - all we need to do is call siteMgr_disJoin */ static TI_STATUS JoinWait_to_WaitDisconnect(void *pData) { conn_t *pConn = (conn_t *)pData; /* 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); /* FW will send the disconn frame according to disConnType */ TWD_CmdFwDisconnect (pConn->hTWD, pConn->disConnType, pConn->disConnReasonToAP); return TI_OK; }
static TI_STATUS prepare_send_disconnect(void *pData) { conn_t *pConn = (conn_t *)pData; txCtrlParams_setEapolEncryptionStatus(pConn->hTxCtrl, DEF_EAPOL_ENCRYPTION_STATUS); qosMngr_disconnect (pConn->hQosMngr, TI_TRUE); /* 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); /* FW will send the disconn frame according to disConnType */ TWD_CmdFwDisconnect (pConn->hTWD, pConn->disConnType, pConn->disConnReasonToAP); 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; }
/*********************************************************************** * 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; }
static TI_STATUS prepare_send_disconnect(void *pData) { conn_t *pConn = (conn_t *)pData; txCtrlParams_setEapolEncryptionStatus(pConn->hTxCtrl, DEF_EAPOL_ENCRYPTION_STATUS); qosMngr_disconnect (pConn->hQosMngr, TI_TRUE); #ifdef XCC_MODULE_INCLUDED measurementMgr_disableTsMetrics(pConn->hMeasurementMgr, MAX_NUM_OF_AC); #endif /* 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 * 4, TI_FALSE); /* FW will send the disconn frame according to disConnType */ TWD_CmdFwDisconnect (pConn->hTWD, pConn->disConnType, pConn->disConnReasonToAP); #ifdef XCC_MODULE_INCLUDED XCCMngr_updateIappInformation(pConn->hXCCMngr, XCC_DISASSOC); #endif return TI_OK; }