linux_dsm_epyc7002/drivers/net
Veaceslav Falico 2f268f129c net: add adj_list to save only neighbours
Currently, we distinguish neighbours (first-level linked devices) from
non-neighbours by the neighbour bool in the netdev_adjacent. This could be
quite time-consuming in case we would like to traverse *only* through
neighbours - cause we'd have to traverse through all devices and check for
this flag, and in a (quite common) scenario where we have lots of vlans on
top of bridge, which is on top of a bond - the bonding would have to go
through all those vlans to get its upper neighbour linked devices.

This situation is really unpleasant, cause there are already a lot of cases
when a device with slaves needs to go through them in hot path.

To fix this, introduce a new upper/lower device lists structure -
adj_list, which contains only the neighbours. It works always in
pair with the all_adj_list structure (renamed from upper/lower_dev_list),
i.e. both of them contain the same links, only that all_adj_list contains
also non-neighbour device links. It's really a small change visible,
currently, only for __netdev_adjacent_dev_insert/remove(), and doesn't
change the main linked logic at all.

Also, add some comments a fix a name collision in
netdev_for_each_upper_dev_rcu() and rework the naming by the following
rules:

netdev_(all_)(upper|lower)_*

If "all_" is present, then we work with the whole list of upper/lower
devices, otherwise - only with direct neighbours. Uninline functions - to
get better stack traces.

CC: "David S. Miller" <davem@davemloft.net>
CC: Eric Dumazet <edumazet@google.com>
CC: Jiri Pirko <jiri@resnulli.us>
CC: Alexander Duyck <alexander.h.duyck@intel.com>
CC: Cong Wang <amwang@redhat.com>
Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-09-26 16:02:04 -04:00
..
appletalk
arcnet
bonding net: add adj_list to save only neighbours 2013-09-26 16:02:04 -04:00
caif caif: add a sanity check to the tty name 2013-09-04 00:27:27 -04:00
can can: Remove extern from function prototypes 2013-09-24 10:09:18 -04:00
cris
dsa
ethernet toshiba: Remove extern from function prototypes 2013-09-24 12:54:12 -07:00
fddi fddi/skfp: Remove extern from function prototypes 2013-09-24 12:54:15 -07:00
hamradio
hippi
hyperv
ieee802154
irda irda: Remove extern from function prototypes 2013-09-24 12:54:17 -07:00
phy phy/micrel: Add suspend/resume support to Micrel PHYs 2013-09-20 14:41:03 -04:00
plip
ppp ip: generate unique IP identificator if local fragmentation is allowed 2013-09-19 14:11:15 -04:00
slip
team net: team: inherit addr_assign_type along with dev_addr 2013-09-03 20:57:49 -04:00
usb net: cdc-phonet: Staticize usbpn_probe 2013-09-20 14:41:02 -04:00
vmxnet3 vmxnet3: Remove extern from function prototypes 2013-09-24 16:37:10 -07:00
wan wan: Remove extern from function prototypes 2013-09-24 16:40:19 -07:00
wimax wimax: Remove extern from function prototypes 2013-09-24 16:46:22 -07:00
wireless rtlwifi: Remove extern from function prototypes 2013-09-24 18:06:51 -07:00
xen-netback xen-netback: Don't destroy the netdev until the vif is shut down 2013-09-19 14:03:51 -04:00
dummy.c
eql.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c net loopback: Set loopback_dev to NULL when freed 2013-09-17 19:05:13 -04:00
macvlan.c macvlan: Move skb_clone check closer to call 2013-09-11 16:03:12 -04:00
macvtap.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-08-26 16:37:08 -04:00
Makefile
mdio.c
mii.c
netconsole.c netconsole: fix a deadlock with rtnl and netconsole's mutex 2013-09-19 14:15:53 -04:00
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c tuntap: correctly handle error in tun_set_iff() 2013-09-12 17:21:42 -04:00
veth.c
virtio_net.c virtio-net: Set RXCSUM feature if GUEST_CSUM is available 2013-09-03 21:36:41 -04:00
vxlan.c vxlan: Avoid creating fdb entry with NULL destination 2013-09-17 20:19:18 -04:00
xen-netfront.c