static void altera_sdcard_task_rechedule(struct altera_sdcard_softc *sc) { int interval; /* * Reschedule based on new state. Or not, if detaching the device * driver. Treat a bad card as though it were no card at all. */ switch (sc->as_state) { case ALTERA_SDCARD_STATE_NOCARD: case ALTERA_SDCARD_STATE_BADCARD: interval = ALTERA_SDCARD_TIMEOUT_NOCARD; break; case ALTERA_SDCARD_STATE_IDLE: interval = ALTERA_SDCARD_TIMEOUT_IDLE; break; case ALTERA_SDCARD_STATE_IO: if (sc->as_flags & ALTERA_SDCARD_FLAG_IOERROR) interval = ALTERA_SDCARD_TIMEOUT_IOERROR; else interval = ALTERA_SDCARD_TIMEOUT_IO; break; default: panic("%s: invalid exit state %d", __func__, sc->as_state); } taskqueue_enqueue_timeout(sc->as_taskqueue, &sc->as_task, interval); }
void altera_sdcard_start(struct altera_sdcard_softc *sc) { ALTERA_SDCARD_LOCK_ASSERT(sc); KASSERT(sc->as_state == ALTERA_SDCARD_STATE_IDLE, ("%s: starting when not IDLE", __func__)); taskqueue_cancel_timeout(sc->as_taskqueue, &sc->as_task, NULL); altera_sdcard_nextio(sc); taskqueue_enqueue_timeout(sc->as_taskqueue, &sc->as_task, ALTERA_SDCARD_TIMEOUT_IO); }
static void scan_signal_locked(struct ieee80211_scan_state *ss, int iflags) { struct scan_state *ss_priv = SCAN_PRIVATE(ss); struct timeout_task *scan_task = &ss_priv->ss_scan_curchan; struct ieee80211com *ic = ss->ss_ic; IEEE80211_LOCK_ASSERT(ic); ss_priv->ss_iflags |= iflags; if (ss_priv->ss_iflags & ISCAN_RUNNING) { if (taskqueue_cancel_timeout(ic->ic_tq, scan_task, NULL) == 0) taskqueue_enqueue_timeout(ic->ic_tq, scan_task, 0); } }
/* * Scan curchan. If this is an active scan and the channel * is not marked passive then send probe request frame(s). * Arrange for the channel change after maxdwell ticks. */ static void scan_curchan(struct ieee80211_scan_state *ss, unsigned long maxdwell) { struct ieee80211vap *vap = ss->ss_vap; struct ieee80211com *ic = ss->ss_ic; IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN, "%s: calling; maxdwell=%lu\n", __func__, maxdwell); IEEE80211_LOCK(ic); if (ss->ss_flags & IEEE80211_SCAN_ACTIVE) ieee80211_probe_curchan(vap, 0); taskqueue_enqueue_timeout(ic->ic_tq, &SCAN_PRIVATE(ss)->ss_scan_curchan, maxdwell); IEEE80211_UNLOCK(ic); }