• Lech Perczak's avatar
    rndis_host: enable the bogus MAC fixup for ZTE devices from cdc_ether · 36e74797
    Lech Perczak authored
    Certain ZTE modems, namely: MF823. MF831, MF910, built-in modem from
    MF286R, expose both CDC-ECM and RNDIS network interfaces.
    They have a trait of ignoring the locally-administered MAC address
    configured on the interface both in CDC-ECM and RNDIS part,
    and this leads to dropping of incoming traffic by the host.
    However, the workaround was only present in CDC-ECM, and MF286R
    explicitly requires it in RNDIS mode.
    
    Re-use the workaround in rndis_host as well, to fix operation of MF286R
    module, some versions of which expose only the RNDIS interface. Do so by
    introducing new flag, RNDIS_DRIVER_DATA_DST_MAC_FIXUP, and testing for it
    in rndis_rx_fixup. This is required, as RNDIS uses frame batching, and all
    of the packets inside the batch need the fixup. This might introduce a
    performance penalty, because test is done for every returned Ethernet
    frame.
    
    Apply the workaround to both "flavors" of RNDIS interfaces, as older ZTE
    modems, like MF823 found in the wild, report the USB_CLASS_COMM class
    interfaces, while MF286R reports USB_CLASS_WIRELESS_CONTROLLER.
    Suggested-by: default avatarBjørn Mork <bjorn@mork.no>
    Cc: Kristian Evensen <kristian.evensen@gmail.com>
    Cc: Oliver Neukum <oliver@neukum.org>
    Signed-off-by: default avatarLech Perczak <lech.perczak@gmail.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    36e74797
rndis_host.c 20.4 KB