Skip to content
  • Bjørn Mork's avatar
    net: qmi_wwan: support "raw IP" mode · 32f7adf6
    Bjørn Mork authored
    
    
    QMI wwan devices have traditionally emulated ethernet devices
    by default. But they have always had the capability of operating
    without any L2 header at all, transmitting and receiving "raw"
    IP packets over the USB link.  This firmware feature used to be
    configurable through the QMI management protocol.
    
    Traditionally there was no way to verify the firmware mode
    without attempting to change it.  And the firmware would often
    disallow changes anyway, i.e. due to a session already being
    established.  In some cases, this could be a hidden firmware
    internal session, completely outside host control.  For these
    reasons, sticking with the "well known" default mode was safest.
    
    But newer generations of QMI hardware and firmware have moved
    towards defaulting to "raw IP" mode instead, followed by an
    increasing number of bugs in the already buggy "802.3" firmware
    implementation. At the same time, the QMI management protocol
    gained the ability to detect the current mode.  This has enabled
    the userspace QMI management application to verify the current
    firmware mode without trying to modify it.
    
    Following this development, the latest QMI hardware and firmware
    (the MDM9x30 generation) has dropped support for "802.3" mode
    entirely. Support for "raw IP" framing in the driver is therefore
    necessary for these devices, and to a certain degree to work
    around problems with the previous generation,
    
    This patch adds support for "raw IP" framing for QMI devices,
    changing the netdev from an ethernet device to an ARPHRD_NONE
    p-t-p device when "raw IP" framing is enabled.
    
    The firmware setup is fully delegated to the QMI userspace
    management application, through simple tunneling of the QMI
    protocol. The driver will therefore not know which mode has been
    "negotiated" between firmware and userspace. Allowing userspace
    to inform the driver of the result through a sysfs switch is
    considered a better alternative than to change the well established
    clean delegation of firmware management to userspace.
    
    Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    32f7adf6