summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/micrel
diff options
context:
space:
mode:
authorTariq Toukan <tariqt@mellanox.com>2017-02-22 17:20:16 +0200
committerDavid S. Miller <davem@davemloft.net>2017-02-23 10:43:10 -0500
commit36154be40a28e4afaa0416da2681d80b7e2ca319 (patch)
treed9bf7529f24cc817b4f514e081d77162bb284f62 /drivers/net/ethernet/micrel
parent6dc4b54e77282caf17f0ff72aa32dd296037fbc0 (diff)
downloadlinux-36154be40a28e4afaa0416da2681d80b7e2ca319.tar.gz
linux-36154be40a28e4afaa0416da2681d80b7e2ca319.tar.xz
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: 7219ab34f184 ("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>
Diffstat (limited to 'drivers/net/ethernet/micrel')
0 files changed, 0 insertions, 0 deletions