Module Name: src Committed By: riastradh Date: Thu Mar 3 06:13:35 UTC 2022
Modified Files: src/sys/dev/usb: usb_subr.c Log Message: usbdi(9): Suspend control pipe on detach. The device is gone so control transfers won't complete anyway. This obviates the need to wait for usbd_do_request to time out. Seems like maybe we should make _all_ xfers fail with USBD_CANCELLED when the device is detached, but there's no list of pipes we can just walk down to suspend them, so we'd have to find another way to do so. For now, we'll just keep having drivers suspend/abort pipes other than the control pipe. To generate a diff of this commit: cvs rdiff -u -r1.269 -r1.270 src/sys/dev/usb/usb_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/usb_subr.c diff -u src/sys/dev/usb/usb_subr.c:1.269 src/sys/dev/usb/usb_subr.c:1.270 --- src/sys/dev/usb/usb_subr.c:1.269 Sat Nov 6 06:44:42 2021 +++ src/sys/dev/usb/usb_subr.c Thu Mar 3 06:13:35 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: usb_subr.c,v 1.269 2021/11/06 06:44:42 skrll Exp $ */ +/* $NetBSD: usb_subr.c,v 1.270 2022/03/03 06:13:35 riastradh Exp $ */ /* $FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.18 1999/11/17 22:33:47 n_hibma Exp $ */ /* @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.269 2021/11/06 06:44:42 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usb_subr.c,v 1.270 2022/03/03 06:13:35 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -1872,6 +1872,7 @@ usb_disconnect_port(struct usbd_port *up return 0; } + usbd_suspend_pipe(dev->ud_pipe0); if (dev->ud_subdevlen > 0) { DPRINTFN(3, "disconnect subdevs", 0, 0, 0, 0); for (i = 0; i < dev->ud_subdevlen; i++) {