Folks, I'm having a hard time trying to convince an Intel Fortville (i40e) PMD / NIC to compute and insert TCP correct TCP checksums.
In addition to the typical struct rte_mbuf setup, I add the following: if (b->flags & VLIB_BUFFER_TCP_CHECKSUM_OFFLOAD) { mb->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_TCP; mb->ol_flags = PKT_TX_TCP_CKSUM | PKT_TX_IPV4; mb->l2_len = 14; mb->l3_len = 20; mb->outer_l2_len = 0; mb->outer_l3_len = 0; mb->l4_len = 0; } The inbound tcp->checksum is known to be zero. The packets involved are the simplest case: 14-byte ethernet headers w/ type 0x800, 20-byte ipv4 headers, TCP (SYN,ACK) packet with some options. Independent of port numbers / across multiple trials wireshark reports a constant checksum error of 0xe31. abs(received checksum - computed checksum) = 0xe31. Does this ring any bells? Thanks... Dave
_______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev