Hi ,
I am using mellanox nic [ConnectX-6 Lx] . If I pump vxlan ipv6 traffic using trex stl , I am getting "bad udp cksum" on the receiver DUT.
I narrowed it down and observed that this is due to STLVmFixChecksumHw incorrectly calculating the checksum.
I cannot make inner header checksum as 0, as it is required for the internal test.
If I send some sample packets streams without using field engine, then there is no checksum issue. Even this issue is not seen while using XXV710 nic.
Is there any fix or workaround without affecting the performance ?
Below is the code snippet :
base_pkt = Ether(src= source_mac, dst = dest_mac)/ IP(src=source_ip, dst=dest_ip)/UDP(sport=1054,dport=4789,chksum=0x0000)/VXLAN(vni=1000)/Ether(src="02:00:00:02:15:01", dst= "02:00:00:02:14:01")/IPv6(dst="2001:db8:abcd:11:f816:3eff:0002:1401", src="2001:db8:abcd:11:f816:3eff:0002:1501")/UDP(sport=60001, dport=5005)
if (1):
vm1 = STLScVmRaw( [
STLVmFlowVar(name="dst_port",
min_value=5005,
max_value=30000,
size=2),
STLVmWrFlowVar(fv_name="dst_port",
pkt_offset= "UDP:1.dport"), # fix udp len
STLVmFixChecksumHw(l3_offset="IPv6",
l4_offset="UDP:1",
l4_type=CTRexVmInsFixHwCs.L4_TYPE_UDP),
Regards,
Dheeraj