DFS in madwifi ------ DFS wait

2823阅读 0评论2008-11-30 hddnwpu
分类:LINUX

如果AP开的频道有DFS要求,Madwifi会在VAP_UP之前设置一个DFS WAIT等待时间。用来侦测radar信号。

ath_chan_set()
    if (!(sc->sc_curchan.privFlags & CHANNEL_DFS_CLEAR)) { 
          sc->sc_dfs->sc_dfswait=1;
          OS_SET_TIMER(&sc->sc_dfs->sc_dfswaittimer, ATH_DFS_WAIT_MS);
    }

sc_dfswaittimer的处理函数是OS_TIMER_FUNC(ath_check_dfs_clear)
这个函数会清除dfswait的标志,然后把状态机切换到RUN状态。
    sc->sc_dfs->sc_dfswait=0;
    vap->iv_newstate(vap,IEEE80211_S_RUN, 0);

VAP切到RUN状态最终要调用ath_vap_up
  scn->sc_ops->up(scn->sc_dev, avn->av_if_id, ni->ni_bssid, aid, flags);
这个函数中会检测dfswait这个标志,如果没有等待完,VAP就不会进入RUN状态。
    if (sc->sc_dfs && sc->sc_dfs->sc_dfswait
            && avp->av_opmode == HAL_M_HOSTAP) {
        /* push the vap to RUN state once DFS is cleared */
        DPRINTF(sc, ATH_DEBUG_STATE, "%s: avp  -> DFS_WAIT\n", __func__);
        avp->av_dfswait_run = 1;
        error = EAGAIN;
        goto bad;
    }

在5.255G以上的频段有DFS的要求,对应的频道从Channel 52 : 5.26 GHz开始。

前一个频道为Channel 48 : 5.24 GHz




 


 

上一篇:用钩子钩住你的中断处理函数
下一篇:MIPS u-boot 中code Relocate流程分析