Lines Matching full:ic
95 ieee80211_dfs_attach(struct ieee80211com *ic) in ieee80211_dfs_attach() argument
97 struct ieee80211_dfs_state *dfs = &ic->ic_dfs; in ieee80211_dfs_attach()
99 callout_init_mtx(&dfs->nol_timer, IEEE80211_LOCK_OBJ(ic), 0); in ieee80211_dfs_attach()
100 callout_init_mtx(&dfs->cac_timer, IEEE80211_LOCK_OBJ(ic), 0); in ieee80211_dfs_attach()
102 ic->ic_set_quiet = null_set_quiet; in ieee80211_dfs_attach()
106 ieee80211_dfs_detach(struct ieee80211com *ic) in ieee80211_dfs_detach() argument
109 ieee80211_dfs_reset(ic); in ieee80211_dfs_detach()
113 ieee80211_dfs_reset(struct ieee80211com *ic) in ieee80211_dfs_reset() argument
115 struct ieee80211_dfs_state *dfs = &ic->ic_dfs; in ieee80211_dfs_reset()
121 for (i = 0; i < ic->ic_nchans; i++) in ieee80211_dfs_reset()
122 ic->ic_channels[i].ic_state = 0; in ieee80211_dfs_reset()
130 struct ieee80211com *ic = vap->iv_ic; in cac_timeout() local
131 struct ieee80211_dfs_state *dfs = &ic->ic_dfs; in cac_timeout()
134 IEEE80211_LOCK_ASSERT(ic); in cac_timeout()
143 if (IEEE80211_IS_CHAN_RADAR(ic->ic_curchan)) { in cac_timeout()
144 ieee80211_notify_cac(ic, ic->ic_curchan, in cac_timeout()
149 ic->ic_curchan->ic_ieee, ic->ic_curchan->ic_freq); in cac_timeout()
159 ic->ic_curchan->ic_ieee, ic->ic_curchan->ic_freq); in cac_timeout()
165 for (i = 0; i < ic->ic_nchans; i++) { in cac_timeout()
166 struct ieee80211_channel *c = &ic->ic_channels[i]; in cac_timeout()
167 if (c->ic_freq == ic->ic_curchan->ic_freq) in cac_timeout()
170 ieee80211_notify_cac(ic, ic->ic_curchan, in cac_timeout()
184 struct ieee80211com *ic = vap->iv_ic; in ieee80211_dfs_cac_start() local
185 struct ieee80211_dfs_state *dfs = &ic->ic_dfs; in ieee80211_dfs_cac_start()
187 IEEE80211_LOCK_ASSERT(ic); in ieee80211_dfs_cac_start()
192 ic->ic_curchan->ic_ieee, ic->ic_curchan->ic_freq); in ieee80211_dfs_cac_start()
193 ieee80211_notify_cac(ic, ic->ic_curchan, IEEE80211_NOTIFY_CAC_START); in ieee80211_dfs_cac_start()
202 struct ieee80211com *ic = vap->iv_ic; in ieee80211_dfs_cac_stop() local
203 struct ieee80211_dfs_state *dfs = &ic->ic_dfs; in ieee80211_dfs_cac_stop()
205 IEEE80211_LOCK_ASSERT(ic); in ieee80211_dfs_cac_stop()
210 ic->ic_curchan->ic_ieee, ic->ic_curchan->ic_freq); in ieee80211_dfs_cac_stop()
211 ieee80211_notify_cac(ic, ic->ic_curchan, in ieee80211_dfs_cac_stop()
218 ieee80211_dfs_cac_clear(struct ieee80211com *ic, in ieee80211_dfs_cac_clear() argument
223 for (i = 0; i < ic->ic_nchans; i++) { in ieee80211_dfs_cac_clear()
224 struct ieee80211_channel *c = &ic->ic_channels[i]; in ieee80211_dfs_cac_clear()
233 struct ieee80211com *ic = arg; in dfs_timeout() local
234 struct ieee80211_dfs_state *dfs = &ic->ic_dfs; in dfs_timeout()
238 IEEE80211_LOCK_ASSERT(ic); in dfs_timeout()
241 for (i = 0; i < ic->ic_nchans; i++) { in dfs_timeout()
242 c = &ic->ic_channels[i]; in dfs_timeout()
252 ic_printf(ic, "radar on channel %u " in dfs_timeout()
258 ieee80211_notify_radar(ic, c); in dfs_timeout()
271 announce_radar(struct ieee80211com *ic, const struct ieee80211_channel *curchan, in announce_radar() argument
275 ic_printf(ic, "radar detected on channel %u (%u MHz)\n", in announce_radar()
278 ic_printf(ic, "radar detected on channel %u (%u MHz), " in announce_radar()
293 ieee80211_dfs_notify_radar(struct ieee80211com *ic, struct ieee80211_channel *chan) in ieee80211_dfs_notify_radar() argument
295 struct ieee80211_dfs_state *dfs = &ic->ic_dfs; in ieee80211_dfs_notify_radar()
298 IEEE80211_LOCK_ASSERT(ic); in ieee80211_dfs_notify_radar()
308 announce_radar(ic, chan, chan); in ieee80211_dfs_notify_radar()
309 ieee80211_notify_radar(ic, chan); in ieee80211_dfs_notify_radar()
325 for (i = 0; i < ic->ic_nchans; i++) { in ieee80211_dfs_notify_radar()
326 struct ieee80211_channel *c = &ic->ic_channels[i]; in ieee80211_dfs_notify_radar()
333 ieee80211_notify_radar(ic, chan); in ieee80211_dfs_notify_radar()
337 dfs_timeout, ic); in ieee80211_dfs_notify_radar()
351 if (chan == ic->ic_bsschan) { in ieee80211_dfs_notify_radar()
359 dfs->newchan = ieee80211_dfs_pickchannel(ic); in ieee80211_dfs_notify_radar()
363 announce_radar(ic, chan, dfs->newchan); in ieee80211_dfs_notify_radar()
371 ieee80211_csa_startswitch(ic, dfs->newchan, 1, 2); in ieee80211_dfs_notify_radar()
379 ic_printf(ic, "%s: No free channels; waiting for entry " in ieee80211_dfs_notify_radar()
389 announce_radar(ic, chan, NULL); in ieee80211_dfs_notify_radar()
391 announce_radar(ic, chan, NULL); in ieee80211_dfs_notify_radar()
397 ieee80211_dfs_pickchannel(struct ieee80211com *ic) in ieee80211_dfs_pickchannel() argument
406 flags = ic->ic_curchan->ic_flags & IEEE80211_CHAN_ALL; in ieee80211_dfs_pickchannel()
411 c = ieee80211_scan_pickchannel(ic, flags); in ieee80211_dfs_pickchannel()
420 v %= ic->ic_nchans; in ieee80211_dfs_pickchannel()
421 for (i = v; i < ic->ic_nchans; i++) { in ieee80211_dfs_pickchannel()
422 c = &ic->ic_channels[i]; in ieee80211_dfs_pickchannel()
428 c = &ic->ic_channels[i]; in ieee80211_dfs_pickchannel()
433 ic_printf(ic, "HELP, no channel located to switch to!\n"); in ieee80211_dfs_pickchannel()