示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
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);
	}
}
示例#4
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);
}