linux-sg2042/drivers/net
Tariq Toukan 36154be40a net/mlx5e: Fix wrong CQE decompression
In cqe compression with striding RQ, the decompression of the CQE field
wqe_counter was done with a wrong wraparound value.
This caused handling cqes with a wrong pointer to wqe (rx descriptor)
and creating SKBs with wrong data, pointing to wrong (and already consumed)
strides/pages.

The meaning of the CQE field wqe_counter in striding RQ holds the
stride index instead of the WQE index. Hence, when decompressing
a CQE, wqe_counter should have wrapped-around the number of strides
in a single multi-packet WQE.

We dropped this wrap-around mask at all in CQE decompression of striding
RQ. It is not needed as in such cases the CQE compression session would
break because of different value of wqe_id field, starting a new
compression session.

Tested:
 ethtool -K ethxx lro off/on
 ethtool --set-priv-flags ethxx rx_cqe_compress on
 super_netperf 16 {ipv4,ipv6} -t TCP_STREAM -m 50 -D
 verified no csum errors and no page refcount issues.

Fixes: 7219ab34f1 ("net/mlx5e: CQE compression")
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Reported-by: Tom Herbert <tom@herbertland.com>
Cc: kernel-team@fb.com
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-02-23 10:43:10 -05:00
..
appletalk net/appletalk: Fix kernel memory disclosure 2017-01-09 16:34:39 -05:00
arcnet
bonding net: remove ndo_neigh_{construct, destroy} from stacked devices 2017-02-06 11:25:57 -05:00
caif
can can: flexcan: switch imx6 and vf610 to timestamp based offloading 2017-02-06 15:13:45 +01:00
cris
dsa net:dsa:mv88e6xxx: use watchdog ops for 6097 chip 2017-02-14 11:45:28 -05:00
ethernet net/mlx5e: Fix wrong CQE decompression 2017-02-23 10:43:10 -05:00
fddi fddi: skfp: Use more common logging styles 2016-12-29 11:37:14 -05:00
fjes drivers: net: generalize napi_complete_done() 2017-01-30 15:10:42 -05:00
hamradio NET: mkiss: Fix panic 2017-02-10 13:41:13 -05:00
hippi Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
hyperv netvsc: fix typo on statistics 2017-02-17 15:06:52 -05:00
ieee802154 ieee802154: atusb: fix driver to work with older firmware versions 2017-01-12 22:12:43 +01:00
ipvlan ipvtap: IP-VLAN based tap driver 2017-02-11 20:59:41 -05:00
irda net: irda: au1k_ir: drop useless include 2017-02-14 14:51:03 -05:00
phy net: phy: Check phydev->drv 2017-02-20 10:15:11 -05:00
plip
ppp net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
slip net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
team net: remove ndo_neigh_{construct, destroy} from stacked devices 2017-02-06 11:25:57 -05:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-11 02:31:11 -05:00
vmxnet3 drivers: net: generalize napi_complete_done() 2017-01-30 15:10:42 -05:00
wan net/wan: add MODULE_LICENSE for fsl_ucc_hdlc 2017-02-17 15:20:43 -05:00
wimax
wireless Revert "ath10k: Search SMBIOS for OEM board file extension" 2017-02-21 15:59:45 -05:00
xen-netback Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-02-22 10:15:09 -08:00
Kconfig vmxnet3: prevent building with 64K pages 2017-02-17 15:25:49 -05:00
LICENSE.SRC
Makefile ipvtap: IP-VLAN based tap driver 2017-02-11 20:59:41 -05:00
Space.c
dummy.c net: dummy: Introduce dummy virtual functions 2017-01-24 14:07:22 -05:00
eql.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
geneve.c
gtp.c gtp: let userspace handle packets for invalid tunnels 2017-01-29 13:54:00 -05:00
ifb.c net-tc: convert tc_from to tc_from_ingress and tc_redirected 2017-01-08 20:58:52 -05:00
loopback.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-11 02:31:11 -05:00
macsec.c macsec: fix validation failed in asynchronous operation. 2017-02-21 13:13:51 -05:00
macvlan.c tap: Abstract type of virtual interface from tap implementation 2017-02-11 20:59:41 -05:00
macvtap.c tap: tap as an independent module 2017-02-11 20:59:41 -05:00
mdio.c net: mdio: add mdio45_ethtool_ksettings_get 2017-01-02 16:59:10 -05:00
mii.c
netconsole.c
nlmon.c net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
ntb_netdev.c
rionet.c
sb1000.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
sungem_phy.c
tap.c tap: tap as an independent module 2017-02-11 20:59:41 -05:00
tun.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-07 16:29:30 -05:00
veth.c net: make ndo_get_stats64 a void function 2017-01-08 17:51:44 -05:00
virtio_net.c virtio-net: switch to use build_skb() for small buffer 2017-02-21 12:24:52 -05:00
vrf.c net: rename dst_neigh_output back to neigh_output 2017-02-11 21:25:18 -05:00
vxlan.c vxlan: remove unused variable saddr in neigh_reduce 2017-02-21 12:19:21 -05:00
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-02-22 10:15:09 -08:00