Lines Matching +full:duration +full:- +full:us

1 /*-
2 * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
66 u_int ss_duration; /* duration for next scan */
73 * Amount of time to go off-channel during a background
75 * ap's but short enough that we can return on-channel
97 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_detach()
101 ieee80211_draintask(ic, &SCAN_PRIVATE(ss)->ss_scan_start); in ieee80211_swscan_detach()
102 taskqueue_drain_timeout(ic->ic_tq, in ieee80211_swscan_detach()
103 &SCAN_PRIVATE(ss)->ss_scan_curchan); in ieee80211_swscan_detach()
104 KASSERT((ic->ic_flags & IEEE80211_F_SCAN) == 0, in ieee80211_swscan_detach()
114 if (ss->ss_ops != NULL) { in ieee80211_swscan_detach()
115 ss->ss_ops->scan_detach(ss); in ieee80211_swscan_detach()
116 ss->ss_ops = NULL; in ieee80211_swscan_detach()
118 ic->ic_scan = NULL; in ieee80211_swscan_detach()
136 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_vdetach()
137 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_vdetach()
141 if (ss != NULL && ss->ss_vap == vap && in ieee80211_swscan_vdetach()
142 (ic->ic_flags & IEEE80211_F_SCAN)) in ieee80211_swscan_vdetach()
147 ieee80211_swscan_set_scan_duration(struct ieee80211vap *vap, u_int duration) in ieee80211_swscan_set_scan_duration() argument
149 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_set_scan_duration()
150 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_set_scan_duration()
155 SCAN_PRIVATE(ss)->ss_iflags |= ISCAN_DISCARD; in ieee80211_swscan_set_scan_duration()
156 SCAN_PRIVATE(ss)->ss_duration = duration; in ieee80211_swscan_set_scan_duration()
164 struct ieee80211vap *vap, int flags, u_int duration, in ieee80211_swscan_start_scan_locked() argument
168 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_start_scan_locked()
169 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_start_scan_locked()
173 if (ic->ic_flags & IEEE80211_F_CSAPENDING) { in ieee80211_swscan_start_scan_locked()
176 } else if ((ic->ic_flags & IEEE80211_F_SCAN) == 0) { in ieee80211_swscan_start_scan_locked()
178 "%s: %s scan, duration %u mindwell %u maxdwell %u, desired mode %s, %s%s%s%s%s%s\n" in ieee80211_swscan_start_scan_locked()
181 , duration, mindwell, maxdwell in ieee80211_swscan_start_scan_locked()
182 , ieee80211_phymode_name[vap->iv_des_mode] in ieee80211_swscan_start_scan_locked()
192 if (ss->ss_ops != NULL) { in ieee80211_swscan_start_scan_locked()
196 ss->ss_flags = flags & IEEE80211_SCAN_PUBLIC_MASK; in ieee80211_swscan_start_scan_locked()
197 if (ss->ss_flags & IEEE80211_SCAN_ACTIVE) in ieee80211_swscan_start_scan_locked()
198 vap->iv_stats.is_scan_active++; in ieee80211_swscan_start_scan_locked()
200 vap->iv_stats.is_scan_passive++; in ieee80211_swscan_start_scan_locked()
202 ss->ss_ops->scan_flush(ss); in ieee80211_swscan_start_scan_locked()
204 if ((vap->iv_flags & IEEE80211_F_BGSCAN) != 0 && in ieee80211_swscan_start_scan_locked()
206 ic->ic_flags_ext |= IEEE80211_FEXT_BGSCAN; in ieee80211_swscan_start_scan_locked()
208 /* Set duration for this particular scan */ in ieee80211_swscan_start_scan_locked()
209 ieee80211_swscan_set_scan_duration(vap, duration); in ieee80211_swscan_start_scan_locked()
211 ss->ss_next = 0; in ieee80211_swscan_start_scan_locked()
212 ss->ss_mindwell = mindwell; in ieee80211_swscan_start_scan_locked()
213 ss->ss_maxdwell = maxdwell; in ieee80211_swscan_start_scan_locked()
215 ss->ss_ops->scan_start(ss, vap); in ieee80211_swscan_start_scan_locked()
220 ic->ic_flags |= IEEE80211_F_SCAN; in ieee80211_swscan_start_scan_locked()
223 ieee80211_runtask(ic, &SCAN_PRIVATE(ss)->ss_scan_start); in ieee80211_swscan_start_scan_locked()
229 ss->ss_flags & IEEE80211_SCAN_ACTIVE ? "active" : "passive"); in ieee80211_swscan_start_scan_locked()
242 u_int duration, u_int mindwell, u_int maxdwell, in ieee80211_swscan_start_scan() argument
245 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_start_scan()
251 result = ieee80211_swscan_start_scan_locked(scan, vap, flags, duration, in ieee80211_swscan_start_scan()
269 u_int duration, u_int mindwell, u_int maxdwell, in ieee80211_swscan_check_scan() argument
272 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_check_scan()
273 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_check_scan()
278 if (ss->ss_ops != NULL) { in ieee80211_swscan_check_scan()
279 /* XXX verify ss_ops matches vap->iv_opmode */ in ieee80211_swscan_check_scan()
288 if ((ic->ic_flags & IEEE80211_F_SCAN) == 0 && in ieee80211_swscan_check_scan()
290 ieee80211_time_before(ticks, ic->ic_lastscan + vap->iv_scanvalid)) { in ieee80211_swscan_check_scan()
301 ic->ic_lastscan, in ieee80211_swscan_check_scan()
302 vap->iv_scanvalid, in ieee80211_swscan_check_scan()
304 SCAN_PRIVATE(ss)->ss_iflags |= ISCAN_DISCARD; in ieee80211_swscan_check_scan()
305 ic->ic_flags |= IEEE80211_F_SCAN; in ieee80211_swscan_check_scan()
308 ss->ss_flags = flags & IEEE80211_SCAN_PUBLIC_MASK; in ieee80211_swscan_check_scan()
309 result = ss->ss_ops->scan_end(ss, vap); in ieee80211_swscan_check_scan()
311 ic->ic_flags &= ~IEEE80211_F_SCAN; in ieee80211_swscan_check_scan()
312 SCAN_PRIVATE(ss)->ss_iflags &= ~ISCAN_DISCARD; in ieee80211_swscan_check_scan()
321 result = ieee80211_swscan_start_scan_locked(scan, vap, flags, duration, in ieee80211_swscan_check_scan()
335 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_bg_scan()
336 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_bg_scan()
343 KASSERT((vap->iv_flags & IEEE80211_F_BGSCAN) != 0, in ieee80211_swscan_bg_scan()
345 __func__, vap, vap->iv_flags)); in ieee80211_swscan_bg_scan()
347 scanning = ic->ic_flags & IEEE80211_F_SCAN; in ieee80211_swscan_bg_scan()
349 u_int duration; in ieee80211_swscan_bg_scan() local
351 * Go off-channel for a fixed interval that is large in ieee80211_swscan_bg_scan()
353 * we can return on-channel before our listen interval in ieee80211_swscan_bg_scan()
356 duration = IEEE80211_SCAN_OFFCHANNEL; in ieee80211_swscan_bg_scan()
359 "%s: %s scan, ticks %u duration %u\n", __func__, in ieee80211_swscan_bg_scan()
360 ss->ss_flags & IEEE80211_SCAN_ACTIVE ? "active" : "passive", in ieee80211_swscan_bg_scan()
361 ticks, duration); in ieee80211_swscan_bg_scan()
364 if (ss->ss_ops != NULL) { in ieee80211_swscan_bg_scan()
365 ss->ss_vap = vap; in ieee80211_swscan_bg_scan()
370 * we go off-channel and scan for a while, then in ieee80211_swscan_bg_scan()
372 * then go off-channel again. All during this time in ieee80211_swscan_bg_scan()
376 * for us then we drop out of power save mode in ieee80211_swscan_bg_scan()
380 ss->ss_flags |= IEEE80211_SCAN_NOPICK in ieee80211_swscan_bg_scan()
385 if (ss->ss_next >= ss->ss_last) { in ieee80211_swscan_bg_scan()
386 if (ss->ss_flags & IEEE80211_SCAN_ACTIVE) in ieee80211_swscan_bg_scan()
387 vap->iv_stats.is_scan_active++; in ieee80211_swscan_bg_scan()
389 vap->iv_stats.is_scan_passive++; in ieee80211_swscan_bg_scan()
395 ss->ss_next = 0; in ieee80211_swscan_bg_scan()
396 if (ss->ss_last != 0) { in ieee80211_swscan_bg_scan()
398 ss->ss_ops->scan_restart(ss, vap); in ieee80211_swscan_bg_scan()
400 ss->ss_ops->scan_start(ss, vap); in ieee80211_swscan_bg_scan()
407 ieee80211_swscan_set_scan_duration(vap, duration); in ieee80211_swscan_bg_scan()
408 ss->ss_maxdwell = duration; in ieee80211_swscan_bg_scan()
409 ic->ic_flags |= IEEE80211_F_SCAN; in ieee80211_swscan_bg_scan()
410 ic->ic_flags_ext |= IEEE80211_FEXT_BGSCAN; in ieee80211_swscan_bg_scan()
412 &SCAN_PRIVATE(ss)->ss_scan_start); in ieee80211_swscan_bg_scan()
420 ss->ss_flags & IEEE80211_SCAN_ACTIVE ? "active" : "passive"); in ieee80211_swscan_bg_scan()
436 struct ieee80211com *ic = vap->iv_ic; in cancel_scan()
437 struct ieee80211_scan_state *ss = ic->ic_scan; in cancel_scan()
443 if ((ic->ic_flags & IEEE80211_F_SCAN) && in cancel_scan()
444 (any || ss->ss_vap == vap) && in cancel_scan()
445 (ss_priv->ss_iflags & signal) == 0) { in cancel_scan()
449 ss->ss_flags & IEEE80211_SCAN_ACTIVE ? in cancel_scan()
453 ss->ss_flags &= ~IEEE80211_SCAN_NOPICK; in cancel_scan()
460 !! (ic->ic_flags & IEEE80211_F_SCAN), in cancel_scan()
461 (ss->ss_vap == vap ? "match" : "nomatch"), in cancel_scan()
462 !! (ss_priv->ss_iflags & signal)); in cancel_scan()
483 /* XXX for now - just don't do this per packet. */ in ieee80211_swscan_cancel_anyscan()
484 if (vap->iv_flags_ext & IEEE80211_FEXT_SCAN_OFFLOAD) in ieee80211_swscan_cancel_anyscan()
493 * (e.g. for firmware-based devices).
498 struct ieee80211_scan_state *ss = vap->iv_ic->ic_scan; in ieee80211_swscan_scan_next()
509 * (e.g. for firmware-based devices).
514 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_scan_done()
515 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_scan_done()
524 * If the channel is not marked passive-only then send
532 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_probe_curchan()
533 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_probe_curchan()
537 * Full-offload scan devices don't require this. in ieee80211_swscan_probe_curchan()
539 if (vap->iv_flags_ext & IEEE80211_FEXT_SCAN_OFFLOAD) in ieee80211_swscan_probe_curchan()
545 * XXX remove dependence on ic/vap->iv_bss in ieee80211_swscan_probe_curchan()
547 for (i = 0; i < ss->ss_nssid; i++) in ieee80211_swscan_probe_curchan()
548 ieee80211_send_probereq(vap->iv_bss, in ieee80211_swscan_probe_curchan()
549 vap->iv_myaddr, in ieee80211_swscan_probe_curchan()
552 ss->ss_ssid[i].ssid, ss->ss_ssid[i].len); in ieee80211_swscan_probe_curchan()
553 if ((ss->ss_flags & IEEE80211_SCAN_NOBCAST) == 0) in ieee80211_swscan_probe_curchan()
554 ieee80211_send_probereq(vap->iv_bss, in ieee80211_swscan_probe_curchan()
555 vap->iv_myaddr, in ieee80211_swscan_probe_curchan()
569 struct ieee80211vap *vap = ss->ss_vap; in scan_curchan()
570 struct ieee80211com *ic = ss->ss_ic; in scan_curchan()
577 if (ss->ss_flags & IEEE80211_SCAN_ACTIVE) in scan_curchan()
579 taskqueue_enqueue_timeout(ic->ic_tq, in scan_curchan()
580 &SCAN_PRIVATE(ss)->ss_scan_curchan, maxdwell); in scan_curchan()
587 struct ieee80211com *ic = ss->ss_ic; in scan_signal()
600 struct timeout_task *scan_task = &ss_priv->ss_scan_curchan; in scan_signal_locked()
601 struct ieee80211com *ic = ss->ss_ic; in scan_signal_locked()
605 ss_priv->ss_iflags |= iflags; in scan_signal_locked()
606 if (ss_priv->ss_iflags & ISCAN_RUNNING) { in scan_signal_locked()
607 if (taskqueue_cancel_timeout(ic->ic_tq, scan_task, NULL) == 0) in scan_signal_locked()
608 taskqueue_enqueue_timeout(ic->ic_tq, scan_task, 0); in scan_signal_locked()
620 IEEE80211_DPRINTF(ss->ss_vap, IEEE80211_MSG_SCAN, "%s: called\n", in scan_mindwell()
632 struct ieee80211vap *vap = ss->ss_vap; in scan_start()
633 struct ieee80211com *ic = ss->ss_ic; in scan_start()
636 if (vap == NULL || (ic->ic_flags & IEEE80211_F_SCAN) == 0 || in scan_start()
637 (ss_priv->ss_iflags & ISCAN_ABORT)) { in scan_start()
643 if (ss->ss_next == ss->ss_last) { in scan_start()
653 * This is only required if we're not a full-offload devices; in scan_start()
656 if (((vap->iv_flags_ext & IEEE80211_FEXT_SCAN_OFFLOAD) == 0) && in scan_start()
657 vap->iv_opmode == IEEE80211_M_STA && in scan_start()
658 vap->iv_state == IEEE80211_S_RUN) { in scan_start()
659 if ((vap->iv_bss->ni_flags & IEEE80211_NODE_PWR_MGT) == 0) { in scan_start()
661 vap->iv_sta_ps(vap, 1); in scan_start()
665 if (ss_priv->ss_iflags & ISCAN_ABORT) { in scan_start()
672 ss_priv->ss_scanend = ticks + ss_priv->ss_duration; in scan_start()
674 /* XXX scan state can change! Re-validate scan state! */ in scan_start()
678 ic->ic_scan_start(ic); /* notify driver */ in scan_start()
688 struct ieee80211com *ic = ss->ss_ic; in scan_curchan_task()
702 scandone = (ss->ss_next >= ss->ss_last) || in scan_curchan_task()
703 ((ss_priv->ss_iflags & ISCAN_PAUSE) == ISCAN_CANCEL); in scan_curchan_task()
704 scanstop = (ss->ss_next >= ss->ss_last) || in scan_curchan_task()
705 ((ss_priv->ss_iflags & ISCAN_CANCEL) != 0); in scan_curchan_task()
707 IEEE80211_DPRINTF(ss->ss_vap, IEEE80211_MSG_SCAN, in scan_curchan_task()
712 (uint32_t) ss_priv->ss_iflags, in scan_curchan_task()
713 (uint32_t) ss->ss_next, in scan_curchan_task()
714 (uint32_t) ss->ss_last); in scan_curchan_task()
716 if (scanstop || (ss->ss_flags & IEEE80211_SCAN_GOTPICK) || in scan_curchan_task()
717 (ss_priv->ss_iflags & ISCAN_ABORT) || in scan_curchan_task()
718 ieee80211_time_after(ticks + ss->ss_mindwell, ss_priv->ss_scanend)) { in scan_curchan_task()
719 ss_priv->ss_iflags &= ~ISCAN_RUNNING; in scan_curchan_task()
723 ss_priv->ss_iflags |= ISCAN_RUNNING; in scan_curchan_task()
725 chan = ss->ss_chans[ss->ss_next++]; in scan_curchan_task()
730 if (ieee80211_time_after(ticks + ss->ss_maxdwell, ss_priv->ss_scanend)) in scan_curchan_task()
731 maxdwell = ss_priv->ss_scanend - ticks; in scan_curchan_task()
733 maxdwell = ss->ss_maxdwell; in scan_curchan_task()
735 IEEE80211_DPRINTF(ss->ss_vap, IEEE80211_MSG_SCAN, in scan_curchan_task()
736 "%s: chan %3d%c -> %3d%c [%s, dwell min %lums max %lums]\n", in scan_curchan_task()
738 ieee80211_chan2ieee(ic, ic->ic_curchan), in scan_curchan_task()
739 ieee80211_channel_type_char(ic->ic_curchan), in scan_curchan_task()
742 (ss->ss_flags & IEEE80211_SCAN_ACTIVE) && in scan_curchan_task()
743 (chan->ic_flags & IEEE80211_CHAN_PASSIVE) == 0 ? in scan_curchan_task()
745 ticks_to_msecs(ss->ss_mindwell), ticks_to_msecs(maxdwell)); in scan_curchan_task()
750 ic->ic_curchan = chan; in scan_curchan_task()
751 ic->ic_rt = ieee80211_get_ratetable(chan); in scan_curchan_task()
758 ic->ic_set_channel(ic); in scan_curchan_task()
771 ic->ic_scan_curchan(ss, maxdwell); in scan_curchan_task()
774 /* XXX scan state can change! Re-validate scan state! */ in scan_curchan_task()
776 ss_priv->ss_chanmindwell = ticks + ss->ss_mindwell; in scan_curchan_task()
778 ss_priv->ss_iflags &= ~ISCAN_REP; in scan_curchan_task()
780 if (ss_priv->ss_iflags & (ISCAN_CANCEL|ISCAN_ABORT)) { in scan_curchan_task()
781 taskqueue_cancel_timeout(ic->ic_tq, &ss_priv->ss_scan_curchan, in scan_curchan_task()
786 IEEE80211_DPRINTF(ss->ss_vap, IEEE80211_MSG_SCAN, "%s: waiting\n", in scan_curchan_task()
795 struct ieee80211vap *vap = ss->ss_vap; in scan_end()
796 struct ieee80211com *ic = ss->ss_ic; in scan_end()
802 if (ss_priv->ss_iflags & ISCAN_ABORT) { in scan_end()
808 ic->ic_scan_end(ic); /* notify driver */ in scan_end()
810 /* XXX scan state can change! Re-validate scan state! */ in scan_end()
816 if ((scandone == 0) && ((ss_priv->ss_iflags & ISCAN_PAUSE) == ISCAN_CANCEL)) { in scan_end()
819 __func__, ss_priv->ss_iflags); in scan_end()
829 ic->ic_lastscan = ticks; in scan_end()
831 if (ic->ic_bsschan != IEEE80211_CHAN_ANYC && in scan_end()
832 ic->ic_curchan != ic->ic_bsschan) { in scan_end()
833 ieee80211_setupcurchan(ic, ic->ic_bsschan); in scan_end()
835 ic->ic_set_channel(ic); in scan_end()
840 ss_priv->ss_iflags &= ~ISCAN_REP; in scan_end()
841 ss->ss_flags &= ~IEEE80211_SCAN_GOTPICK; in scan_end()
844 * If not canceled and scan completed, do post-processing. in scan_end()
850 if ((ss_priv->ss_iflags & ISCAN_CANCEL) == 0 && in scan_end()
851 !ss->ss_ops->scan_end(ss, vap) && in scan_end()
852 (ss->ss_flags & IEEE80211_SCAN_ONCE) == 0 && in scan_end()
853 ieee80211_time_before(ticks + ss->ss_mindwell, ss_priv->ss_scanend)) { in scan_end()
858 ticks, ss->ss_mindwell, ss_priv->ss_scanend); in scan_end()
859 ss->ss_next = 0; /* reset to beginning */ in scan_end()
860 if (ss->ss_flags & IEEE80211_SCAN_ACTIVE) in scan_end()
861 vap->iv_stats.is_scan_active++; in scan_end()
863 vap->iv_stats.is_scan_passive++; in scan_end()
866 ss->ss_ops->scan_restart(ss, vap); /* XXX? */ in scan_end()
867 ieee80211_runtask(ic, &ss_priv->ss_scan_start); in scan_end()
873 if ((ss->ss_flags & IEEE80211_SCAN_BGSCAN) == 0) in scan_end()
879 ticks, ss->ss_mindwell, ss_priv->ss_scanend); in scan_end()
885 if (scandone == 0 && (ss_priv->ss_iflags & ISCAN_PAUSE) == ISCAN_CANCEL) { in scan_end()
888 __func__, ss_priv->ss_iflags); in scan_end()
899 struct ieee80211com *ic = ss->ss_ic; in scan_done()
900 struct ieee80211vap *vap = ss->ss_vap; in scan_done()
910 ic->ic_flags &= ~IEEE80211_F_SCAN; in scan_done()
919 * waiting for us. in scan_done()
926 if ((vap->iv_flags_ext & IEEE80211_FEXT_SCAN_OFFLOAD) == 0) in scan_done()
927 vap->iv_sta_ps(vap, 0); in scan_done()
928 if (ss->ss_next >= ss->ss_last) { in scan_done()
932 (uint32_t) ss->ss_next, in scan_done()
933 (uint32_t) ss->ss_last); in scan_done()
934 ic->ic_flags_ext &= ~IEEE80211_FEXT_BGSCAN; in scan_done()
938 if (!(ss_priv->ss_iflags & ISCAN_INTERRUPT) || in scan_done()
939 (ss->ss_next >= ss->ss_last)) in scan_done()
942 ss_priv->ss_iflags &= ~(ISCAN_PAUSE | ISCAN_ABORT); in scan_done()
943 ss_priv->ss_scanend = 0; in scan_done()
944 ss->ss_flags &= ~(IEEE80211_SCAN_ONCE | IEEE80211_SCAN_PICK1ST); in scan_done()
959 struct ieee80211com *ic = vap->iv_ic; in ieee80211_swscan_add_scan()
960 struct ieee80211_scan_state *ss = ic->ic_scan; in ieee80211_swscan_add_scan()
970 if (SCAN_PRIVATE(ss)->ss_iflags & ISCAN_DISCARD) in ieee80211_swscan_add_scan()
973 if (ieee80211_msg_scan(vap) && (ic->ic_flags & IEEE80211_F_SCAN)) in ieee80211_swscan_add_scan()
974 ieee80211_scan_dump_probe_beacon(subtype, 1, wh->i_addr2, sp, rssi); in ieee80211_swscan_add_scan()
976 if (ss->ss_ops != NULL && in ieee80211_swscan_add_scan()
977 ss->ss_ops->scan_add(ss, curchan, sp, wh, subtype, rssi, noise)) { in ieee80211_swscan_add_scan()
982 if ((SCAN_PRIVATE(ss)->ss_iflags & ISCAN_MINDWELL) == 0 && in ieee80211_swscan_add_scan()
983 ieee80211_time_after_eq(ticks, SCAN_PRIVATE(ss)->ss_chanmindwell)) { in ieee80211_swscan_add_scan()
987 ieee80211_chan2ieee(ic, ic->ic_curchan), in ieee80211_swscan_add_scan()
988 ieee80211_channel_type_char(ic->ic_curchan), in ieee80211_swscan_add_scan()
989 ticks, SCAN_PRIVATE(ss)->ss_chanmindwell); in ieee80211_swscan_add_scan()
990 SCAN_PRIVATE(ss)->ss_iflags |= ISCAN_MINDWELL; in ieee80211_swscan_add_scan()
995 ic->ic_scan_mindwell(ss); in ieee80211_swscan_add_scan()
1028 ic->ic_scan_methods = &swscan_methods; in ieee80211_swscan_attach()
1034 ic->ic_scan = NULL; in ieee80211_swscan_attach()
1037 TASK_INIT(&ss->ss_scan_start, 0, scan_start, ss); in ieee80211_swscan_attach()
1038 TIMEOUT_TASK_INIT(ic->ic_tq, &ss->ss_scan_curchan, 0, in ieee80211_swscan_attach()
1041 ic->ic_scan = &ss->base; in ieee80211_swscan_attach()
1042 ss->base.ss_ic = ic; in ieee80211_swscan_attach()
1044 ic->ic_scan_curchan = scan_curchan; in ieee80211_swscan_attach()
1045 ic->ic_scan_mindwell = scan_mindwell; in ieee80211_swscan_attach()