>> From: Pavan Nikhilesh <pbhagavat...@marvell.com> >> >> Add reassembly perf autotest for both ipv4 and ipv6 reassembly. >> Each test is performed with vairable number of fragments per flow, >> either ordered or unorderd fragments and interleaved flows. >> >> Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com> >> --- >> app/test/meson.build | 2 + >> app/test/test_reassembly_perf.c | 989 >++++++++++++++++++++++++++++++++ >> 2 files changed, 991 insertions(+) >> create mode 100644 app/test/test_reassembly_perf.c >>
<snip> >> + pkt_len = frag_len; >> + /* >> + * Initialize UDP header. >> + */ >> + if (i == 0) { >> + udp_hdr->src_port = >rte_cpu_to_be_16(UDP_SRC_PORT); >> + udp_hdr->dst_port = >rte_cpu_to_be_16(UDP_DST_PORT); >> + udp_hdr->dgram_len = >rte_cpu_to_be_16(pkt_len); >> + udp_hdr->dgram_cksum = 0; /* No UDP >checksum. */ > > ^^^ This is expressly forbidden in ipv6 (see > RFC2460). Is the fragment reassembly not > caring about this? I didn't check if ipv6 > fragmenting code actually generates a proper > udp checksum, either. Nope reassembly doesn't care about L4 header. I just checked the v6 fragmentation code and it doesn't compute udp checksum. > > I don't think it should prevent us from > adding this test case, but we should try to > fix it in the library if it isn't already. > >> + } >> + >> + /* >> + * Initialize IP header. >> + */ >> + pkt_len = (uint16_t)(pkt_len + sizeof(struct >rte_ipv6_hdr) + >> + RTE_IPV6_FRAG_HDR_SIZE); >> + ip_hdr->vtc_flow = rte_cpu_to_be_32(IP6_VERSION <<