net: fix GTP PSC headers
PATCH 1/2 net: fix GTP PSC headers
Fix bitmap fields order in little endian section of GTP PSC headers.
--- lib/net/rte_gtp.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)
lib/net/rte_gtp.h +9 -8
@@ -75,11 +75,11 @@ struct rte_gtp_psc_generic_hdr { uint8_t spare:2; /**< type specific spare bits */ uint8_t qfi:6; /**< Qos Flow Identifier */#else - uint8_t qfi:6; /**< Qos Flow Identifier */ - uint8_t spare:2; /**< type specific spare bits */ uint8_t pad:3; /**< type specific pad bits */ uint8_t qmp:1; /**< Qos Monitoring Packet */ uint8_t type:4; /**< PDU type */ + uint8_t qfi:6; /**< Qos Flow Identifier */ + uint8_t spare:2; /**< type specific spare bits */#endif uint8_t data[0 ];/**< variable length data fields */ } __rte_packed;
@@ -100,12 +100,13 @@ struct rte_gtp_psc_type0_hdr { uint8_t rqi:1; /**< Reflective Qos Indicator */ uint8_t qfi:6; /**< Qos Flow Identifier */#else - uint8_t qfi:6; /**< Qos Flow Identifier */ - uint8_t rqi:1; /**< Reflective Qos Indicator */ - uint8_t ppp:1; /**< Paging policy presence */ uint8_t spare_dl1:2; /**< spare down link bits */ uint8_t snp:1; /**< Sequence number presence */ + uint8_t qmp:1; /**< Qos Monitoring Packet */ uint8_t type:4; /**< PDU type */ + uint8_t qfi:6; /**< Qos Flow Identifier */ + uint8_t rqi:1; /**< Reflective Qos Indicator */ + uint8_t ppp:1; /**< Paging policy presence */#endif uint8_t data[0 ];/**< variable length data fields */ } __rte_packed;
@@ -127,14 +128,14 @@ struct rte_gtp_psc_type1_hdr { uint8_t spare_ul2:1; /**< spare up link bits */ uint8_t qfi:6; /**< Qos Flow Identifier */#else - uint8_t qfi:6; /**< Qos Flow Identifier */ - uint8_t spare_ul2:1; /**< spare up link bits */ - uint8_t n_delay_ind:1; /**< N3/N9 delay result presence */ uint8_t snp:1; /**< Sequence number presence ul */ uint8_t ul_delay_ind:1; /**< ul delay result presence */ uint8_t dl_delay_ind:1; /**< dl delay result presence */ uint8_t qmp:1; /**< Qos Monitoring Packet */ uint8_t type:4; /**< PDU type */ + uint8_t qfi:6; /**< Qos Flow Identifier */ + uint8_t spare_ul2:1; /**< spare up link bits */ + uint8_t n_delay_ind:1; /**< N3/N9 delay result presence */#endif uint8_t data[0 ];/**< variable length data fields */ } __rte_packed;
Signature · 1 line
2.34.1
PATCH 2/2 app/testpmd: fix GTP PSC raw processing
Use generic GTP PSC header definition in raw handler.
--- app/test-pmd/cmdline_flow.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-)
app/test-pmd/cmdline_flow.c +8 -12
@@ -11029,19 +11029,15 @@ cmd_set_raw_parsed(const struct buffer *in) }else {const struct rte_flow_item_gtp_psc *opt = item->spec; -struct { -uint8_t len; -uint8_t pdu_type:4 ; -uint8_t qfi:6 ; -uint8_t next; - } psc; - psc.len =sizeof (psc) /4 ; - psc.pdu_type = opt->hdr.type; - psc.qfi = opt->hdr.qfi; - psc.next =0 ; - *total_size +=sizeof (psc); +struct rte_gtp_psc_generic_hdr hdr; +size_t hdr_size = +RTE_ALIGN (sizeof (hdr),sizeof (int32_t )); + +rte_memcpy (&hdr, &opt->hdr,sizeof (hdr)); + hdr.ext_hdr_len =1 ; + *total_size += hdr_size;rte_memcpy (data_tail - (*total_size), - &psc,sizeof (psc)); + &hdr, hdr_size); gtp_psc = i; size =0 ; }
Signature · 1 line
2.34.1
PATCH v2 1/2 net: fix GTP PSC headers
In reply to Gregory EtelsonFix bitmap fields order in little endian section of GTP PSC headers.
---
v2:
--- lib/net/rte_gtp.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)
lib/net/rte_gtp.h +9 -8
@@ -75,11 +75,11 @@ struct rte_gtp_psc_generic_hdr { uint8_t spare:2; /**< type specific spare bits */ uint8_t qfi:6; /**< Qos Flow Identifier */#else - uint8_t qfi:6; /**< Qos Flow Identifier */ - uint8_t spare:2; /**< type specific spare bits */ uint8_t pad:3; /**< type specific pad bits */ uint8_t qmp:1; /**< Qos Monitoring Packet */ uint8_t type:4; /**< PDU type */ + uint8_t qfi:6; /**< Qos Flow Identifier */ + uint8_t spare:2; /**< type specific spare bits */#endif uint8_t data[0 ];/**< variable length data fields */ } __rte_packed;
@@ -100,12 +100,13 @@ struct rte_gtp_psc_type0_hdr { uint8_t rqi:1; /**< Reflective Qos Indicator */ uint8_t qfi:6; /**< Qos Flow Identifier */#else - uint8_t qfi:6; /**< Qos Flow Identifier */ - uint8_t rqi:1; /**< Reflective Qos Indicator */ - uint8_t ppp:1; /**< Paging policy presence */ uint8_t spare_dl1:2; /**< spare down link bits */ uint8_t snp:1; /**< Sequence number presence */ + uint8_t qmp:1; /**< Qos Monitoring Packet */ uint8_t type:4; /**< PDU type */ + uint8_t qfi:6; /**< Qos Flow Identifier */ + uint8_t rqi:1; /**< Reflective Qos Indicator */ + uint8_t ppp:1; /**< Paging policy presence */#endif uint8_t data[0 ];/**< variable length data fields */ } __rte_packed;
@@ -127,14 +128,14 @@ struct rte_gtp_psc_type1_hdr { uint8_t spare_ul2:1; /**< spare up link bits */ uint8_t qfi:6; /**< Qos Flow Identifier */#else - uint8_t qfi:6; /**< Qos Flow Identifier */ - uint8_t spare_ul2:1; /**< spare up link bits */ - uint8_t n_delay_ind:1; /**< N3/N9 delay result presence */ uint8_t snp:1; /**< Sequence number presence ul */ uint8_t ul_delay_ind:1; /**< ul delay result presence */ uint8_t dl_delay_ind:1; /**< dl delay result presence */ uint8_t qmp:1; /**< Qos Monitoring Packet */ uint8_t type:4; /**< PDU type */ + uint8_t qfi:6; /**< Qos Flow Identifier */ + uint8_t spare_ul2:1; /**< spare up link bits */ + uint8_t n_delay_ind:1; /**< N3/N9 delay result presence */#endif uint8_t data[0 ];/**< variable length data fields */ } __rte_packed;
Signature · 1 line
2.34.1
PATCH v2 2/2 app/testpmd: fix GTP PSC raw processing
Use generic GTP PSC header definition in raw handler.
---
v2: fix raw GTP PSC object creation.
--- app/test-pmd/cmdline_flow.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)
app/test-pmd/cmdline_flow.c +7 -13
@@ -11029,19 +11029,13 @@ cmd_set_raw_parsed(const struct buffer *in) }else {const struct rte_flow_item_gtp_psc *opt = item->spec; -struct { -uint8_t len; -uint8_t pdu_type:4 ; -uint8_t qfi:6 ; -uint8_t next; - } psc; - psc.len =sizeof (psc) /4 ; - psc.pdu_type = opt->hdr.type; - psc.qfi = opt->hdr.qfi; - psc.next =0 ; - *total_size +=sizeof (psc); -rte_memcpy (data_tail - (*total_size), - &psc,sizeof (psc)); +struct rte_gtp_psc_generic_hdr *hdr; + + *total_size +=RTE_ALIGN (sizeof (hdr), +sizeof (int32_t )); + hdr = (typeof (hdr))(data_tail - (*total_size)); + *hdr = opt->hdr; + hdr->ext_hdr_len =1 ; gtp_psc = i; size =0 ; }
Signature · 1 line
2.34.1
Re: [PATCH v2 2/2] app/testpmd: fix GTP PSC raw processing
Quoted 7 lines · Gregory Etelson
Use generic GTP PSC header definition in raw handler.
Fixes 9213c50e36fa ("app/testpmd: support GTP PSC option in raw sets")Signed-off-by Gregory Etelson <[email protected]>Reviewed-by Viacheslav Ovsiienko <[email protected]>
Quoted 7 lines · Gregory Etelson
Fix bitmap fields order in little endian section of GTP PSC headers.
Fixes e8ca1479cdc4 ("net: add extension header for GTP PSC")Signed-off-by Gregory Etelson <[email protected]>Reviewed-by Viacheslav Ovsiienko <[email protected]>
Andrew Rybchenko
Reviewed-byQuoted 11 lines · Aman Deep
Quoted 7 lines · Gregory Etelson
Fix bitmap fields order in little endian section of GTP PSC headers.
Fixes e8ca1479cdc4 ("net: add extension header for GTP PSC")Signed-off-by Gregory Etelson <[email protected]>Reviewed-by Viacheslav Ovsiienko <[email protected]>Acked-by Aman Singh<[email protected]>
Quoted 6 lines · Andrew Rybchenko
Quoted 5 lines · Aman Deep
Quoted 4 lines · Gregory Etelson
Fix bitmap fields order in little endian section of GTP PSC headers.
Fixes e8ca1479cdc4 ("net: add extension header for GTP PSC")
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
Signed-off-by Gregory Etelson <[email protected]>Reviewed-by Viacheslav Ovsiienko <[email protected]>Acked-by Aman Singh<[email protected]>Reviewed-by Andrew Rybchenko <[email protected]>
Series applied to dpdk-next-net/main, thanks.