VOID p2pStateAbort_IDLE ( IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN ENUM_P2P_STATE_T eNextState ) { P_P2P_CHNL_REQ_INFO_T prChnlReqInfo = (P_P2P_CHNL_REQ_INFO_T)NULL; do { ASSERT_BREAK((prAdapter != NULL) && (prP2pFsmInfo != NULL)); prChnlReqInfo = &prP2pFsmInfo->rChnlReqInfo; if (prChnlReqInfo->fgIsChannelRequested) { /* Release channel before timeout. */ p2pFuncReleaseCh(prAdapter, prChnlReqInfo); } /* Stop timer for leaving this state. */ cnmTimerStopTimer(prAdapter, &(prP2pFsmInfo->rP2pFsmTimeoutTimer)); } while (FALSE); return; } /* p2pStateAbort_IDLE */
VOID p2pStateAbort_CHNL_ON_HAND ( IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN P_BSS_INFO_T prP2pBssInfo, IN ENUM_P2P_STATE_T eNextState ) { P_P2P_CHNL_REQ_INFO_T prChnlReqInfo = (P_P2P_CHNL_REQ_INFO_T)NULL; do { ASSERT_BREAK((prAdapter != NULL) && (prP2pFsmInfo != NULL)); prChnlReqInfo = &(prP2pFsmInfo->rChnlReqInfo); cnmTimerStopTimer(prAdapter, &(prP2pFsmInfo->rP2pFsmTimeoutTimer)); /* Restore the original channel info. */ prP2pBssInfo->ucPrimaryChannel = prChnlReqInfo->ucOriChnlNum; prP2pBssInfo->eBand = prChnlReqInfo->eOriBand; prP2pBssInfo->eBssSCO = prChnlReqInfo->eOriChnlSco; if (eNextState != P2P_STATE_CHNL_ON_HAND) { /* Indicate channel return. */ kalP2PIndicateChannelExpired(prAdapter->prGlueInfo, &prP2pFsmInfo->rChnlReqInfo); // Return Channel. p2pFuncReleaseCh(prAdapter, &(prP2pFsmInfo->rChnlReqInfo)); } } while (FALSE); return; } /* p2pStateAbort_CHNL_ON_HAND */
VOID p2pDevStateAbort_CHNL_ON_HAND(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prP2pBssInfo, IN P_P2P_DEV_FSM_INFO_T prP2pDevFsmInfo, IN P_P2P_CHNL_REQ_INFO_T prChnlReqInfo) { do { ASSERT_BREAK((prAdapter != NULL) || (prChnlReqInfo != NULL)); cnmTimerStopTimer(prAdapter, &(prP2pDevFsmInfo->rP2pFsmTimeoutTimer)); prP2pBssInfo->ucPrimaryChannel = prChnlReqInfo->ucOriChnlNum; prP2pBssInfo->eBand = prChnlReqInfo->eOriBand; prP2pBssInfo->eBssSCO = prChnlReqInfo->eOriChnlSco; kalP2PIndicateChannelExpired(prAdapter->prGlueInfo, prChnlReqInfo->u8Cookie, prChnlReqInfo->ucReqChnlNum, prChnlReqInfo->eBand, prChnlReqInfo->eChnlSco); p2pFuncReleaseCh(prAdapter, prP2pDevFsmInfo->ucBssIndex, prChnlReqInfo); } while (FALSE); return; } /* p2pDevStateAbort_CHNL_ON_HAND */
/*----------------------------------------------------------------------------*/ VOID aaaFsmRunEventStart(IN P_MSG_HDR_T prMsgHdr) { P_MSG_SAA_JOIN_REQ_T prJoinReqMsg; P_STA_RECORD_T prStaRec; P_AIS_BSS_INFO_T prAisBssInfo; ASSERT(prMsgHdr); prJoinReqMsg = (P_MSG_SAA_JOIN_REQ_T) prMsgHdr; prStaRec = prJoinReqMsg->prStaRec; ASSERT(prStaRec); DBGLOG(SAA, LOUD, ("EVENT-START: Trigger SAA FSM\n")); cnmMemFree(prMsgHdr); /* 4 <1> Validation of SAA Start Event */ if (!IS_AP_STA(prStaRec->eStaType)) { DBGLOG(SAA, ERROR, ("EVENT-START: STA Type - %d was not supported.\n", prStaRec->eStaType)); /* Ignore the return value because don't care the prSwRfb */ saaFsmSendEventJoinComplete(WLAN_STATUS_FAILURE, prStaRec, NULL); return; } /* 4 <2> The previous JOIN process is not completed ? */ if (prStaRec->eAuthAssocState != AA_STATE_IDLE) { DBGLOG(SAA, ERROR, ("EVENT-START: Reentry of SAA Module.\n")); prStaRec->eAuthAssocState = AA_STATE_IDLE; } /* 4 <3> Reset Status Code and Time */ /* Update Station Record - Status/Reason Code */ prStaRec->u2StatusCode = STATUS_CODE_SUCCESSFUL; /* Update the record join time. */ GET_CURRENT_SYSTIME(&prStaRec->rLastJoinTime); prStaRec->ucTxAuthAssocRetryCount = 0; if (prStaRec->prChallengeText) { cnmMemFree(prStaRec->prChallengeText); prStaRec->prChallengeText = (P_IE_CHALLENGE_TEXT_T) NULL; } cnmTimerStopTimer(&prStaRec->rTxReqDoneOrRxRespTimer); prStaRec->ucStaState = STA_STATE_1; /* Trigger SAA MODULE */ saaFsmSteps(prStaRec, SAA_STATE_SEND_AUTH1, (P_SW_RFB_T) NULL); return; } /* end of saaFsmRunEventStart() */
/*----------------------------------------------------------------------------*/ VOID /* whsu:Todo: */ secFsmUnInit(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prSta) { P_SEC_INFO_T prSecInfo; ASSERT(prSta); prSecInfo = &prSta->rSecInfo; prSecInfo->fg2nd1xSend = FALSE; prSecInfo->fgKeyStored = FALSE; /* nicPrivacyRemoveWlanTable(prSta->ucWTEntry); */ if (IS_STA_IN_AIS(prSta)) { cnmTimerStopTimer(prAdapter, &prAdapter->rWifiVar.rAisSpecificBssInfo.rRsnaEAPoLReportTimeoutTimer); cnmTimerStopTimer(prAdapter, &prAdapter->rWifiVar.rAisSpecificBssInfo.rRsnaBlockTrafficTimer); } }
/*----------------------------------------------------------------------------*/ VOID p2pStateAbort_GC_JOIN ( IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN P_P2P_JOIN_INFO_T prJoinInfo, IN ENUM_P2P_STATE_T eNextState ) { P_MSG_JOIN_ABORT_T prJoinAbortMsg = (P_MSG_JOIN_ABORT_T)NULL; do { ASSERT_BREAK((prAdapter != NULL) && (prP2pFsmInfo != NULL) && (prJoinInfo != NULL)); if (prJoinInfo->fgIsJoinComplete == FALSE) { prJoinAbortMsg = (P_MSG_JOIN_ABORT_T)cnmMemAlloc(prAdapter, RAM_TYPE_MSG, sizeof(MSG_JOIN_ABORT_T)); if (!prJoinAbortMsg) { DBGLOG(P2P, TRACE, ("Fail to allocate join abort message buffer\n")); ASSERT(FALSE); return; } prJoinAbortMsg->rMsgHdr.eMsgId = MID_P2P_SAA_FSM_ABORT; prJoinAbortMsg->ucSeqNum = prJoinInfo->ucSeqNumOfReqMsg; prJoinAbortMsg->prStaRec = prJoinInfo->prTargetStaRec; mboxSendMsg(prAdapter, MBOX_ID_0, (P_MSG_HDR_T)prJoinAbortMsg, MSG_SEND_METHOD_BUF); } /* Stop Join Timer. */ cnmTimerStopTimer(prAdapter, &(prP2pFsmInfo->rP2pFsmTimeoutTimer)); /* Release channel requested. */ p2pFuncReleaseCh(prAdapter, &(prP2pFsmInfo->rChnlReqInfo)); } while (FALSE); return; } /* p2pStateAbort_GC_JOIN */