| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Jesper Dangaard Brouer <brouer@redhat.com> |
| Date: Mon, 22 May 2017 20:13:07 +0200 |
| Subject: mlx5: fix bug reading rss_hash_type from CQE |
| |
| From: Jesper Dangaard Brouer <brouer@redhat.com> |
| |
| |
| [ Upstream commit 12e8b570e732eaa5eae3a2895ba3fbcf91bde2b4 ] |
| |
| Masks for extracting part of the Completion Queue Entry (CQE) |
| field rss_hash_type was swapped, namely CQE_RSS_HTYPE_IP and |
| CQE_RSS_HTYPE_L4. |
| |
| The bug resulted in setting skb->l4_hash, even-though the |
| rss_hash_type indicated that hash was NOT computed over the |
| L4 (UDP or TCP) part of the packet. |
| |
| Added comments from the datasheet, to make it more clear what |
| these masks are selecting. |
| |
| Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> |
| Acked-by: Saeed Mahameed <saeedm@mellanox.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| include/linux/mlx5/device.h | 10 ++++++++-- |
| 1 file changed, 8 insertions(+), 2 deletions(-) |
| |
| --- a/include/linux/mlx5/device.h |
| +++ b/include/linux/mlx5/device.h |
| @@ -750,8 +750,14 @@ enum { |
| }; |
| |
| enum { |
| - CQE_RSS_HTYPE_IP = 0x3 << 6, |
| - CQE_RSS_HTYPE_L4 = 0x3 << 2, |
| + CQE_RSS_HTYPE_IP = 0x3 << 2, |
| + /* cqe->rss_hash_type[3:2] - IP destination selected for hash |
| + * (00 = none, 01 = IPv4, 10 = IPv6, 11 = Reserved) |
| + */ |
| + CQE_RSS_HTYPE_L4 = 0x3 << 6, |
| + /* cqe->rss_hash_type[7:6] - L4 destination selected for hash |
| + * (00 = none, 01 = TCP. 10 = UDP, 11 = IPSEC.SPI |
| + */ |
| }; |
| |
| enum { |