linux-stable/drivers/net
Roopa Prabhu 1274e1cc42 vxlan: ecmp support for mac fdb entries
Todays vxlan mac fdb entries can point to multiple remote
ips (rdsts) with the sole purpose of replicating
broadcast-multicast and unknown unicast packets to those remote ips.

E-VPN multihoming [1,2,3] requires bridged vxlan traffic to be
load balanced to remote switches (vteps) belonging to the
same multi-homed ethernet segment (E-VPN multihoming is analogous
to multi-homed LAG implementations, but with the inter-switch
peerlink replaced with a vxlan tunnel). In other words it needs
support for mac ecmp. Furthermore, for faster convergence, E-VPN
multihoming needs the ability to update fdb ecmp nexthops independent
of the fdb entries.

New route nexthop API is perfect for this usecase.
This patch extends the vxlan fdb code to take a nexthop id
pointing to an ecmp nexthop group.

Changes include:
- New NDA_NH_ID attribute for fdbs
- Use the newly added fdb nexthop groups
- makes vxlan rdsts and nexthop handling code mutually
  exclusive
- since this is a new use-case and the requirement is for ecmp
nexthop groups, the fdb add and update path checks that the
nexthop is really an ecmp nexthop group. This check can be relaxed
in the future, if we want to introduce replication fdb nexthop groups
and allow its use in lieu of current rdst lists.
- fdb update requests with nexthop id's only allowed for existing
fdb's that have nexthop id's
- learning will not override an existing fdb entry with nexthop
group
- I have wrapped the switchdev offload code around the presence of
rdst

[1] E-VPN RFC https://tools.ietf.org/html/rfc7432
[2] E-VPN with vxlan https://tools.ietf.org/html/rfc8365
[3] http://vger.kernel.org/lpc_net2018_talks/scaling_bridge_fdb_database_slidesV3.pdf

Includes a null check fix in vxlan_xmit from Nikolay

v2 - Fixed build issue:
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-05-22 14:00:38 -07:00
..
appletalk docs: networking: convert ltpc.txt to ReST 2020-04-30 12:56:36 -07:00
arcnet docs: networking: convert arcnet.txt to ReST 2020-04-28 14:38:38 -07:00
bonding Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux 2020-05-09 01:05:30 -07:00
caif docs: networking: convert caif files to ReST 2020-04-28 14:38:38 -07:00
can
dsa Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-15 13:48:59 -07:00
ethernet Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue 2020-05-22 13:48:50 -07:00
fddi docs: networking: convert skfp.txt to ReST 2020-04-30 12:56:38 -07:00
fjes
hamradio Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-15 13:48:59 -07:00
hippi
hyperv hv_netvsc: Add XDP frame size to driver 2020-05-14 21:21:54 -07:00
ieee802154
ipa net: ipa: do not clear interrupt in gsi_channel_start() 2020-05-16 16:47:19 -07:00
ipvlan net: partially revert dynamic lockdep key changes 2020-05-04 12:05:56 -07:00
netdevsim
phy net: phy: tja11xx: add SQI support 2020-05-21 17:18:00 -07:00
plip docs: networking: convert PLIP.txt to ReST 2020-04-30 12:56:37 -07:00
ppp Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-15 13:48:59 -07:00
slip
team net: partially revert dynamic lockdep key changes 2020-05-04 12:05:56 -07:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-15 13:48:59 -07:00
vmxnet3
wan docs: networking: convert framerelay.txt to ReST 2020-04-28 14:39:46 -07:00
wimax
wireguard wireguard: send/receive: use explicit unlikely branch instead of implicit coalescing 2020-05-06 20:03:47 -07:00
wireless wireless-drivers-next patches for v5.8 2020-05-07 13:22:35 -07:00
xen-netback
bareudp.c net: bareudp: avoid uninitialized variable warning 2020-05-07 17:28:18 -07:00
dummy.c
eql.c
geneve.c geneve: use the correct nlattr array in NL_SET_ERR_MSG_ATTR 2020-04-23 12:39:09 -07:00
gtp.c gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp() 2020-05-01 15:34:09 -07:00
ifb.c
Kconfig docs: networking: device drivers: convert sb1000.txt to ReST 2020-05-01 12:24:42 -07:00
LICENSE.SRC
loopback.c
macsec.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-06 22:10:13 -07:00
macvlan.c netpoll: accept NULL np argument in netpoll_send_skb() 2020-05-07 18:11:07 -07:00
macvtap.c
Makefile
mdio.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c rionet: Fix use correct return type for ndo_start_xmit() 2020-04-30 12:15:13 -07:00
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c tun: Add XDP frame size 2020-05-14 21:21:55 -07:00
veth.c veth: Xdp using frame_sz in veth driver 2020-05-14 21:21:54 -07:00
virtio_net.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-15 13:48:59 -07:00
vrf.c net: partially revert dynamic lockdep key changes 2020-05-04 12:05:56 -07:00
vsockmon.c
vxlan.c vxlan: ecmp support for mac fdb entries 2020-05-22 14:00:38 -07:00
xen-netfront.c