app/test: fix IPv6 header initialization

Message ID 20210326163732.763862-1-lance.richardson@broadcom.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series app/test: fix IPv6 header initialization |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/travis-robot success travis build: passed
ci/github-robot success github build: passed
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS

Commit Message

Lance Richardson March 26, 2021, 4:37 p.m. UTC
  Fix two issues found when writing PMD unit tests for HW ptype and
L4 checksum offload:

   - The version field in the IPv6 header was being set to zero,
     which prevented hardware from recognizing it as IPv6. The
     IP version field is now set to six.
   - The payload_len field was being initialized using host byte
     order, which (among other things) resulted in incorrect L4
     checksum computation. The payload_len field is now set using
     network (big-endian) byte order.

Fixes: 92073ef961ee ("bond: unit tests")
Cc: stable@dpdk.org

Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
---
 app/test/packet_burst_generator.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

David Marchand May 11, 2021, 2:31 p.m. UTC | #1
On Fri, Mar 26, 2021 at 5:37 PM Lance Richardson
<lance.richardson@broadcom.com> wrote:
>
> Fix two issues found when writing PMD unit tests for HW ptype and
> L4 checksum offload:

Would those unit tests be interesting to other pmd driver writers?


>
>    - The version field in the IPv6 header was being set to zero,
>      which prevented hardware from recognizing it as IPv6. The
>      IP version field is now set to six.
>    - The payload_len field was being initialized using host byte
>      order, which (among other things) resulted in incorrect L4
>      checksum computation. The payload_len field is now set using
>      network (big-endian) byte order.
>
> Fixes: 92073ef961ee ("bond: unit tests")

Odd that this never got caught before, I guess nobody ran the bonding
test with ipv6.

Adding new maintainers for the bonding code since this helper is only
used in the bonding ut.
Should we take this in 21.05 or wait 21.08?


> Cc: stable@dpdk.org
>
> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>

Reviewed-by: David Marchand <david.marchand@redhat.com>
  
Lance Richardson May 11, 2021, 2:42 p.m. UTC | #2
On Tue, May 11, 2021 at 10:31 AM David Marchand
<david.marchand@redhat.com> wrote:
>
> On Fri, Mar 26, 2021 at 5:37 PM Lance Richardson
> <lance.richardson@broadcom.com> wrote:
> >
> > Fix two issues found when writing PMD unit tests for HW ptype and
> > L4 checksum offload:
>
> Would those unit tests be interesting to other pmd driver writers?
>
I think so, although some adjustments would be needed to account
for differences in hardware capabilities. The tests I've written so far
are still very much a work in progress, but I hope to have something
ready for RFC in the near future.
  
Lance Richardson June 21, 2021, 12:40 p.m. UTC | #3
On Tue, May 11, 2021 at 10:42 AM Lance Richardson
<lance.richardson@broadcom.com> wrote:
>
> On Tue, May 11, 2021 at 10:31 AM David Marchand
> <david.marchand@redhat.com> wrote:
> >
> > On Fri, Mar 26, 2021 at 5:37 PM Lance Richardson
> > <lance.richardson@broadcom.com> wrote:
> > >
> > > Fix two issues found when writing PMD unit tests for HW ptype and
> > > L4 checksum offload:
> >
> > Would those unit tests be interesting to other pmd driver writers?
> >
> I think so, although some adjustments would be needed to account
> for differences in hardware capabilities. The tests I've written so far
> are still very much a work in progress, but I hope to have something
> ready for RFC in the near future.

What is the current status of this patch?

Thanks,
     Lance
  
David Marchand June 21, 2021, 12:49 p.m. UTC | #4
On Mon, Jun 21, 2021 at 2:41 PM Lance Richardson
<lance.richardson@broadcom.com> wrote:
>
> On Tue, May 11, 2021 at 10:42 AM Lance Richardson
> <lance.richardson@broadcom.com> wrote:
> >
> > On Tue, May 11, 2021 at 10:31 AM David Marchand
> > <david.marchand@redhat.com> wrote:
> > >
> > > On Fri, Mar 26, 2021 at 5:37 PM Lance Richardson
> > > <lance.richardson@broadcom.com> wrote:
> > > >
> > > > Fix two issues found when writing PMD unit tests for HW ptype and
> > > > L4 checksum offload:
> > >
> > > Would those unit tests be interesting to other pmd driver writers?
> > >
> > I think so, although some adjustments would be needed to account
> > for differences in hardware capabilities. The tests I've written so far
> > are still very much a work in progress, but I hope to have something
> > ready for RFC in the near future.
>
> What is the current status of this patch?

I wanted feedback from bonding guys, but I'll get it in v21.08 now.
Thanks for the heads up.
  
David Marchand July 5, 2021, 8:22 a.m. UTC | #5
On Fri, Mar 26, 2021 at 5:37 PM Lance Richardson
<lance.richardson@broadcom.com> wrote:
>
> Fix two issues found when writing PMD unit tests for HW ptype and
> L4 checksum offload:
>
>    - The version field in the IPv6 header was being set to zero,
>      which prevented hardware from recognizing it as IPv6. The
>      IP version field is now set to six.
>    - The payload_len field was being initialized using host byte
>      order, which (among other things) resulted in incorrect L4
>      checksum computation. The payload_len field is now set using
>      network (big-endian) byte order.
>
> Fixes: 92073ef961ee ("bond: unit tests")
> Cc: stable@dpdk.org
>
> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>

Applied, thanks.
  

Patch

diff --git a/app/test/packet_burst_generator.c b/app/test/packet_burst_generator.c
index f203f9d09e..8b390853a2 100644
--- a/app/test/packet_burst_generator.c
+++ b/app/test/packet_burst_generator.c
@@ -141,8 +141,8 @@  uint16_t
 initialize_ipv6_header(struct rte_ipv6_hdr *ip_hdr, uint8_t *src_addr,
 		uint8_t *dst_addr, uint16_t pkt_data_len)
 {
-	ip_hdr->vtc_flow = 0;
-	ip_hdr->payload_len = pkt_data_len;
+	ip_hdr->vtc_flow = rte_cpu_to_be_32(0x60000000); /* Set version to 6. */
+	ip_hdr->payload_len = rte_cpu_to_be_16(pkt_data_len);
 	ip_hdr->proto = IPPROTO_UDP;
 	ip_hdr->hop_limits = IP_DEFTTL;