Re: [lng-odp] [PATCH] validation:pktio : Fix UDP checksum computation
-Original Message- From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of Maxim Uvarov Sent: Wednesday, September 23, 2015 8:37 PM To: lng-odp@lists.linaro.org Subject: Re: [lng-odp] [PATCH] validation:pktio : Fix UDP checksum computation On 09/21/15 08:57, ion.grig...@freescale.com wrote: > From: Grigore Ion <ion.grig...@freescale.com> > > The UDP checksum is computed in the CPU endianess. The returned result > must be converted to the BE ordering when it is used to update the UDP > checksum in a packet. > > Signed-off-by: Grigore Ion <ion.grig...@freescale.com> > --- > test/validation/pktio/pktio.c |2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/test/validation/pktio/pktio.c > b/test/validation/pktio/pktio.c index d62f18d..604ac89 100644 > --- a/test/validation/pktio/pktio.c > +++ b/test/validation/pktio/pktio.c > @@ -195,7 +195,7 @@ static int pktio_fixup_checksums(odp_packet_t pkt) > ip->chksum = 0; > odph_ipv4_csum_update(pkt); > udp->chksum = 0; > - udp->chksum = odph_ipv4_udp_chksum(pkt); > + udp->chksum = odp_cpu_to_be_16(odph_ipv4_udp_chksum(pkt)); > odph_ipv4_udp_chksum() should return checksum in right bite order. Converting it each time like that complicates code. Maxim. The chksum field is declared as uint16be_t. In my opinion, applications updating the xxxbe_t fields should call the odp_cpu_to_be_xx function to update such fields (mapped on data in a BE packet). From this point of view, odph_ipv4_udp_chksum() returns the checksum in the CPU byte order. The same is done in the function odph_ipv4_csum_update(). Grig > return 0; > } ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH] validation:pktio : Fix UDP checksum computation
On 09/21/15 08:57, ion.grig...@freescale.com wrote: From: Grigore IonThe UDP checksum is computed in the CPU endianess. The returned result must be converted to the BE ordering when it is used to update the UDP checksum in a packet. Signed-off-by: Grigore Ion --- test/validation/pktio/pktio.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c index d62f18d..604ac89 100644 --- a/test/validation/pktio/pktio.c +++ b/test/validation/pktio/pktio.c @@ -195,7 +195,7 @@ static int pktio_fixup_checksums(odp_packet_t pkt) ip->chksum = 0; odph_ipv4_csum_update(pkt); udp->chksum = 0; - udp->chksum = odph_ipv4_udp_chksum(pkt); + udp->chksum = odp_cpu_to_be_16(odph_ipv4_udp_chksum(pkt)); odph_ipv4_udp_chksum() should return checksum in right bite order. Converting it each time like that complicates code. Maxim. return 0; } ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
[lng-odp] [PATCH] validation:pktio : Fix UDP checksum computation
From: Grigore IonThe UDP checksum is computed in the CPU endianess. The returned result must be converted to the BE ordering when it is used to update the UDP checksum in a packet. Signed-off-by: Grigore Ion --- test/validation/pktio/pktio.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c index d62f18d..604ac89 100644 --- a/test/validation/pktio/pktio.c +++ b/test/validation/pktio/pktio.c @@ -195,7 +195,7 @@ static int pktio_fixup_checksums(odp_packet_t pkt) ip->chksum = 0; odph_ipv4_csum_update(pkt); udp->chksum = 0; - udp->chksum = odph_ipv4_udp_chksum(pkt); + udp->chksum = odp_cpu_to_be_16(odph_ipv4_udp_chksum(pkt)); return 0; } -- 1.7.3.4 ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp