linux_dsm_epyc7002/drivers/net/bonding
Michal Soltys 3c963a3306 bonding: fix PACKET_ORIGDEV regression
This patch fixes a subtle PACKET_ORIGDEV regression which was a side
effect of fixes introduced by:

6a9e461f6f bonding: pass link-local packets to bonding master also.

... to:

b89f04c61e bonding: deliver link-local packets with skb->dev set to link that packets arrived on

While 6a9e461f6f restored pre-b89f04c61efe presence of link-local
packets on bonding masters (which is required e.g. by linux bridges
participating in spanning tree or needed for lab-like setups created
with group_fwd_mask) it also caused the originating device
information to be lost due to cloning.

Maciej Żenczykowski proposed another solution that doesn't require
packet cloning and retains original device information - instead of
returning RX_HANDLER_PASS for all link-local packets it's now limited
only to packets from inactive slaves.

At the same time, packets passed to bonding masters retain correct
information about the originating device and PACKET_ORIGDEV can be used
to determine it.

This elegantly solves all issues so far:

- link-local packets that were removed from bonding masters
- LLDP daemons being forced to explicitly bind to slave interfaces
- PACKET_ORIGDEV having no effect on bond interfaces

Fixes: 6a9e461f6f (bonding: pass link-local packets to bonding master also.)
Reported-by: Vincent Bernat <vincent@bernat.ch>
Signed-off-by: Michal Soltys <soltys@ziu.info>
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-02-21 13:20:08 -08:00
..
bond_3ad.c bonding: fix indentation issues, remove extra spaces 2018-12-18 15:01:23 -08:00
bond_alb.c net: dev: Add extack argument to dev_set_mac_address() 2018-12-13 18:41:38 -08:00
bond_debugfs.c bonding: convert to DEFINE_SHOW_ATTRIBUTE 2018-12-10 12:05:20 -08:00
bond_main.c bonding: fix PACKET_ORIGDEV regression 2019-02-21 13:20:08 -08:00
bond_netlink.c bonding: fix length of actor system 2018-10-29 20:39:38 -07:00
bond_options.c bonding: set default miimon value for non-arp modes if not set 2018-07-21 10:26:21 -07:00
bond_procfs.c bonding: switch to proc_create_seq_data 2018-05-16 07:24:30 +02:00
bond_sysfs_slave.c drivers/net: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
bond_sysfs.c bonding: don't cast const buf in sysfs store 2018-07-22 10:09:30 -07:00
bonding_priv.h net/bonding: Make DRV macros private 2015-04-26 22:59:53 -04:00
Makefile bonding: add sysfs /slave dir for bond slave devices. 2014-01-17 18:51:58 -08:00