Re: [RFC] USB 3.0 Hub Changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 20 Jul 2010, Sarah Sharp wrote:

> > What about the Set-Port-Feature(PORT_LINK_STATE) SS.Disabled request 
> > mentioned in 10.3.1.9 and 10.14.2.10?  Does this cause the device to 
> > start using the USB-2 bus?
> 
> It seems to cause the device to start using the USB 2.0 bus.  Section
> 7.5 says, "SS.Disabled is a link state where SuperSpeed connectivity is
> disabled and the link may operate under USB 2.0 mode." and section
> 10.3.1.9 says "DSPORT.Disabled A port transitions to this state when the
> port receives a SetPortFeature(PORT_LINK_STATE) SS.Disabled request.  In
> this state, the portâ??s link shall be in the SS.Disabled state."
> 
> But I'm trying to figure out if it's equivalent to disabling a USB 2.0
> port.  Figure 10-19 shows that the only way for a downstream port on a
> hub to come out of SS.Disabled is for the hub to receive a
> SetPortFeature(PORT_LINK_STATE) = Rx.Detect request.  Section 7.5.1.2
> also says
> 
> "Exit from SS.Disabled:
>  â?¢ A downstream port shall transition to Rx.Detect when directed.
>  â?¢ An upstream port shall transition to Rx.Detect only when VBUS
>    transitions to valid or a USB 2.0 bus reset is detected."
> 
> So that sounds like the only way to re-enable a USB 3.0 port is for
> software to manually enable it.

Looks like you're right.  (And it _really_ looks like the USB 3.0 spec
is wayyyy over-complicated...)

> I'm trying to see how that fits in with the statement you made about
> what happens when a USB 2.0 port is disabled and then a new device is
> connected to it:
> 
> "What happens is the hub enables the port automatically at the end of a
> successful reset, and the host resets the port when a connect change
> occurs."
> 
> By "the host", do you mean the host controller or the operating system?
> Which initiates the port reset?

The OS.  When I say "host" I mean the host system, in the same way as 
the virtualization people do.  When I want to refer to the controller, 
I call it the "host controller".

> I'm confused about how the re-connect works with a USB 3.0 hub, since
> section 7.4.2 says that warm or hot reset is not allowed when the port
> is in the SS.Disabled state.
> 
> Perhaps John or someone working on a USB 3.0 hub can help clear up this
> confusion?
> 
> > > So it's probably better to treat all USB 3.0 ports (on roothubs and
> > > external hubs) as if they can't be disabled.
> > 
> > Undoubtedly.  To the greatest extent possible, root hubs should be 
> > treated the same as external hubs.
> > 
> > This still leaves open some of the other cases.  They seem to fall into 
> > two categories:
> > 
> > 	We want to ignore a device.  Is it okay just to leave the
> > 	port alone?  In USB-2 it isn't, because of the possibility
> > 	for address conflicts.  Isn't this true in USB-3 also?  What
> > 	happens if there's more than one device using address 0?
> > 	Also, it would be good if whatever we do forces the device to 
> > 	go into a low-power state.
> 
> When a USB 3.0 device is issued a set address command, the route string
> is used.  So it's fine to have multiple USB 3.0 devices using address 0,
> because the route string is unique per device.  (Unless the roothub has
> more than 15 ports on it, which is unlikely.)  So I think it's ok to not
> disable the port when we want to ignore the device.

Of course, it would be necessary to insure that we never send any
request other than Set-Address to a device using address 0, unless that
request also uses the route string.  What about the possibility of
multiple devices using some address other than 0?

> > 	We want a device to be re-enumerated because of a firmware
> > 	change.  This is really much the same as the first case,
> > 	although now we don't care about low-power states since the
> > 	device is going to accessed again in the near future.
> 
> In this case, can you just reset the device?  Is the device expecting
> the port to be disabled?

Reset alone would be enough.  The port doesn't have to be disabled,
_provided_ you don't mind the idea of a live device using an address
the kernel has forgotten about.  With USB-2 we _do_ mind.

Alan Stern

--
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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux