• Bjørn Mork's avatar
    cdc_ether: fix rndis support for Mediatek based smartphones · 4d7ffcf3
    Bjørn Mork authored
    A Mediatek based smartphone owner reports problems with USB
    tethering in Linux.  The verbose USB listing shows a rndis_host
    interface pair (e0/01/03 + 10/00/00), but the driver fails to
    bind with
    
    [  355.960428] usb 1-4: bad CDC descriptors
    
    The problem is a failsafe test intended to filter out ACM serial
    functions using the same 02/02/ff class/subclass/protocol as RNDIS.
    The serial functions are recognized by their non-zero bmCapabilities.
    
    No RNDIS function with non-zero bmCapabilities were known at the time
    this failsafe was added. But it turns out that some Wireless class
    RNDIS functions are using the bmCapabilities field. These functions
    are uniquely identified as RNDIS by their class/subclass/protocol, so
    the failing test can safely be disabled.  The same applies to the two
    types of Misc class RNDIS functions.
    
    Applying the failsafe to Communication class functions only retains
    the original functionality, and fixes the problem for the Media...
    4d7ffcf3
cdc_ether.c 28.4 KB