about device descriptor,according to usb spec 2.0, 1. A hub returns different descriptors based on whether it is operating at high speed or full/low speed.A hub can report three different sets of the descriptors. 2. A hub must operate at high-speed when its upstream facing port is connected at high-speed.The hub must operate at full speed when its upstream facing port is connected at full-speed.
Take root hub for example, how does the hub itself know whether its upstream facing port is connected at high-speed or full-speed?Futhermore, if a host send a GET_DESCRIPTOR request to a hub,how does it know which set of descriptor should be reported? Let's see following section of code,sampled from hub_configure(),we need to judge bDeviceProtocol of the device descriptor, it can be 0,1,or 2, but it's the value reported by hub,how does the hub know which one should be reported when it received GET_DESCRIPTOR from the host. 570 switch (hdev->descriptor.bDeviceProtocol) { 571 case 0: 572 break; 573 case 1: 574 dev_dbg(hub_dev, "Single TT\n"); 575 hub->tt.hub = hdev; 576 break; 577 case 2: 578 ret = usb_set_interface(hdev, 0, 1); 579 if (ret == 0) { 580 dev_dbg(hub_dev, "TT per port\n"); 581 hub->tt.multi = 1; 582 } else 583 dev_err(hub_dev, "Using single TT (err %d)\n", 584 ret); ... Regards&Thanks Jason Xiao ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel