csum is the sum of three 16 bits value
it must be folded twice to ensure that the upper 16 bits are 0
---
 drivers/net/mlx5/mlx5_rx.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/mlx5/mlx5_rx.c b/drivers/net/mlx5/mlx5_rx.c
index a2be523e9e..ae537dfffa 100644
--- a/drivers/net/mlx5/mlx5_rx.c
+++ b/drivers/net/mlx5/mlx5_rx.c
@@ -1090,6 +1090,7 @@ mlx5_lro_update_tcp_hdr(struct rte_tcp_hdr 
*__rte_restrict tcp,
    tcp->cksum = 0;
    csum += rte_raw_cksum(tcp, (tcp->data_off >> 4) * 4);
    csum = ((csum & 0xffff0000) >> 16) + (csum & 0xffff);
+   csum = ((csum & 0xffff0000) >> 16) + (csum & 0xffff);
    csum = (~csum) & 0xffff;
    if (csum == 0)
        csum = 0xffff;
--
2.27.0

Reply via email to