• Bjørn Mork's avatar
    net: cdc_ncm/cdc_mbim: rework probing of NCM/MBIM functions · 50a0ffaf
    Bjørn Mork authored
    The NCM class match in the cdc_mbim driver is confusing and
    cause unexpected behaviour. The USB core guarantees that a
    USB interface is in altsetting 0 when probing starts. This
    means that devices implementing a NCM 1.0 backwards
    compatible MBIM function (a "NCM/MBIM function") always hit
    the NCM entry in the cdc_mbim driver match table. Such
    functions will never match any of the MBIM entries.
    
    This causes unexpeced behaviour for cases where the NCM and
    MBIM entries are differet, which is currently the case for
    all except Ericsson devices.
    
    Improve the probing of NCM/MBIM functions by looking up the
    device again in the cdc_mbim match table after switching to
    the MBIM identity.
    
    The shared altsetting selection is updated to better
    accommodate the new probing logic, returning the preferred
    altsetting for the control interface instead of the data
    interface. The control interface altsetting update is moved
    to the cdc_mbim driver. It is never necessary to change the
    control interface altsetting for NCM.
    
    Cc: Greg Suarez <gsuarez@smithmicro.com>
    Reported by: Yu-an Shih <yshih@nvidia.com>
    Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    50a0ffaf
cdc_mbim.c 16.5 KB