/* ======================================================================== Routine Description: Channel switching count down process upon radar detection Arguments: pAd Pointer to our adapter ======================================================================== */ VOID ChannelSwitchingCountDownProc( IN PRTMP_ADAPTER pAd) { MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("%s():Channel Switching...(%d/%d)\n", __FUNCTION__, pAd->Dot11_H.CSCount, pAd->Dot11_H.CSPeriod)); pAd->Dot11_H.CSCount++; if (pAd->Dot11_H.CSCount >= pAd->Dot11_H.CSPeriod) { #ifdef DFS_SUPPORT pAd->CommonCfg.RadarDetect.DFSAPRestart = 1; schedule_dfs_task(pAd); #else APStop(pAd); APStartUp(pAd); #endif /* !DFS_SUPPORT */ } }
/* ======================================================================== Routine Description: Arguments: Adapter Pointer to our adapter. Dequeue all power safe delayed braodcast frames after beacon. IRQL = DISPATCH_LEVEL ======================================================================== */ VOID RTMPHandleTBTTInterrupt( IN PRTMP_ADAPTER pAd) { #ifdef CONFIG_AP_SUPPORT POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; if (pAd->OpMode == OPMODE_AP) { ReSyncBeaconTime(pAd); #ifdef WORKQUEUE_BH schedule_work(&pObj->tbtt_work); #else tasklet_hi_schedule(&pObj->tbtt_task); #endif // WORKQUEUE_BH // if ((pAd->CommonCfg.Channel > 14) && (pAd->CommonCfg.bIEEE80211H == 1) && (pAd->CommonCfg.RadarDetect.RDMode == RD_SWITCHING_MODE)) { DBGPRINT(RT_DEBUG_TRACE, ("RTMPHandlePreTBTTInterrupt::Channel Switching...(%d/%d)\n", pAd->CommonCfg.RadarDetect.CSCount, pAd->CommonCfg.RadarDetect.CSPeriod)); pAd->CommonCfg.RadarDetect.CSCount++; if (pAd->CommonCfg.RadarDetect.CSCount >= pAd->CommonCfg.RadarDetect.CSPeriod) { #ifdef DFS_HARDWARE_SUPPORT pAd->CommonCfg.DFSAPRestart=1; schedule_dfs_task(pAd); #else APStop(pAd); APStartUp(pAd); #endif // DFS_HARDWARE_SUPPORT // } } } else #endif // CONFIG_AP_SUPPORT // { if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE)) { } } }