[PATCH] app/testpmd: fix GTP header parsing in csum FWD engine

Gregory Etelson getelson at nvidia.com
Sun Mar 13 09:44:59 CET 2022


Hello,

From: Singh, Aman Deep <aman.deep.singh at intel.com>
Sent: Friday, March 11, 2022 15:35
To: Gregory Etelson <getelson at nvidia.com>; dev at dpdk.org
Cc: Matan Azrad <matan at nvidia.com>; Raslan Darawsheh <rasland at nvidia.com>; stable at dpdk.org; Xiaoyun Li <xiaoyun.li at intel.com>; Yuying Zhang <yuying.zhang at intel.com>; Ting Xu <ting.xu at intel.com>; Ferruh Yigit <ferruh.yigit at intel.com>
Subject: Re: [PATCH] app/testpmd: fix GTP header parsing in csum FWD engine

External email: Use caution opening links or attachments


Looks good to me.
On 3/10/2022 7:50 PM, Gregory Etelson wrote:

GTP header can be followed by an optional 32 bits extension.

GTP notifies about the extension presence through the E, S or PN

header bits.



Csum GTP header parser did not check the extension bits value.



The patch updates GTP header length if header extension bits are set.
Can we rephrase above line "if at-least one of the extension bit is set."
To make it more clear.

[Gregory] I’ll post v2 with updated comment.







Cc: stable at dpdk.org<mailto:stable at dpdk.org>



Fixes: d8e5e69f3a9b ("app/testpmd: add GTP parsing and Tx checksum offload")

Signed-off-by: Gregory Etelson <getelson at nvidia.com><mailto:getelson at nvidia.com>
Acked-by: Aman Singh <aman.deep.singh at intel.com><mailto:aman.deep.singh at intel.com>



---

 app/test-pmd/csumonly.c | 7 +++----

 1 file changed, 3 insertions(+), 4 deletions(-)



diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c

index 5274d498ee..f8abcded2b 100644

--- a/app/test-pmd/csumonly.c

+++ b/app/test-pmd/csumonly.c

@@ -223,15 +223,14 @@ parse_gtp(struct rte_udp_hdr *udp_hdr,



        gtp_hdr = (struct rte_gtp_hdr *)((char *)udp_hdr +

                  sizeof(struct rte_udp_hdr));

-

+       if (gtp_hdr->e || gtp_hdr->s || gtp_hdr->pn)

+               gtp_len += sizeof(struct rte_gtp_hdr_ext_word);

        /*

         * Check message type. If message type is 0xff, it is

         * a GTP data packet. If not, it is a GTP control packet

         */

        if (gtp_hdr->msg_type == 0xff) {

-               ip_ver = *(uint8_t *)((char *)udp_hdr +

-                        sizeof(struct rte_udp_hdr) +

-                        sizeof(struct rte_gtp_hdr));

+               ip_ver = *(uint8_t *)((char *)gtp_hdr + gtp_len);

                ip_ver = (ip_ver) & 0xf0;



                if (ip_ver == RTE_GTP_TYPE_IPV4) {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/stable/attachments/20220313/4f3e9a82/attachment.htm>


More information about the stable mailing list