Fix bitmap fields order in little endian section of GTP PSC headers. Fixes: e8ca1479cdc4 ("net: add extension header for GTP PSC") cc: stable@dpdk.org Signed-off-by: Gregory Etelson <getelson@nvidia.com> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- lib/net/rte_gtp.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/net/rte_gtp.h b/lib/net/rte_gtp.h index dca940c2c5..9849872366 100644 --- a/lib/net/rte_gtp.h +++ b/lib/net/rte_gtp.h @@ -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; -- 2.34.1
Use generic GTP PSC header definition in raw handler. Fixes: 9213c50e36fa ("app/testpmd: support GTP PSC option in raw sets") cc: stable@dpdk.org Signed-off-by: Gregory Etelson <getelson@nvidia.com> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- app/test-pmd/cmdline_flow.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index cfd55c598d..f6b39f6332 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -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; } -- 2.34.1
Fix bitmap fields order in little endian section of GTP PSC headers. Fixes: e8ca1479cdc4 ("net: add extension header for GTP PSC") cc: stable@dpdk.org Signed-off-by: Gregory Etelson <getelson@nvidia.com> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- v2: --- lib/net/rte_gtp.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/net/rte_gtp.h b/lib/net/rte_gtp.h index dca940c2c5..9849872366 100644 --- a/lib/net/rte_gtp.h +++ b/lib/net/rte_gtp.h @@ -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; -- 2.34.1
Use generic GTP PSC header definition in raw handler. Fixes: 9213c50e36fa ("app/testpmd: support GTP PSC option in raw sets") cc: stable@dpdk.org Signed-off-by: Gregory Etelson <getelson@nvidia.com> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- v2: fix raw GTP PSC object creation. --- app/test-pmd/cmdline_flow.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index cfd55c598d..6cb1173385 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -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; } -- 2.34.1
On 6/16/2022 11:31 PM, Gregory Etelson wrote:
> Use generic GTP PSC header definition in raw handler.
>
> Fixes: 9213c50e36fa ("app/testpmd: support GTP PSC option in raw sets")
>
> cc: stable@dpdk.org
> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Aman Singh<aman.deep.singh@intel.com>
On 6/16/2022 11:31 PM, Gregory Etelson wrote:
> Fix bitmap fields order in little endian section of GTP PSC headers.
>
> Fixes: e8ca1479cdc4 ("net: add extension header for GTP PSC")
>
> cc: stable@dpdk.org
> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Aman Singh<aman.deep.singh@intel.com>
On 6/21/22 16:45, Singh, Aman Deep wrote:
> On 6/16/2022 11:31 PM, Gregory Etelson wrote:
>> Fix bitmap fields order in little endian section of GTP PSC headers.
>>
>> Fixes: e8ca1479cdc4 ("net: add extension header for GTP PSC")
>>
>> cc: stable@dpdk.org
>> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
>> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
>
> Acked-by: Aman Singh<aman.deep.singh@intel.com>
>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
On 6/23/22 14:38, Andrew Rybchenko wrote:
> On 6/21/22 16:45, Singh, Aman Deep wrote:
>> On 6/16/2022 11:31 PM, Gregory Etelson wrote:
>>> Fix bitmap fields order in little endian section of GTP PSC headers.
>>>
>>> Fixes: e8ca1479cdc4 ("net: add extension header for GTP PSC")
>>>
>>> cc: stable@dpdk.org
>>> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
>>> Reviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
>>
>> Acked-by: Aman Singh<aman.deep.singh@intel.com>
>>
>
> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Series applied to dpdk-next-net/main, thanks.