On Sun, 27 Feb 2005, Gerd v. Egidy wrote:
> I'll report what happens when I play around with the hardware but maybe
> you have another good patch for me to try out...
I take back what I said earlier -- seeing why the port resets sometimes
failed might indeed be useful. Can you duplicate the failure, but this
time with CONFIG_USB_DEBUG set?
Also, I do have a patch that's been sitting around for a while, intended
to fix a problem that would occasionally cause a port reset to fail (what
a coincidence!). It may need a little adjusting on your part like the
other patches did. Go try it out, and if you still get a reset failure
please send the kernel log. But regardless of how this patch works, do
send the kernel log showing what happens without it.
Alan Stern
diff -u a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
--- a/drivers/usb/core/hub.c Sun Feb 27 13:23:15 2005
+++ b/drivers/usb/core/hub.c Sun Feb 27 13:30:15 2005
@@ -2643,6 +2643,8 @@
/* deal with port status changes */
for (i = 1; i <= hub->descriptor->bNbrPorts; i++) {
+ if (test_bit(i, hub->busy_bits))
+ continue;
connect_change = test_bit(i, hub->change_bits);
if (!test_and_clear_bit(i, hub->event_bits) &&
!connect_change && !hub->activating)
@@ -2948,6 +2950,7 @@
hub_pre_reset(hub);
}
+ set_bit(port1, parent_hub->busy_bits);
for (i = 0; i < SET_CONFIG_TRIES; ++i) {
/* ep0 maxpacket size may change; let the HCD know about it.
@@ -2957,6 +2960,7 @@
if (ret >= 0)
break;
}
+ clear_bit(port1, parent_hub->busy_bits);
if (ret < 0)
goto re_enumerate;
diff -u a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
--- a/drivers/usb/core/hub.h Sun Feb 27 13:23:15 2005
+++ b/drivers/usb/core/hub.h Sun Feb 27 13:30:15 2005
@@ -205,6 +205,7 @@
unsigned long event_bits[1]; /* status change bitmask */
unsigned long change_bits[1]; /* ports with logical connect
status change */
+ unsigned long busy_bits[1]; /* ports being reset */
#if USB_MAXCHILDREN > 31 /* 8*sizeof(unsigned long) - 1 */
#error event_bits[] is too short!
#endif
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel