示例#1
0
/*----------------------------------------------------------------------------*/
VOID saaFsmRunEventAbort(IN P_MSG_HDR_T prMsgHdr)
{
	P_JOIN_INFO_T prJoinInfo;
	P_STA_RECORD_T prStaRec;

	DEBUGFUNC("joinFsmRunEventAbort");


	ASSERT(prAdapter);
	prJoinInfo = &prAdapter->rJoinInfo;

	DBGLOG(JOIN, EVENT, ("JOIN EVENT: ABORT\n"));


	/* NOTE(Kevin): when reach here, the ARB_STATE should be in ARB_STATE_JOIN. */
	ASSERT(prJoinInfo->prBssDesc);

	/* 4 <1> Update Flags and Elements of JOIN Module. */
	/* Reset Send Auth/(Re)Assoc Frame Count */
	prJoinInfo->ucTxAuthAssocRetryCount = 0;

	/* Cancel all JOIN relative Timer */
	ARB_CANCEL_TIMER(prAdapter, prJoinInfo->rTxRequestTimer);

	ARB_CANCEL_TIMER(prAdapter, prJoinInfo->rRxResponseTimer);

	ARB_CANCEL_TIMER(prAdapter, prJoinInfo->rJoinTimer);

	/* 4 <2> Update the associated STA_RECORD_T during JOIN. */
	/* Get a Station Record if possible, TA == BSSID for AP */
	prStaRec = staRecGetStaRecordByAddr(prAdapter, prJoinInfo->prBssDesc->aucBSSID);
	if (prStaRec) {

		/* Update Station Record - Class 1 Flag */
		prStaRec->ucStaState = STA_STATE_1;
	}
#if DBG
	else
		ASSERT(0);	/* Shouldn't happened, because we already add this STA_RECORD_T at JOIN_STATE_INIT */

#endif				/* DBG */

	/* 4 <3> Pull back to IDLE. */
	joinFsmSteps(prAdapter, JOIN_STATE_IDLE);

	/* 4 <4> If we are in Roaming, recover the settings of previous BSS. */
	/* NOTE: JOIN FAIL -
	 * Restore original setting from current BSS_INFO_T.
	 */
	if (prAdapter->eConnectionState == MEDIA_STATE_CONNECTED)
		joinAdoptParametersFromCurrentBss(prAdapter);


	return;
}				/* end of joinFsmRunEventAbort() */
示例#2
0
/*----------------------------------------------------------------------------*/
WLAN_STATUS
scanFsmRunEventScanDone (
    IN P_ADAPTER_T  prAdapter
    )
{
    P_SCAN_INFO_T prScanInfo;
    ENUM_SCAN_STATE_T eNextState;
    WLAN_STATUS rStatus = WLAN_STATUS_SUCCESS;

    DEBUGFUNC("scanFsmRunEventScanDone");
    DBGLOG(SCAN, INFO, ("scanFsmRunEventScanDone\n"));

    ASSERT(prAdapter);

    prScanInfo = &prAdapter->rScanInfo;
    eNextState = prScanInfo->eCurrentState;

    if (prScanInfo->eCurrentState != SCAN_STATE_IDLE) {
        //4 <1> Make state transition to SCAN_STATE_IDLE
        SCAN_STATE_TRANSITION1(prAdapter, ACTIVE, IDLE, DONE);

        //4 <2> Check SCAN Status for issuing Next Partial SCAN or completing the whole SCAN sequence.
        if (prScanInfo->eCurrentHwScanMode == ENUM_HW_SCAN_NORMAL_SCAN) {
            //4 <3> Cancel SCAN Timeout Timer.
            ARB_CANCEL_TIMER(prAdapter, prScanInfo->rScanCheckForHangTimer);

            scanCheckScanStatus(prAdapter);
        }
    }

    return rStatus;
}
示例#3
0
/*----------------------------------------------------------------------------*/
VOID
scanFsmRunEventScanReqCleanUp (
    IN P_ADAPTER_T prAdapter
    )
{
    P_SCAN_INFO_T prScanInfo;
    P_SCAN_CONFIG_T prScanCfg;

    DEBUGFUNC("scanFsmRunEventScanReqCleanUp");

    ASSERT(prAdapter);
    prScanInfo = &prAdapter->rScanInfo;
    prScanCfg = &prScanInfo->rScanConfig;

    /* We should call Scan Abort before doing "Request Clean Up" */
    if (prScanInfo->fgIsScanReqProceeding) {
        ASSERT(prScanInfo->eCurrentState == SCAN_STATE_IDLE);

        if (prScanCfg->eScanMethod == SCAN_METHOD_ONLINE_SCAN) {
            ARB_CANCEL_TIMER(prAdapter, prScanInfo->rPartialScanTimer);
        }
        else if (prScanCfg->eScanMethod == SCAN_METHOD_VOIP_ONLINE_SCAN) {

            DBGLOG(SCAN, INFO, ("Disable traps for PS VOIP SCAN\n"));

            NIC_TX_UNSET_VOIP_SCAN_TRIGGER_EVENT(prAdapter);
        }

        prScanInfo->fgIsScanReqProceeding = FALSE;
    }

    return;
}
示例#4
0
/*----------------------------------------------------------------------------*/
WLAN_STATUS
scanFsmRunEventScanAbort (
    IN P_ADAPTER_T  prAdapter
    )
{
    P_SCAN_INFO_T prScanInfo;
    ENUM_SCAN_STATE_T eNextState;
    WLAN_STATUS rStatus = WLAN_STATUS_SUCCESS;

    DEBUGFUNC("scanFsmRunEventScanAbort");
    DBGLOG(SCAN, INFO, ("scanFsmRunEventScanAbort\n"));

    ASSERT(prAdapter);

    prScanInfo = &prAdapter->rScanInfo;
    eNextState = prScanInfo->eCurrentState;

    if (prScanInfo->eCurrentState != SCAN_STATE_IDLE) {
        //4 <1> Make state transition to SCAN_STATE_IDLE
        SCAN_STATE_TRANSITION1(prAdapter, ACTIVE, IDLE, ABORT);

        //4 <2> Cancel SCAN Timeout Timer.
        ARB_CANCEL_TIMER(prAdapter, prScanInfo->rScanCheckForHangTimer);

        //4 <3> Do call back function.
        if (prScanInfo->rScanConfig.pfScanDoneHandler) {
            prScanInfo->rScanConfig.pfScanDoneHandler(prAdapter, WLAN_STATUS_FAILURE);
        }

#if CFG_WORKAROUND_HEC_5512
        //4 <4> Recover from aborting from BG SSID scan state
        if (prScanInfo->eCurrentHwScanMode == ENUM_HW_SCAN_BG_SSID_SCAN) {
#if 0
            DBGLOG(SCAN, INFO, ("Recover from aborting from BG SSID scan state\n"));

            nicTxFlushStopQueues(prAdapter, TXQ_MGMT_MASK, 0x0 /*(UINT_8)NULL*/);

            nicTxStartQueues(prAdapter, TXQ_MGMT_MASK);

            scanSendProbeReqFrames(prAdapter,
                                   NULL,
                                   0,
                                   1,
                                   0,
                                   FALSE);

            kalMdelay(10);
#else
            nicLogicReset(prAdapter);
#endif
        }
#endif
    }

    NIC_RESET_INT_EVENT(prAdapter, INT_EVENT_SCAN_DONE);

    return rStatus;
}
示例#5
0
/*----------------------------------------------------------------------------*/
WLAN_STATUS joinFsmRunEventJoinTimeOut(IN P_ADAPTER_T prAdapter)
{
	P_JOIN_INFO_T prJoinInfo;
	P_STA_RECORD_T prStaRec;

	DEBUGFUNC("joinFsmRunEventJoinTimeOut");


	ASSERT(prAdapter);
	prJoinInfo = &prAdapter->rJoinInfo;

	DBGLOG(JOIN, EVENT, ("JOIN EVENT: JOIN TIMEOUT\n"));

	/* Get a Station Record if possible, TA == BSSID for AP */
	prStaRec = staRecGetStaRecordByAddr(prAdapter, prJoinInfo->prBssDesc->aucBSSID);

	/* We have renew this Sta Record when in JOIN_STATE_INIT */
	ASSERT(prStaRec);

	/* Record the Status Code of Authentication Request */
	prStaRec->u2StatusCode = STATUS_CODE_JOIN_TIMEOUT;

	/* Increase Failure Count */
	prStaRec->ucJoinFailureCount++;

	/* Reset Send Auth/(Re)Assoc Frame Count */
	prJoinInfo->ucTxAuthAssocRetryCount = 0;

	/* Cancel other JOIN relative Timer */
	ARB_CANCEL_TIMER(prAdapter, prJoinInfo->rTxRequestTimer);

	ARB_CANCEL_TIMER(prAdapter, prJoinInfo->rRxResponseTimer);

	/* Restore original setting from current BSS_INFO_T */
	if (prAdapter->eConnectionState == MEDIA_STATE_CONNECTED)
		joinAdoptParametersFromCurrentBss(prAdapter);


	/* Pull back to IDLE */
	joinFsmSteps(prAdapter, JOIN_STATE_IDLE);

	return WLAN_STATUS_FAILURE;

}				/* end of joinFsmRunEventJoinTimeOut() */
示例#6
0
/*----------------------------------------------------------------------------*/
WLAN_STATUS
scanFsmRunEventScanStop (
    IN P_ADAPTER_T  prAdapter
    )
{
    P_SCAN_INFO_T prScanInfo;
    ENUM_SCAN_STATE_T eNextState;
    WLAN_STATUS rStatus = WLAN_STATUS_SUCCESS;

    DEBUGFUNC("scanFsmRunEventScanStop");

    ASSERT(prAdapter);

    DBGLOG(SCAN, INFO, ("scanFsmRunEventScanStop\n"));

    prScanInfo = &prAdapter->rScanInfo;
    eNextState = prScanInfo->eCurrentState;

    if (prScanInfo->eCurrentState != SCAN_STATE_IDLE) {
        //4 <1> Make state transition to SCAN_STATE_IDLE
        SCAN_STATE_TRANSITION1(prAdapter, ACTIVE, IDLE, ABORT);

        //4 <2> Cancel SCAN Timeout Timer.
        ARB_CANCEL_TIMER(prAdapter, prScanInfo->rScanCheckForHangTimer);

        //4 <3> Check SCAN Status for issuing Next Partial SCAN or completing the whole SCAN sequence.
        if (prScanInfo->eCurrentHwScanMode == ENUM_HW_SCAN_NORMAL_SCAN) {
            scanCheckScanStatus(prAdapter);
        }

#if CFG_WORKAROUND_HEC_5512
        //4 <4> Recover from aborting from BG SSID scan state
        if (prScanInfo->eCurrentHwScanMode == ENUM_HW_SCAN_BG_SSID_SCAN) {
#if 0
            DBGLOG(SCAN, INFO, ("Recover from stopping from BG SSID scan state\n"));

            nicTxFlushStopQueues(prAdapter, TXQ_MGMT_MASK, 0x0 /*(UINT_8)NULL*/);

            nicTxStartQueues(prAdapter, TXQ_MGMT_MASK);

            scanSendProbeReqFrames(prAdapter,
                                   NULL,
                                   0,
                                   1,
                                   0,
                                   FALSE);
            kalMdelay(10);
#else
            nicLogicReset(prAdapter);
#endif
        }
#endif
    }

    return rStatus;
}