On Mon, 21 May 2007, David Brownell wrote: > On Monday 21 May 2007, you wrote: > > Hi David > > Can you check the following patch that may be needed in hub.c > > Prevent un-necessary enumeration of 3 times when device is not there. > > > > Signed-off-by: Vikram Pandita <[EMAIL PROTECTED]> > > Looks sane to me, but this would be better sent to > the linux-usb list... > > > > > --- > > diff -purN -X ./dontdiff a/drivers/usb/core/hub.c > > b/drivers/usb/core/hub.c > > --- a/drivers/usb/core/hub.c 2007-05-13 14:24:43.000000000 +0530 > > +++ b/drivers/usb/core/hub.c 2007-05-21 13:19:07.000000000 +0530 > > @@ -2571,7 +2571,7 @@ loop: > > ep0_reinit(udev); > > release_address(udev); > > usb_put_dev(udev); > > - if (status == -ENOTCONN) > > + if ((status == -ENOTCONN) || (status == -ENODEV)) > > break; > > }
This is wrong. -ENOTCONN means what it says, that nothing is connected to the port. So when it occurs we really do want to break out of the loop. On the other hand, -ENODEV means that there is a device but it doesn't match our preconceptions (maybe its speed has somehow changed or some other aspect is different). Since there still is a device connected to the port, we don't want to break out of the loop. Did you notice any particular example where the port was unconnected and the code still tried to enumerate three times? Alan Stern ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel