linux_dsm_epyc7002/drivers/net/ethernet/mellanox
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
..
mlx4 mlx4: reduce OOM risk on arches with large pages 2017-02-20 10:31:50 -05:00
mlx5/core net/mlx5e: Fix wrong CQE decompression 2017-02-23 10:43:10 -05:00
mlxsw mlxsw: acl: Use PBS type for forward action 2017-02-15 13:23:20 -05:00
Kconfig mlxsw: Introduce Mellanox switch driver core 2015-07-30 00:04:59 -07:00
Makefile mlxsw: Introduce Mellanox switch driver core 2015-07-30 00:04:59 -07:00