lkml.org 
[lkml]   [2010]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[52/66] USB: accept some invalid ep0-maxpacket values
    2.6.36-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Alan Stern <stern@rowland.harvard.edu>

    commit 56626a72a47bf3e50875d960d6b5f17b9bee0ab2 upstream.

    A few devices (such as the RCA VR5220 voice recorder) are so
    non-compliant with the USB spec that they have invalid maxpacket sizes
    for endpoint 0. Nevertheless, as long as we can safely use them, we
    may as well do so.

    This patch (as1432) softens our acceptance criterion by allowing
    high-speed devices to have ep0-maxpacket sizes other than 64. A
    warning is printed in the system log when this happens, and the
    existing error message is clarified.

    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: James <bjlockie@lockie.ca>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/usb/core/hub.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    --- a/drivers/usb/core/hub.c
    +++ b/drivers/usb/core/hub.c
    @@ -2860,13 +2860,16 @@ hub_port_init (struct usb_hub *hub, stru
    else
    i = udev->descriptor.bMaxPacketSize0;
    if (le16_to_cpu(udev->ep0.desc.wMaxPacketSize) != i) {
    - if (udev->speed != USB_SPEED_FULL ||
    + if (udev->speed == USB_SPEED_LOW ||
    !(i == 8 || i == 16 || i == 32 || i == 64)) {
    - dev_err(&udev->dev, "ep0 maxpacket = %d\n", i);
    + dev_err(&udev->dev, "Invalid ep0 maxpacket: %d\n", i);
    retval = -EMSGSIZE;
    goto fail;
    }
    - dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
    + if (udev->speed == USB_SPEED_FULL)
    + dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
    + else
    + dev_warn(&udev->dev, "Using ep0 maxpacket: %d\n", i);
    udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i);
    usb_ep0_reinit(udev);
    }



    \
     
     \ /
      Last update: 2010-11-19 23:11    [W:2.891 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site