• A
    USB: xHCI: override bogus bulk wMaxPacketSize values · e4f47e36
    Alan Stern 提交于
    This patch shortens the logic in xhci_endpoint_init() by moving common
    calculations involving max_packet and max_burst outside the switch
    statement, rather than repeating the same code in multiple
    case-specific statements.  It also replaces two usages of max_packet
    which were clearly intended to be max_burst all along.
    
    More importantly, it compensates for a common bug in high-speed bulk
    endpoint descriptors.  In many devices there is a bulk endpoint having
    a wMaxPacketSize value smaller than 512, which is forbidden by the USB
    spec.  Some xHCI controllers can't handle this and refuse to accept
    the endpoint.  This patch changes the max_packet value to 512, which
    allows the controller to use the endpoint properly.
    
    In practice the bogus maxpacket size doesn't matter, because none of
    the transfers sent via these endpoints are longer than the maxpacket
    value anyway.
    Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: N"Aurélien Leblond" <blablack@gmail.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e4f47e36
xhci-mem.c 73.6 KB