[dpdk-users] DPDK RX TCP checksum failed

jiangheng (H) jiangheng12 at huawei.com
Sat Mar 26 09:13:21 CET 2022


Hi all,

I tried using the checksum offloads feature in DPDK and it did not see working under virtual machine.

Port only support TCP checksum and do not support IP checksum:
rx_offload_capa = DEV_RX_OFFLOAD_TCP_CKSUM
tx_offload_capa = DEV_TX_OFFLOAD_TCP_CKSUM

so I config rxmode.offload txmode.offloads as below:
rxmode.offloads = DEV_RX_OFFLOAD_TCP_CKSUM
txmode.offloads = DEV_TX_OFFLOAD_TCP_CKSUM

For TX, I set the following parameters, it works good.
mbuf->l2_len = sizeof(*ethhdr)
mbuf->l3_len = ip header len
mbuf-ol_flags = RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_TCP_CKSUM


For RX, It will execute the following code:
In drivers/net/virtio/virtio_rxtx.c  virtio_rx_offload function :
    if (hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) {
        hdrlen = hdr_lens.l2_len + hdr_lens.l3_len + hdr_lens.l4_len;
        if (hdr->csum_start <= hdrlen && l4_supported) {
            m->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_NONE;
        } else {

m->ol_flags set to RTE_MBUF_F_RX_L4_CKSUM_NONE, causing the TCP RX checksum failed.
How do I avoid the above code going into this branch?

Thanks,
Jinag.







-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/users/attachments/20220326/31b30834/attachment.htm>


More information about the users mailing list