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. > > Cc:stable@dpdk.org > > Fixes: d8e5e69f3a9b ("app/testpmd: add GTP parsing and Tx checksum offload") > Signed-off-by: Gregory Etelson Acked-by: Aman Singh > --- > 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) {