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