[PATCH] net/mlx5: fix lro update tcp header cksum error

jiangheng (G) jiangheng14 at huawei.com
Wed Apr 12 13:38:35 CEST 2023


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


More information about the dev mailing list