diff options
| author | Hans Petter Selasky <hselasky@FreeBSD.org> | 2021-07-06 10:29:57 +0000 |
|---|---|---|
| committer | Hans Petter Selasky <hselasky@FreeBSD.org> | 2021-07-15 10:11:53 +0000 |
| commit | f83f5d58394db57576bbed6dc7531997cabeb102 (patch) | |
| tree | 36623792f9e3036c7c8d6002d12bd4f8405bbd9c /sys/dev/usb/serial/uvscom.c | |
| parent | b644d64e8a4641a6e4c53b3f4be51e08cb17f6cc (diff) | |
Diffstat (limited to 'sys/dev/usb/serial/uvscom.c')
| -rw-r--r-- | sys/dev/usb/serial/uvscom.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/dev/usb/serial/uvscom.c b/sys/dev/usb/serial/uvscom.c index 8bb69e4402cf..81fd5334a243 100644 --- a/sys/dev/usb/serial/uvscom.c +++ b/sys/dev/usb/serial/uvscom.c @@ -318,8 +318,7 @@ uvscom_attach(device_t dev) /* clear stall at first run */ mtx_lock(&sc->sc_mtx); - usbd_xfer_set_stall(sc->sc_xfer[UVSCOM_BULK_DT_WR]); - usbd_xfer_set_stall(sc->sc_xfer[UVSCOM_BULK_DT_RD]); + usbd_xfer_set_zlp(sc->sc_xfer[UVSCOM_BULK_DT_WR]); mtx_unlock(&sc->sc_mtx); error = ucom_attach(&sc->sc_super_ucom, &sc->sc_ucom, 1, sc, @@ -391,13 +390,16 @@ uvscom_write_callback(struct usb_xfer *xfer, usb_error_t error) case USB_ST_SETUP: case USB_ST_TRANSFERRED: tr_setup: + if (usbd_xfer_get_and_clr_zlp(xfer)) + break; + pc = usbd_xfer_get_frame(xfer, 0); if (ucom_get_data(&sc->sc_ucom, pc, 0, UVSCOM_BULK_BUF_SIZE, &actlen)) { usbd_xfer_set_frame_len(xfer, 0, actlen); usbd_transfer_submit(xfer); } - return; + break; default: /* Error */ if (error != USB_ERR_CANCELLED) { @@ -405,7 +407,7 @@ tr_setup: usbd_xfer_set_stall(xfer); goto tr_setup; } - return; + break; } } |
