[PATCH] [xenial] [PATCH] (upstream) net/mlx4_en: Fix endianness bug in IPV6 csum calculation
Talat Batheesh
talatb at mellanox.com
Tue May 10 10:59:53 UTC 2016
Cherry-picked from net tree.
Yours,
Talat
-----Original Message-----
From: Christopher Arges [mailto:chris.j.arges at canonical.com]
Sent: Monday, May 09, 2016 6:28 PM
To: Talat Batheesh <talatb at mellanox.com>
Cc: kernel-team at lists.ubuntu.com; Shani Michaeli <shanim at mellanox.com>
Subject: Re: [PATCH] [xenial] [PATCH] (upstream) net/mlx4_en: Fix endianness bug in IPV6 csum calculation
On Mon, May 09, 2016 at 11:09:18AM +0300, Talat Batheesh wrote:
> From: Daniel Jurgens <danielj at mellanox.com>
>
> BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1544978
>
> Use htons instead of unconditionally byte swapping nexthdr. On a
> little endian systems shifting the byte is correct behavior, but it
> results in incorrect csums on big endian architectures.
>
> Fixes: f8c6455bb04b ('net/mlx4_en: Extend checksum offloading by
> CHECKSUM COMPLETE')
> Signed-off-by: Daniel Jurgens <danielj at mellanox.com>
> Reviewed-by: Carol Soto <clsoto at us.ibm.com>
> Tested-by: Carol Soto <clsoto at us.ibm.com>
> Signed-off-by: Tariq Toukan <tariqt at mellanox.com>
> Signed-off-by: David S. Miller <davem at davemloft.net> (cherry picked
> from commit 82d69203df634b4dfa765c94f60ce9482bcc44d6)
Amend this to include where it was cherry-picked from.
Other than that ACK.
--chris
> Signed-off-by: Talat Batheesh <talatb at mellanox.com>
> ---
> drivers/net/ethernet/mellanox/mlx4/en_rx.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c
> b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
> index e7a5000..bbff8ec 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
> @@ -704,7 +704,7 @@ static int get_fixed_ipv6_csum(__wsum hw_checksum,
> struct sk_buff *skb,
>
> if (ipv6h->nexthdr == IPPROTO_FRAGMENT || ipv6h->nexthdr == IPPROTO_HOPOPTS)
> return -1;
> - hw_checksum = csum_add(hw_checksum, (__force __wsum)(ipv6h->nexthdr << 8));
> + hw_checksum = csum_add(hw_checksum, (__force
> +__wsum)htons(ipv6h->nexthdr));
>
> csum_pseudo_hdr = csum_partial(&ipv6h->saddr,
> sizeof(ipv6h->saddr) + sizeof(ipv6h->daddr), 0);
> --
> 2.5.0
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
More information about the kernel-team
mailing list