On Wed, Feb 15, 2012 at 10:48:05AM -0500, Alan Stern wrote: > On Wed, 15 Feb 2012, Elric Fu wrote: > > > Hi all, > > > > I found a usb 3.0 hub issue. Now I use a NEC xHCI host card and a VIA VL810 3.0 > > hub to test suspend/resume function. I found the device attached to a usb 3.0 > > hub port didn't respond the address device command in the procedure of > > re-enumeration after resume. I tested linux kernel from 2.6.39 to 3.1.0+. All > > of them have the issue. > > > Then I found the root cause by USB CATC. USB core sends a set hub > > depth request to > > usb 3.0 hub in hub_configure() in superspeed hub initialization. And > > If we do a s3/s4, > > after resume usb core should reset the device and send the set hub > > depth request > > again. But before re-enumeration the usb core doesn't do it. So I > > added a set hub depth > > request after setting configuration in usb_reset_and_verify_device(). > > Now it seems like > > the issue is gone. > > Assuming this is the right thing to do, the place to do it is in > hub_activate(), not usb_reset_and_verify_device(). It might be the right thing to do for this particular hub, but it means the hub is very broken. Any USB device is supposed to respond to the Set Address command once it's link trained. It shouldn't matter when we send the set hub depth request, as long as we do so before we start using it as a hub. Elric, btw, there are no USB-IF certified USB 3.0 hubs on the market right now, so you've gotten a prototype that hasn't made it through electrical and behavioral testing. You might want to get a new one later. :) Sarah Sharp -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html