]> git.baikalelectronics.ru Git - kernel.git/commit
net: cdc_mbim: handle IPv6 Neigbor Solicitations
authorBjørn Mork <bjorn@mork.no>
Thu, 31 Oct 2013 14:56:10 +0000 (15:56 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 2 Nov 2013 05:29:37 +0000 (01:29 -0400)
commit63c549d2ce07d8544bfdf87742ca966096914b57
treeab419a65802c211d8635037a5c4b55407e327487
parent0b3a88663a3dec1f4023090c647b9a7950ffeee2
net: cdc_mbim: handle IPv6 Neigbor Solicitations

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: Thomas Schäfer <tschaefer@t-online.de>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/cdc_mbim.c