[PATCH] [xenial] [PATCH] (upstream) net/mlx4_en: Fix endianness bug in IPV6 csum calculation
Christopher Arges
chris.j.arges at canonical.com
Mon May 9 15:27:31 UTC 2016
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