summaryrefslogtreecommitdiff
path: root/sys/dev/usb
diff options
context:
space:
mode:
authorGerhard Roth <gerhard@cvs.openbsd.org>2017-10-23 15:23:14 +0000
committerGerhard Roth <gerhard@cvs.openbsd.org>2017-10-23 15:23:14 +0000
commit1628e336922f9b2f725ef143c7f0ac10ce1bf9f2 (patch)
tree98e50d27164535d6871891ecefa09fe47340c303 /sys/dev/usb
parent13bc0e3aaa2327b63c68fe9beeb031045c0f2396 (diff)
Even if a USB transfer fails, call umb_start() so that processing
of the if_snd queue doesn't stall. ok stsp@
Diffstat (limited to 'sys/dev/usb')
-rw-r--r--sys/dev/usb/if_umb.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/dev/usb/if_umb.c b/sys/dev/usb/if_umb.c
index b9d69d9699e..b2571c969df 100644
--- a/sys/dev/usb/if_umb.c
+++ b/sys/dev/usb/if_umb.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_umb.c,v 1.16 2017/10/20 09:35:09 mpi Exp $ */
+/* $OpenBSD: if_umb.c,v 1.17 2017/10/23 15:23:13 gerhard Exp $ */
/*
* Copyright (c) 2016 genua mbH
@@ -896,7 +896,7 @@ umb_watchdog(struct ifnet *ifp)
ifp->if_oerrors++;
printf("%s: watchdog timeout\n", DEVNAM(sc));
- /* XXX FIXME: re-initialize device */
+ usbd_abort_pipe(sc->sc_tx_pipe);
return;
}
@@ -1845,10 +1845,9 @@ umb_txeof(struct usbd_xfer *xfer, void *priv, usbd_status status)
if (status == USBD_STALLED)
usbd_clear_endpoint_stall_async(sc->sc_tx_pipe);
}
- } else {
- if (IFQ_IS_EMPTY(&ifp->if_snd) == 0)
- umb_start(ifp);
}
+ if (IFQ_IS_EMPTY(&ifp->if_snd) == 0)
+ umb_start(ifp);
splx(s);
}