On 1/30/2022 9:17 AM, Ori Kam wrote:

-----Original Message-----
From: Jie Wang <jie1x.w...@intel.com>
Sent: Saturday, January 29, 2022 8:25 AM
To: dev@dpdk.org
Cc: stevex.y...@intel.com; Ori Kam <or...@nvidia.com>; 
aman.deep.si...@intel.com;
ferruh.yi...@intel.com; NBU-Contact-Thomas Monjalon (EXTERNAL) 
<tho...@monjalon.net>;
andrew.rybche...@oktetlabs.ru; jingjing...@intel.com; beilei.x...@intel.com;
qi.z.zh...@intel.com; olivier.m...@6wind.com; Jie Wang <jie1x.w...@intel.com>; 
sta...@dpdk.org
Subject: [PATCH v3 2/6] net: fix L2TPv2 common header

The fields of L2TPv2 common header were reversed in big endian and
little endian.

This patch fixes this error to ensure L2TPv2 can be parsed correctly.

Fixes: 3a929df1f286 ("ethdev: support L2TPv2 and PPP procotol")
Cc: sta...@dpdk.org

Signed-off-by: Jie Wang <jie1x.w...@intel.com>
---
  lib/net/rte_l2tpv2.h | 20 ++++++++++----------
  1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/lib/net/rte_l2tpv2.h b/lib/net/rte_l2tpv2.h
index 938a993b48..1f3ad3f03c 100644
--- a/lib/net/rte_l2tpv2.h
+++ b/lib/net/rte_l2tpv2.h
@@ -89,16 +89,6 @@ struct rte_l2tpv2_common_hdr {
                __extension__
                struct {
  #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
-                       uint16_t t:1;           /**< message Type */
-                       uint16_t l:1;           /**< length option bit */
-                       uint16_t res1:2;        /**< reserved */
-                       uint16_t s:1;           /**< ns/nr option bit */
-                       uint16_t res2:1;        /**< reserved */
-                       uint16_t o:1;           /**< offset option bit */
-                       uint16_t p:1;           /**< priority option bit */
-                       uint16_t res3:4;        /**< reserved */
-                       uint16_t ver:4;         /**< protocol version */
-#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
                        uint16_t ver:4;         /**< protocol version */
                        uint16_t res3:4;        /**< reserved */
                        uint16_t p:1;           /**< priority option bit */
@@ -108,6 +98,16 @@ struct rte_l2tpv2_common_hdr {
                        uint16_t res1:2;        /**< reserved */
                        uint16_t l:1;           /**< length option bit */
                        uint16_t t:1;           /**< message Type */
+#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
+                       uint16_t t:1;           /**< message Type */
+                       uint16_t l:1;           /**< length option bit */
+                       uint16_t res1:2;        /**< reserved */
+                       uint16_t s:1;           /**< ns/nr option bit */
+                       uint16_t res2:1;        /**< reserved */
+                       uint16_t o:1;           /**< offset option bit */
+                       uint16_t p:1;           /**< priority option bit */
+                       uint16_t res3:4;        /**< reserved */
+                       uint16_t ver:4;         /**< protocol version */
  #endif
                };
        };
--
2.25.1
Acked-by: Ori Kam <or...@nvidia.com>

Acked-by: Ferruh Yigit <ferruh.yi...@intel.com>

What do you think putting the link of the related RFC in the commit log
for reference: https://datatracker.ietf.org/doc/html/rfc2661#section-3.1

Reply via email to