Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/usb usbdi(9): Suspend control pipe on detach.
details: https://anonhg.NetBSD.org/src/rev/3efb10363f7c
branches: trunk
changeset: 362573:3efb10363f7c
user: riastradh <riastradh%NetBSD.org@localhost>
date: Thu Mar 03 06:13:35 2022 +0000
description:
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.
diffstat:
sys/dev/usb/usb_subr.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diffs (26 lines):
diff -r 8956d5c3eabf -r 3efb10363f7c sys/dev/usb/usb_subr.c
--- a/sys/dev/usb/usb_subr.c Thu Mar 03 06:13:23 2022 +0000
+++ b/sys/dev/usb/usb_subr.c Thu Mar 03 06:13:35 2022 +0000
@@ -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 @@
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++) {
Home |
Main Index |
Thread Index |
Old Index