Hello, On 11/06/2014 05:05 PM, Alex Markuze wrote: > I'm seeing "UDP: bad checksum." messages(dmesg) for packets sent by my dpdk > app to a socket on a remote machine. > Looking at the packets the scum value is set, its just not what wireshark > expects. > > When sending I'm setting these fields in the egress packets. > > pkt->pkt.vlan_macip.f.l2_len = sizeof(struct ether_hdr); > > pkt->pkt.vlan_macip.f.l3_len = sizeof(struct ipv4_hdr); > > pkt->ol_flags |= (PKT_TX_IP_CKSUM | PKT_TX_L4_MASK); > //PKT_TX_OFFLOAD_MASK;
I think you need to do: pkt->pkt.vlan_macip.f.l2_len = sizeof(struct ether_hdr); pkt->pkt.vlan_macip.f.l3_len = sizeof(struct ipv4_hdr); pkt->ol_flags |= (PKT_TX_IP_CKSUM | PKT_TX_UDP_CKSUM); ipv4_hdr->hdr_checksum = 0; udp_hdr->dgram_cksum = 0; udp_hdr->dgram_cksum = get_ipv4_psd_sum(ipv4_hdr); /* see csumonly.c */ Regards, Olivier