diff options
Diffstat (limited to 'sys/dev/usb/serial/u3g.c')
| -rw-r--r-- | sys/dev/usb/serial/u3g.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/usb/serial/u3g.c b/sys/dev/usb/serial/u3g.c index 22e4e8f6b2bb..d7d8fd80b42a 100644 --- a/sys/dev/usb/serial/u3g.c +++ b/sys/dev/usb/serial/u3g.c @@ -978,8 +978,7 @@ u3g_attach(device_t dev) /* set stall by default */ mtx_lock(&sc->sc_mtx); - usbd_xfer_set_stall(sc->sc_xfer[nports][U3G_BULK_WR]); - usbd_xfer_set_stall(sc->sc_xfer[nports][U3G_BULK_RD]); + usbd_xfer_set_zlp(sc->sc_xfer[nports][U3G_BULK_WR]); mtx_unlock(&sc->sc_mtx); nports++; /* found one port */ @@ -1100,6 +1099,9 @@ u3g_write_callback(struct usb_xfer *xfer, usb_error_t error) case USB_ST_TRANSFERRED: case USB_ST_SETUP: tr_setup: + if (usbd_xfer_get_and_clr_zlp(xfer)) + break; + for (frame = 0; frame != U3G_TXFRAMES; frame++) { usbd_xfer_set_frame_offset(xfer, frame * U3G_TXSIZE, frame); |
