Example #1
0
/*----------------------------------------------------------------------------*/
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;
}
Example #2
0
/*----------------------------------------------------------------------------*/
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;
}
Example #3
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;
}
Example #4
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;
}