/*----------------------------------------------------------------------------*/ VOID nicProcessAtimWindowTimeoutInterrupt ( IN P_ADAPTER_T prAdapter ) { #if CFG_IBSS_POWER_SAVE ASSERT(prAdapter); if (!PM_IS_UNDER_IBSS_POWER_SAVE_MODE(prAdapter)) { return; } PM_SET_FLAG_OUTSIDE_ATIM_WINDOW(prAdapter); DBGLOG(LP, INFO, ("\n")); nicTxDisableTxQueueActiveState(prAdapter); /* flush AC4 for in-completed ATIM packets */ nicTxFlushStopQueues(prAdapter, TXQ_MGMT_MASK, TXQ_MGMT_MASK); /* Enable AC0~3, AC4 (for out-of-bound MGMT frame) */ nicTxStartQueues(prAdapter, TXQ_DATA_MASK | TXQ_MGMT_MASK); /* Trigger TX actions */ if (nicTxRetransmitOfStaWaitQue(prAdapter)) { pmDisableIbssPsTx(prAdapter); } #endif /* CFG_IBSS_POWER_SAVE */ return; }
/*----------------------------------------------------------------------------*/ VOID nicProcessTbttInterrupt ( IN P_ADAPTER_T prAdapter ) { #if CFG_IBSS_POWER_SAVE ASSERT(prAdapter); if (!PM_IS_UNDER_IBSS_POWER_SAVE_MODE(prAdapter)) { return; } PM_SET_FLAG_UNDER_ATIM_WINDOW(prAdapter); DBGLOG(LP, INFO, (" \n")); nicTxDisableTxQueueActiveState(prAdapter); /* Flush and reclaim TX active chain, send wait queue into STA wait queue */ nicTxReclaimTxPackets(prAdapter); /* clear IBSS STA awake state recorded by station record */ pmClearAllStationAwakeState(prAdapter); /* Enable AC4 for ATIM */ nicTxStartQueues(prAdapter, TXQ_MGMT_MASK); #endif /* CFG_IBSS_POWER_SAVE */ return; }
/*----------------------------------------------------------------------------*/ 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; }
/*----------------------------------------------------------------------------*/ 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; }