Re: [RFC 3/7] xhci: Fix check for LS/FS device attached to roothub.

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

 



On Mon, 3 Jan 2011, Sarah Sharp wrote:

> > Then udev->tt shouldn't be set if udev is plugged into an xHCI root 
> > hub.  Maybe you should change that instead of changing this.
> 
> Ok. Are you suggesting I change this code in hub_port_init():
> 
>         /* Set up TT records, if needed  */
>         if (hdev->tt) {
>                 udev->tt = hdev->tt;
>                 udev->ttport = hdev->ttport;
>         } else if (udev->speed != USB_SPEED_HIGH
>                         && hdev->speed == USB_SPEED_HIGH) {
>                 udev->tt = &hub->tt;
>                 udev->ttport = port1;
>         }
> 
> to
>         /* Set up TT records, if needed.
> 	 * The xHCI USB 2.0 roothub doesn't have a TT.
> 	 */
>         if (hdev->tt) {
>                 udev->tt = hdev->tt;
>                 udev->ttport = hdev->ttport;
>         } else if (udev->speed != USB_SPEED_HIGH
>                         && hdev->speed == USB_SPEED_HIGH
> 			&& (hdev->parent ||
> 				hcd->driver->flags & HCD_USB3) {
>                 udev->tt = &hub->tt;
>                 udev->ttport = port1;
>         }
> 
> ?

I think it would be easier to read if you used nested tests and 
restrict the allowed speeds:

	} else if (udev->speed < USB_SPEED_HIGH
			&& hdev->speed == USB_SPEED_HIGH) {
		/* xHCI high-speed root hubs don't have TTs */
		if (!(?xhci?) || hdev->parent) {
			udev->tt = &hub->tt;
			udev->ttport = port1;
		}
	}

Your test for an xHCI root hub doesn't seem like the best (and you got
the sense inverted).  Maybe you should add a new bitflag to the usb_bus
structure for this purpose.

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