[dpdk-stable] [PATCH] net/mlx5: fix LRO checksum completence

Raslan Darawsheh rasland at mellanox.com
Tue Jun 16 10:02:39 CEST 2020


Hi,

> -----Original Message-----
> From: Bill Zhou <dongz at mellanox.com>
> Sent: Friday, June 12, 2020 11:58 AM
> To: dev at dpdk.org
> Cc: stable at dpdk.org; Raslan Darawsheh <rasland at mellanox.com>; Matan
> Azrad <matan at mellanox.com>
> Subject: [PATCH] net/mlx5: fix LRO checksum completence
> 
> The TCP checksum includes IPV4 pseudo-header checksum and L3
> payload checksum which include TCP header and TCP payload.
> When mlx5 LRO is enabled, HW will calculate the TCP payload
> checksum, PMD need complete the IPV4 pseudo-header checksum
> and the TCP header checksum.
> 
> The mlx5_lro_update_tcp_hdr function completes the TCP header
> checksum, but this function using lower 4 bits of data-offset
> field in TCP header to get the whole TCP header length, this
> will cause TCP header checksum wrong calculation.
> 
> Update the code using higher 4 bits of data-offset field
> instead of lower 4 bits.
> 
> Fixes: e4c2a16eb1de ("net/mlx5: handle LRO packets in Rx queue")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Bill Zhou <dongz at mellanox.com>
> Acked-by: Matan Azrad <matan at mellanox.com>
> ---
>  drivers/net/mlx5/mlx5_rxtx.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c
> index 6a17a9a5d0..e4c1c95b0e 100644
> --- a/drivers/net/mlx5/mlx5_rxtx.c
> +++ b/drivers/net/mlx5/mlx5_rxtx.c
> @@ -1529,7 +1529,7 @@ mlx5_lro_update_tcp_hdr(struct rte_tcp_hdr
> *restrict tcp,
>  	if (cqe->lro_tcppsh_abort_dupack & MLX5_CQE_LRO_PUSH_MASK)
>  		tcp->tcp_flags |= RTE_TCP_PSH_FLAG;
>  	tcp->cksum = 0;
> -	csum += rte_raw_cksum(tcp, (tcp->data_off & 0xF) * 4);
> +	csum += rte_raw_cksum(tcp, (tcp->data_off >> 4) * 4);
>  	csum = ((csum & 0xffff0000) >> 16) + (csum & 0xffff);
>  	csum = (~csum) & 0xffff;
>  	if (csum == 0)
> --
> 2.21.0


Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh


More information about the stable mailing list