Lines Matching refs:sched
261 if (likely(sc->sched.channel_switch_time))
263 usecs_to_jiffies(sc->sched.channel_switch_time);
311 ictx->flush_timeout = usecs_to_jiffies(sc->sched.channel_switch_time);
382 mod_timer(&sc->sched.timer, jiffies + timeout);
399 if (ctx->active && sc->sched.extend_absence) {
401 sc->sched.extend_absence = false;
408 if (ctx->active && sc->sched.beacon_miss >= 2) {
410 sc->sched.extend_absence = true;
423 avp->offchannel_duration = sc->sched.offchannel_duration;
451 if (sc->sched.extend_absence)
453 sc->sched.channel_switch_time;
457 sc->sched.channel_switch_time;
460 sc->sched.extend_absence)
484 avp->noa_duration = duration + sc->sched.channel_switch_time;
513 chanctx_state_string(sc->sched.state),
535 if (sc->sched.offchannel_pending && !sc->sched.wait_switch) {
536 sc->sched.offchannel_pending = false;
538 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON;
544 if (ctx->active && sc->sched.state == ATH_CHANCTX_STATE_IDLE) {
546 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON;
552 if (sc->sched.state == ATH_CHANCTX_STATE_WAIT_FOR_TIMER) {
553 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON;
558 if (sc->sched.mgd_prepare_tx)
559 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON;
568 sc->sched.state != ATH_CHANCTX_STATE_WAIT_FOR_BEACON) {
576 if (sc->sched.state != ATH_CHANCTX_STATE_WAIT_FOR_BEACON)
581 sc->sched.beacon_pending = true;
582 sc->sched.next_tbtt = REG_READ(ah, AR_NEXT_TBTT_TIMER);
588 tsf_time = sc->sched.next_tbtt + beacon_int / 4;
589 sc->sched.switch_start_time = tsf_time;
590 sc->cur_chan->last_beacon = sc->sched.next_tbtt;
610 if (sc->sched.mgd_prepare_tx) {
626 (!avp->noa_duration || sc->sched.force_noa_update))
630 if (ctx->active && sc->sched.force_noa_update)
631 sc->sched.force_noa_update = false;
635 if (!sc->sched.beacon_pending) {
641 sc->sched.beacon_pending = false;
643 if (sc->sched.mgd_prepare_tx) {
644 sc->sched.mgd_prepare_tx = false;
651 if (sc->sched.state != ATH_CHANCTX_STATE_WAIT_FOR_BEACON)
657 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_TIMER;
658 ath_chanctx_setup_timer(sc, sc->sched.switch_start_time);
661 if (sc->sched.state != ATH_CHANCTX_STATE_WAIT_FOR_TIMER)
665 sc->sched.beacon_pending)
666 sc->sched.beacon_miss++;
671 sc->sched.state = ATH_CHANCTX_STATE_SWITCH;
679 sc->sched.beacon_pending = false;
680 sc->sched.beacon_miss = 0;
682 if (sc->sched.state == ATH_CHANCTX_STATE_FORCE_ACTIVE ||
683 !sc->sched.beacon_adjust ||
692 tsf_time = sc->sched.switch_start_time;
697 sc->sched.beacon_adjust = false;
701 if (sc->sched.state != ATH_CHANCTX_STATE_FORCE_ACTIVE ||
708 sc->sched.state = ATH_CHANCTX_STATE_IDLE;
712 sc->sched.state == ATH_CHANCTX_STATE_FORCE_ACTIVE ||
726 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_TIMER;
727 sc->sched.wait_switch = false;
731 if (sc->sched.extend_absence) {
732 sc->sched.beacon_miss = 0;
736 tsf_time -= sc->sched.channel_switch_time;
738 sc->sched.switch_start_time = tsf_time;
741 sc->sched.beacon_pending = true;
742 sc->sched.beacon_adjust = true;
756 sc->sched.state = ATH_CHANCTX_STATE_IDLE;
761 sc->sched.state = ATH_CHANCTX_STATE_IDLE;
780 if (sc->sched.beacon_pending)
813 sc->sched.offchannel_pending = true;
814 sc->sched.wait_switch = true;
815 sc->sched.offchannel_duration =
817 sc->sched.channel_switch_time;
833 sc->sched.offchannel_duration =
835 sc->sched.channel_switch_time;
841 sc->sched.offchannel_duration);
927 sc->sched.offchannel_pending = false;
928 sc->sched.wait_switch = false;
983 sc->sched.force_noa_update = true;
1048 struct ath_softc *sc = from_timer(sc, t, sched.timer);
1170 switch (sc->sched.state) {
1180 sc->sched.state = ATH_CHANCTX_STATE_WAIT_FOR_BEACON;
1289 if (!sc->sched.offchannel_pending)
1290 sc->sched.offchannel_duration = 0;
1292 if (sc->sched.state != ATH_CHANCTX_STATE_FORCE_ACTIVE)
1293 sc->sched.state = ATH_CHANCTX_STATE_IDLE;
1305 sc->sched.channel_switch_time =
1366 timer_setup(&sc->sched.timer, ath_chanctx_timer, 0);
1564 del_timer_sync(&sc->sched.timer);