linux/drivers/infiniband/ulp/ipoib
Paolo Abeni fc791b6335 IB/ipoib: move back IB LL address into the hard header
After the commit 9207f9d45b ("net: preserve IP control block
during GSO segmentation"), the GSO CB and the IPoIB CB conflict.
That destroy the IPoIB address information cached there,
causing a severe performance regression, as better described here:

http://marc.info/?l=linux-kernel&m=146787279825501&w=2

This change moves the data cached by the IPoIB driver from the
skb control lock into the IPoIB hard header, as done before
the commit 936d7de3d7 ("IPoIB: Stop lying about hard_header_len
and use skb->cb to stash LL addresses").
In order to avoid GRO issue, on packet reception, the IPoIB driver
stash into the skb a dummy pseudo header, so that the received
packets have actually a hard header matching the declared length.
To avoid changing the connected mode maximum mtu, the allocated
head buffer size is increased by the pseudo header length.

After this commit, IPoIB performances are back to pre-regression
value.

v2 -> v3: rebased
v1 -> v2: avoid changing the max mtu, increasing the head buf size

Fixes: 9207f9d45b ("net: preserve IP control block during GSO segmentation")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-10-14 10:54:53 -04:00
..
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
Makefile IB/ipoib: Add rtnl_link_ops support 2012-09-20 16:49:17 -04:00
ipoib.h IB/ipoib: move back IB LL address into the hard header 2016-10-14 10:54:53 -04:00
ipoib_cm.c IB/ipoib: move back IB LL address into the hard header 2016-10-14 10:54:53 -04:00
ipoib_ethtool.c IB/ipoib: Use new device FW version string 2016-06-23 12:08:34 -04:00
ipoib_fs.c IPoIB: Remove unnecessary test for NULL before debugfs_remove() 2014-08-12 21:59:54 -07:00
ipoib_ib.c IB/ipoib: move back IB LL address into the hard header 2016-10-14 10:54:53 -04:00
ipoib_main.c IB/ipoib: move back IB LL address into the hard header 2016-10-14 10:54:53 -04:00
ipoib_multicast.c IB/ipoib: move back IB LL address into the hard header 2016-10-14 10:54:53 -04:00
ipoib_netlink.c infiniband: make sure the src net is infiniband when create new link 2014-01-03 20:38:56 -05:00
ipoib_verbs.c IB/ipoib_verbs: Remove deprecated create_singlethread_workqueue 2016-10-07 16:54:32 -04:00
ipoib_vlan.c IB/IPoIB: Fix race between ipoib_remove_one to sysfs functions 2016-06-07 09:50:53 -04:00