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 > > 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 > --- > 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 Ion 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 --- 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 Ion 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 --- 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