• Bjørn Mork's avatar
    net: cdc_mbim: handle IPv6 Neigbor Solicitations · 5b8f15f7
    Bjørn Mork authored
    MBIM is a point-to-point protocol transporting raw IP packets
    with no L2 headers. Only IPv4 and IPv6 are supported. ARP in
    particular is not, which is quite logical given the lack of
    L2 headers.
    
    The driver still emulates an ethernet interface, dropping all
    unsupported protocols, and avoiding neigbour resolving by
    setting the IFF_NOARP flag.
    
    The MBIM specification does not explicitly forbid IPv6 Neighbor
    Discovery, and it seems the other OS support will respond to
    Neighbor Solicitations on MBIM links. There are therefore
    buggy devices out there, which despite the pointlessness, still
    require Neighbor Discovery for IPv6 over MBIM.
    
    This is incompatible with the IFF_NOARP flag which disables
    both ARP and ND.  We cannot support ARP in any case, so we
    have to keep that flag. This patch implements a workaround
    for the buggy devices, letting the driver respond directly
    to Neighbor Solicitations from the device.
    
    This is not optimal, but will have minimal effect on any sane
    device.
    
    Cc: Greg Suarez <gsuarez@smithmicro.com>
    Reported-and-tested-by: default avatarThomas 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>
    5b8f15f7
cdc_mbim.c 12.7 KB