Make sure the uftdi(4) driver doesn't start a USB transfer when being cancelled.

MFC after:	1 week
Sponsored by:	NVIDIA Networking
This commit is contained in:
Hans Petter Selasky 2021-08-18 11:41:49 +02:00
parent 07edc89c39
commit 8a46f021c2

View file

@ -1212,14 +1212,9 @@ uftdi_write_callback(struct usb_xfer *xfer, usb_error_t error)
DPRINTFN(3, "\n");
switch (USB_GET_STATE(xfer)) {
default: /* Error */
if (error != USB_ERR_CANCELLED) {
/* try to clear stall first */
usbd_xfer_set_stall(xfer);
}
/* FALLTHROUGH */
case USB_ST_SETUP:
case USB_ST_TRANSFERRED:
tr_setup:
if (usbd_xfer_get_and_clr_zlp(xfer))
break;
@ -1257,6 +1252,13 @@ uftdi_write_callback(struct usb_xfer *xfer, usb_error_t error)
usbd_transfer_submit(xfer);
}
break;
default: /* Error */
if (error != USB_ERR_CANCELLED) {
/* try to clear stall first */
usbd_xfer_set_stall(xfer);
goto tr_setup;
}
break;
}
}