lkml.org 
[lkml]   [2009]   [Jul]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 16/71] USB: RNDIS gadget, fix issues talking from PXA
    2.6.30-stable review patch.  If anyone has any objections, please let us know.

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

    From: David Brownell <dbrownell@users.sourceforge.net>

    commit 4e19f220d4e84f5728cb7edde36352ab425cfba4 upstream.

    The reworked Ethernet gadget has an RNDIS interop problem when used
    with the CDC subset driver ... e.g. on PXA 2xx and 3xx hardware,
    which currently has a hard time talking to MS-Windows hosts.

    The issue is that Microsoft requires USB_CLASS_COMM. Fix by tweaking
    the CDC subset driver to not switch to USB_CLASS_VENDOR_SPEC if RNDIS
    is used in some other device configuration.

    [ UPDATED: some "statements" were comma-terminated; fix that. ]

    Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
    Cc: Aric Blumer <aric@sdgsystems.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/usb/gadget/ether.c | 11 ++++++-----
    1 file changed, 6 insertions(+), 5 deletions(-)

    --- a/drivers/usb/gadget/ether.c
    +++ b/drivers/usb/gadget/ether.c
    @@ -293,15 +293,16 @@ static int __init eth_bind(struct usb_co
    /* CDC Subset */
    eth_config_driver.label = "CDC Subset/SAFE";

    - device_desc.idVendor = cpu_to_le16(SIMPLE_VENDOR_NUM),
    - device_desc.idProduct = cpu_to_le16(SIMPLE_PRODUCT_NUM),
    - device_desc.bDeviceClass = USB_CLASS_VENDOR_SPEC;
    + device_desc.idVendor = cpu_to_le16(SIMPLE_VENDOR_NUM);
    + device_desc.idProduct = cpu_to_le16(SIMPLE_PRODUCT_NUM);
    + if (!has_rndis())
    + device_desc.bDeviceClass = USB_CLASS_VENDOR_SPEC;
    }

    if (has_rndis()) {
    /* RNDIS plus ECM-or-Subset */
    - device_desc.idVendor = cpu_to_le16(RNDIS_VENDOR_NUM),
    - device_desc.idProduct = cpu_to_le16(RNDIS_PRODUCT_NUM),
    + device_desc.idVendor = cpu_to_le16(RNDIS_VENDOR_NUM);
    + device_desc.idProduct = cpu_to_le16(RNDIS_PRODUCT_NUM);
    device_desc.bNumConfigurations = 2;
    }




    \
     
     \ /
      Last update: 2009-07-29 02:13    [W:4.143 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site