Lines 518-525
usbhid_sync_xfer(struct usbhid_softc* sc, int xfer_idx,
Link Here
|
518 |
/* Perform usbhid_write() asyncronously to improve pipelining */ |
518 |
/* Perform usbhid_write() asyncronously to improve pipelining */ |
519 |
if (USB_IN_POLLING_MODE_FUNC() || xfer_ctx->error != 0 || |
519 |
if (USB_IN_POLLING_MODE_FUNC() || xfer_ctx->error != 0 || |
520 |
sc->sc_config[xfer_idx].type != UE_INTERRUPT || |
520 |
sc->sc_config[xfer_idx].type != UE_INTERRUPT || |
521 |
sc->sc_config[xfer_idx].direction != UE_DIR_OUT) |
521 |
sc->sc_config[xfer_idx].direction != UE_DIR_OUT) { |
522 |
usbd_transfer_stop(sc->sc_xfer[xfer_idx]); |
522 |
mtx_unlock(&sc->sc_mtx); |
|
|
523 |
usbd_transfer_drain(sc->sc_xfer[xfer_idx]); |
524 |
mtx_lock(&sc->sc_mtx); |
525 |
} |
523 |
error = xfer_ctx->error; |
526 |
error = xfer_ctx->error; |
524 |
if (error == 0) |
527 |
if (error == 0) |
525 |
*req = xfer_ctx->req; |
528 |
*req = xfer_ctx->req; |