linux_dsm_epyc7002/net/core
Eric Dumazet a50e233c50 net-gro: restore frag0 optimization
Main difference between napi_frags_skb() and napi_gro_receive() is that
the later is called while ethernet header was already pulled by the NIC
driver (eth_type_trans() was called before napi_gro_receive())

Jerry Chu in commit 299603e837 ("net-gro: Prepare GRO stack for the
upcoming tunneling support") tried to remove this difference by calling
eth_type_trans() from napi_frags_skb() instead of doing this later from
napi_frags_finish()

Goal was that napi_gro_complete() could call
ptype->callbacks.gro_complete(skb, 0)  (offset of first network header =
0)

Also, xxx_gro_receive() handlers all use off = skb_gro_offset(skb) to
point to their own header, for the current skb and ones held in gro_list

Problem is this cleanup work defeated the frag0 optimization:
It turns out the consecutive pskb_may_pull() calls are too expensive.

This patch brings back the frag0 stuff in napi_frags_skb().

As all skb have their mac header in skb head, we no longer need
skb_gro_mac_header()

Reported-by: Michal Schmidt <mschmidt@redhat.com>
Fixes: 299603e837 ("net-gro: Prepare GRO stack for the upcoming tunneling support")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Jerry Chu <hkchu@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-31 16:26:40 -04:00
..
datagram.c
dev_addr_lists.c net: Correctly sync addresses from multiple sources to single device 2014-01-23 13:06:34 -08:00
dev_ioctl.c
dev.c net-gro: restore frag0 optimization 2014-03-31 16:26:40 -04:00
drop_monitor.c
dst.c
ethtool.c
fib_rules.c net: fix 'ip rule' iif/oif device rename 2014-02-09 19:02:52 -08:00
filter.c net: filter: rework/optimize internal BPF interpreter's instruction set 2014-03-31 00:45:09 -04:00
flow_dissector.c net: Rename skb->rxhash to skb->hash 2014-03-26 15:58:20 -04:00
flow.c flowcache: Fix resource leaks on namespace exit. 2014-03-12 15:31:18 -04:00
gen_estimator.c
gen_stats.c
iovec.c
link_watch.c
Makefile
neighbour.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-05 20:32:02 -05:00
net_namespace.c
net-procfs.c
net-sysfs.c net-sysfs: expose number of carrier on/off changes 2014-03-31 16:24:52 -04:00
net-sysfs.h
net-traces.c
netclassid_cgroup.c
netevent.c
netpoll.c netpoll: Respect NETIF_F_LLTX 2014-03-29 17:58:37 -04:00
netprio_cgroup.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
pktgen.c pktgen: document all supported flags 2014-02-24 18:54:26 -05:00
request_sock.c net: remove unnecessary return's 2014-02-13 18:33:38 -05:00
rtnetlink.c net-sysfs: expose number of carrier on/off changes 2014-03-31 16:24:52 -04:00
scm.c
secure_seq.c
skbuff.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-29 18:48:54 -04:00
sock_diag.c net: filter: keep original BPF program around 2014-03-31 00:45:09 -04:00
sock.c tcp: tcp_release_cb() should release socket ownership 2014-03-11 16:45:59 -04:00
stream.c
sysctl_net_core.c
timestamping.c net: ptp: do not reimplement PTP/BPF classifier 2014-03-31 00:45:09 -04:00
user_dma.c
utils.c