From e7c727c307d74b438c21ec82e50c2371a2da7104 Mon Sep 17 00:00:00 2001 From: David Marchand Date: Thu, 28 Oct 2021 12:14:28 +0200 Subject: [PATCH] net: fix build with sparse on L2TPv2 bitfields An external project that wants to do additional checks on fields endianness can remap rte_beXX types to instrumented types and use sparse. The current code breaks OVS build with sparse: ../../lib/ofp-packet.c: note: in included file (through .../ovs/dpdk-dir/build/include/rte_flow.h, ../../lib/netdev-dpdk.h, ../../lib/dp-packet.h): .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:92:37: error: invalid bitfield specifier for type restricted ovs_be16. .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:93:37: error: invalid bitfield specifier for type restricted ovs_be16. .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:94:40: error: invalid bitfield specifier for type restricted ovs_be16. .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:95:37: error: invalid bitfield specifier for type restricted ovs_be16. .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:96:40: error: invalid bitfield specifier for type restricted ovs_be16. .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:97:37: error: invalid bitfield specifier for type restricted ovs_be16. .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:98:37: error: invalid bitfield specifier for type restricted ovs_be16. .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:99:40: error: invalid bitfield specifier for type restricted ovs_be16. .../ovs/dpdk-dir/build/include/rte_l2tpv2.h:100:39: error: invalid bitfield specifier for type restricted ovs_be16. make[3]: *** [lib/ofp-packet.lo] Error 1 Use simple uint16_t types for bitfields in L2TPv2 struct. Fixes: 3a929df1f286 ("ethdev: support L2TPv2 and PPP procotol") Signed-off-by: David Marchand Reviewed-by: Ferruh Yigit --- lib/net/rte_l2tpv2.h | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/net/rte_l2tpv2.h b/lib/net/rte_l2tpv2.h index 670fe5470e..b90e36cf12 100644 --- a/lib/net/rte_l2tpv2.h +++ b/lib/net/rte_l2tpv2.h @@ -89,25 +89,25 @@ struct rte_l2tpv2_common_hdr { __extension__ struct { #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN - rte_be16_t t:1; /**< message Type */ - rte_be16_t l:1; /**< length option bit */ - rte_be16_t res1:2; /**< reserved */ - rte_be16_t s:1; /**< ns/nr option bit */ - rte_be16_t res2:1; /**< reserved */ - rte_be16_t o:1; /**< offset option bit */ - rte_be16_t p:1; /**< priority option bit */ - rte_be16_t res3:4; /**< reserved */ - rte_be16_t ver:4; /**< protocol version */ + 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 - rte_be16_t ver:4; /**< protocol version */ - rte_be16_t res3:4; /**< reserved */ - rte_be16_t p:1; /**< priority option bit */ - rte_be16_t o:1; /**< offset option bit */ - rte_be16_t res2:1; /**< reserved */ - rte_be16_t s:1; /**< ns/nr option bit */ - rte_be16_t res1:2; /**< reserved */ - rte_be16_t l:1; /**< length option bit */ - rte_be16_t t:1; /**< message Type */ + uint16_t ver:4; /**< protocol version */ + uint16_t res3:4; /**< reserved */ + uint16_t p:1; /**< priority option bit */ + uint16_t o:1; /**< offset option bit */ + uint16_t res2:1; /**< reserved */ + uint16_t s:1; /**< ns/nr option bit */ + uint16_t res1:2; /**< reserved */ + uint16_t l:1; /**< length option bit */ + uint16_t t:1; /**< message Type */ #endif }; }; -- 2.39.5