void ueagle_swap_intr(struct ueagle_softc *sc, struct ueagle_swap *swap) { #define rotbr(v, n) ((v) >> (n) | (v) << (8 - (n))) sc->pageno = swap->bPageNo; sc->ovl = rotbr(swap->bOvl, 4); usb_add_task(sc->sc_udev, &sc->sc_swap_task); #undef rotbr }
void smsc_tick(void *xsc) { struct smsc_softc *sc = xsc; if (sc == NULL) return; if (usbd_is_dying(sc->sc_udev)) return; usb_add_task(sc->sc_udev, &sc->sc_tick_task); }
void smsc_tick(void *xsc) { struct smsc_softc *sc = xsc; if (sc == NULL) return; if (sc->sc_dying) return; usb_add_task(sc->sc_udev, &sc->sc_tick_task, USB_TASKQ_DRIVER); }
Static void url_tick(void *xsc) { struct url_softc *sc = xsc; if (sc == NULL) return; DPRINTFN(0xff, ("%s: %s: enter\n", USBDEVNAME(sc->sc_dev), __func__)); if (sc->sc_dying) return; /* Perform periodic stuff in process context */ usb_add_task(sc->sc_udev, &sc->sc_tick_task); }
Static int url_send(struct url_softc *sc, struct mbuf *m, int idx) { int total_len; struct url_chain *c; usbd_status err; DPRINTF(("%s: %s: enter\n", device_xname(sc->sc_dev),__func__)); c = &sc->sc_cdata.url_tx_chain[idx]; /* Copy the mbuf data into a contiguous buffer */ m_copydata(m, 0, m->m_pkthdr.len, c->url_buf); c->url_mbuf = m; total_len = m->m_pkthdr.len; if (total_len < URL_MIN_FRAME_LEN) { memset(c->url_buf + total_len, 0, URL_MIN_FRAME_LEN - total_len); total_len = URL_MIN_FRAME_LEN; } usbd_setup_xfer(c->url_xfer, sc->sc_pipe_tx, c, c->url_buf, total_len, USBD_FORCE_SHORT_XFER | USBD_NO_COPY, URL_TX_TIMEOUT, url_txeof); /* Transmit */ sc->sc_refcnt++; err = usbd_transfer(c->url_xfer); if (--sc->sc_refcnt < 0) usb_detach_wakeupold(sc->sc_dev); if (err != USBD_IN_PROGRESS) { printf("%s: url_send error=%s\n", device_xname(sc->sc_dev), usbd_errstr(err)); /* Stop the interface */ usb_add_task(sc->sc_udev, &sc->sc_stop_task, USB_TASKQ_DRIVER); return (EIO); } DPRINTF(("%s: %s: send %d bytes\n", device_xname(sc->sc_dev), __func__, total_len)); sc->sc_cdata.url_tx_cnt++; return (0); }