linux/net/core
Michal Kubeček fbe168ba91 net: generic dev_disable_lro() stacked device handling
Large receive offloading is known to cause problems if received packets
are passed to other host. Therefore the kernel disables it by calling
dev_disable_lro() whenever a network device is enslaved in a bridge or
forwarding is enabled for it (or globally). For virtual devices we need
to disable LRO on the underlying physical device (which is actually
receiving the packets).

Current dev_disable_lro() code handles this  propagation for a vlan
(including 802.1ad nested vlan), macvlan or a vlan on top of a macvlan.
It doesn't handle other stacked devices and their combinations, in
particular propagation from a bond to its slaves which often causes
problems in virtualization setups.

As we now have generic data structures describing the upper-lower device
relationship, dev_disable_lro() can be generalized to disable LRO also
for all lower devices (if any) once it is disabled for the device
itself.

For bonding and teaming devices, it is necessary to disable LRO not only
on current slaves at the moment when dev_disable_lro() is called but
also on any slave (port) added later.

v2: use lower device links for all devices (including vlan and macvlan)

Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Acked-by: Veaceslav Falico <vfalico@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-11-13 14:48:56 -05:00
..
datagram.c net: Kill skb_copy_datagram_const_iovec 2014-11-07 12:13:34 -05:00
dev_addr_lists.c
dev_ioctl.c
dev.c net: generic dev_disable_lro() stacked device handling 2014-11-13 14:48:56 -05:00
drop_monitor.c
dst.c
ethtool.c net: Remove MPLS GSO feature. 2014-11-05 23:52:33 -08:00
fib_rules.c
filter.c net: filter: fix the comments 2014-10-10 15:11:51 -04:00
flow_dissector.c flow-dissector: Fix alignment issue in __skb_flow_get_ports 2014-10-10 15:33:47 -04:00
flow.c
gen_estimator.c net: sched: make bstats per cpu and estimator RCU safe 2014-09-30 01:02:26 -04:00
gen_stats.c net_sched: fix unused variables in __gnet_stats_copy_basic_cpu() 2014-10-07 00:10:49 -04:00
iovec.c
link_watch.c
Makefile dmaengine-3.17 2014-10-07 20:39:25 -04:00
neighbour.c neigh: remove dynamic neigh table registration support 2014-11-11 15:23:54 -05:00
net_namespace.c
net-procfs.c
net-sysfs.c net: gro: add a per device gro flush timer 2014-11-10 12:05:59 -05:00
net-sysfs.h
net-traces.c
netclassid_cgroup.c
netevent.c
netpoll.c
netprio_cgroup.c
pktgen.c net: pktgen: packet bursting via skb->xmit_more 2014-10-01 22:08:12 -04:00
ptp_classifier.c
request_sock.c
rtnetlink.c
scm.c
secure_seq.c
skbuff.c udp: Changes to udp_offload to support remote checksum offload 2014-11-05 16:30:03 -05:00
sock_diag.c
sock.c net: introduce SO_INCOMING_CPU 2014-11-11 13:00:06 -05:00
stream.c
sysctl_net_core.c net: Convert LIMIT_NETDEBUG to net_dbg_ratelimited 2014-11-11 14:10:31 -05:00
timestamping.c
tso.c net: tso: fix unaligned access to crafted TCP header in helper API 2014-10-22 12:52:55 -04:00
utils.c net: Convert LIMIT_NETDEBUG to net_dbg_ratelimited 2014-11-11 14:10:31 -05:00