Skip to content
  • Bjørn Mork's avatar
    net: qmi_wwan: bind to both control and data interface · 230718bd
    Bjørn Mork authored
    
    
    Always bind to control interface regardless of whether
    it is a shared interface or not.
    
    A QMI/wwan function is required to provide both a control
    interface (QMI) and a data interface (wwan).  All devices
    supported by this driver do so.  But the vendors may
    choose to use different USB descriptor layouts, and some
    vendors even allow the same device to present different
    layouts.
    
    Most of these devices use a USB descriptor layout with a
    single USB interface for both control and data.  But some
    split control and data into two interfaces, bound together
    by a CDC Union descriptor on the control interface. Before
    the cdc-wdm subdriver support was added, this split was
    used to let cdc-wdm drive the QMI control interface and
    qmi_wwan drive the wwna data interface.
    
    This split driver model has a number of issues:
     - qmi_wwan must match on the data interface descriptor,
       which often are indistiguishable from data interfaces
       belonging to other CDC (like) functions like ACM
     - supporting a single QMI/wwan function requires adding
       the device to two drivers
     - syncronizing the probes among a number of drivers, to
       ensure selecting the correct driver, is difficult unless
       all drivers match on the same interface
    
    This patch resolves these problems by using the same
    probing mechanism as cdc-ether for devices with a two-
    interface USB descriptor layout.  This makes the driver
    behave consistently, supporting both the control and data
    part of the QMI/wwan function, regardless of the USB
    descriptors.
    
    Cc: Thomas Schäfer <tschaefer@t-online.de>
    Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    230718bd