Date: Thu, 18 Mar 2004 22:02:14 -0800 (PST) From: Julian Elischer <julian@elischer.org> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: Anthony Wood <adwood@earthlink.net> Subject: Re: USB bug fix for DETACH message. Message-ID: <Pine.BSF.4.21.0403182202070.65354-100000@InterJet.elischer.org> In-Reply-To: <200403190529.i2J5TLXs083918@apollo.backplane.com>
next in thread | previous in thread | raw e-mail | index | archive | help
thanks!
On Thu, 18 Mar 2004, Matthew Dillon wrote:
> A DragonFly user noticed that usbd does not seem to get DETACH events
> for UMASS devices.
>
> I tracked this down (in the FreeBSD-5 codebase for your convenience)
> to line 1382 of usb_subr.c:
>
> /*usbd_add_dev_event(USB_EVENT_DEVICE_DETACH, dev);*/
>
> This line was apparently commented out by wpaul in rev 1.22, in
> January 2000.
>
> NetBSD has this line uncommented... that is, activated, and they
> recently committed a bug fix (1.110 I believe in the NetBSD source
> tree) that solves the problem I'm sure wpaul encountered that caused
> him to comment the line out. The bug fix is trivial. Just above this
> code, around line 1378, you simply need to NULL out dev->subdevs[i]
> after detaching it:
>
> printf(" port %d", up->portno);
> printf(" (addr %d) disconnected\n", dev->address);
> config_detach(dev->subdevs[i], DETACH_FORCE);
> dev->subdevs[i] = NULL; <<<<<<<<<<<<<<<<<< ADDME
>
> If you want DETACH events to work, uncomment the add_dev_event and
> make the bug fix above and DETACH events will work again. If you are
> going to do this, please do this in both FreeBSD-5.x and FreeBSD-4.x.
>
> You may also wish to commit NetBSD's 1.111 of sub_subr.c, which reorders
> an address assignment to work around certain non-compliant USB devices
> and allow them to work. The NetBSD repository can be accessed via
> CVS using the server string ':pserver:anoncvs@anoncvs.netbsd.org:/cvsroot'
> (don't accidently overwrite your FBsd tree, though! :-)).
>
> -Matt
>
>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0403182202070.65354-100000>
