• Matthew Wilcox's avatar
    USB: Fix usb_fill_int_urb for SuperSpeed devices · f09a15e6
    Matthew Wilcox authored
    USB 3 and Wireless USB specify a logarithmic encoding of the endpoint
    interval that matches the USB 2 specification.  usb_fill_int_urb() didn't
    know that and was filling in the interval as if it was USB 1.1.  Fix
    usb_fill_int_urb() for SuperSpeed devices, but leave the wireless case
    alone, because David Vrabel wants to keep the old encoding.
    
    Update the struct urb kernel doc to note that SuperSpeed URBs must have
    urb->interval specified in microframes.
    
    Add a missing break statement in the usb_submit_urb() interrupt URB
    checking, since wireless USB and SuperSpeed USB encode urb->interval
    differently.  This allows xHCI roothubs to actually register with khubd.
    Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    f09a15e6
urb.c 27.5 KB