diff options
author | Marcus Glocker <mglocker@cvs.openbsd.org> | 2021-01-11 14:41:13 +0000 |
---|---|---|
committer | Marcus Glocker <mglocker@cvs.openbsd.org> | 2021-01-11 14:41:13 +0000 |
commit | 0b45d671928cfa27cc1694c5f8e4d14e72b0397a (patch) | |
tree | 11e653422750e88fd1dca27465ea697ae4f2c540 /sys/dev | |
parent | a66544942fff5a619b28e54c728499b9c17f4806 (diff) |
When an endpoint stalls, we usually try to reset it by calling
usbd_clear_endpoint_stall(), which in turn will call
usbd_clear_endpoint_toggle(). It can be a common situation that when
this happens, there is still a transfer in the stalled queue being
in progress. The ehci(4) clear toggle function is currently doing a
panic() in the diagnostic code in this situation, which is a bit of
an overkill. The device still can be recovered by detaching/attaching
it. Therefore change the panic() in to a printf().
ok mpi@
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/usb/ehci.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/usb/ehci.c b/sys/dev/usb/ehci.c index 46373810b42..9e1010a7c24 100644 --- a/sys/dev/usb/ehci.c +++ b/sys/dev/usb/ehci.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ehci.c,v 1.213 2020/11/27 20:41:21 mglocker Exp $ */ +/* $OpenBSD: ehci.c,v 1.214 2021/01/11 14:41:12 mglocker Exp $ */ /* $NetBSD: ehci.c,v 1.66 2004/06/30 03:11:56 mycroft Exp $ */ /* @@ -1159,7 +1159,7 @@ ehci_device_clear_toggle(struct usbd_pipe *pipe) #ifdef DIAGNOSTIC if ((epipe->sqh->qh.qh_qtd.qtd_status & htole32(EHCI_QTD_ACTIVE)) != 0) - panic("ehci_device_clear_toggle: queue active"); + printf("%s: queue active\n", __func__); #endif epipe->sqh->qh.qh_qtd.qtd_status &= htole32(~EHCI_QTD_TOGGLE_MASK); } |