summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/usb_transfer.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/usb_transfer.c')
-rw-r--r--sys/dev/usb/usb_transfer.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/sys/dev/usb/usb_transfer.c b/sys/dev/usb/usb_transfer.c
index 3e5398c..2fe442d 100644
--- a/sys/dev/usb/usb_transfer.c
+++ b/sys/dev/usb/usb_transfer.c
@@ -1681,11 +1681,12 @@ usbd_pipe_enter(struct usb_xfer *xfer)
DPRINTF("enter\n");
+ /* the transfer can now be cancelled */
+ xfer->flags_int.can_cancel_immed = 1;
+
/* enter the transfer */
(ep->methods->enter) (xfer);
- xfer->flags_int.can_cancel_immed = 1;
-
/* check for transfer error */
if (xfer->error) {
/* some error has happened */
@@ -2418,13 +2419,15 @@ usbd_transfer_start_cb(void *arg)
#if USB_HAVE_PF
usbpf_xfertap(xfer, USBPF_XFERTAP_SUBMIT);
#endif
+
+ /* the transfer can now be cancelled */
+ xfer->flags_int.can_cancel_immed = 1;
+
/* start USB transfer, if no error */
if (xfer->error == 0)
(ep->methods->start) (xfer);
- xfer->flags_int.can_cancel_immed = 1;
-
- /* check for error */
+ /* check for transfer error */
if (xfer->error) {
/* some error has happened */
usbd_transfer_done(xfer, 0);
@@ -2599,13 +2602,14 @@ usbd_pipe_start(struct usb_xfer_queue *pq)
#if USB_HAVE_PF
usbpf_xfertap(xfer, USBPF_XFERTAP_SUBMIT);
#endif
+ /* the transfer can now be cancelled */
+ xfer->flags_int.can_cancel_immed = 1;
+
/* start USB transfer, if no error */
if (xfer->error == 0)
(ep->methods->start) (xfer);
- xfer->flags_int.can_cancel_immed = 1;
-
- /* check for error */
+ /* check for transfer error */
if (xfer->error) {
/* some error has happened */
usbd_transfer_done(xfer, 0);
OpenPOWER on IntegriCloud