USB bug fix for DETACH message.

Julian Elischer julian at elischer.org
Thu Mar 18 22:02:22 PST 2004


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 at anoncvs.netbsd.org:/cvsroot'
>     (don't accidently overwrite your FBsd tree, though! :-)).
> 
> 						-Matt
> 
> 



More information about the freebsd-stable mailing list