> -----Original Message-----
> From: Olivier Matz <[email protected]>
> Sent: Wednesday, October 23, 2019 5:09 PM
> To: Raslan Darawsheh <[email protected]>
> Cc: Ferruh Yigit <[email protected]>; Kiran Kumar Kokkilagadda
> <[email protected]>; Adrien Mazarguil
> <[email protected]>; Wenzhuo Lu <[email protected]>;
> Jingjing Wu <[email protected]>; Bernard Iremonger
> <[email protected]>; John McNamara
> <[email protected]>; Marko Kovacevic <[email protected]>;
> Thomas Monjalon <[email protected]>; Andrew Rybchenko
> <[email protected]>; [email protected]; [email protected]
> Subject: [EXT] Re: [dpdk-dev] [PATCH v10] ethdev: add HIGIG2 key field to flow
> API
>
> External Email
>
> ----------------------------------------------------------------------
> Hi,
>
>
>
> On Wed, Oct 23, 2019 at 10:50:52AM +0000, Raslan Darawsheh wrote:
>
> > Hi,
>
> >
>
> > This patch broke the compilation of MLX5 PMD in debug mode:
>
> >
>
> > from /root/dpdk/x86_64-native-linux-
> gcc/include/rte_ethdev_driver.h:18,
>
> > from /root/dpdk/drivers/net/mlx5/mlx5_mp.c:11:
>
> > /root/dpdk/x86_64-native-linux-gcc/include/rte_higig.h:112:2: error: type of
> bit-field 'opcode' is a GCC extension [-Werror=pedantic]
>
> > uint16_t opcode:3;
>
> > ^
>
> > /root/dpdk/x86_64-native-linux-gcc/include/rte_higig.h:113:2: error: type of
> bit-field 'resv1' is a GCC extension [-Werror=pedantic]
>
> > uint16_t resv1:2;
>
> > ^
>
> > /root/dpdk/x86_64-native-linux-gcc/include/rte_higig.h:114:2: error: type of
> bit-field 'src_t' is a GCC extension [-Werror=pedantic]
>
> > uint16_t src_t:1;
>
> > ^
>
> > /root/dpdk/x86_64-native-linux-gcc/include/rte_higig.h:115:2: error: type of
> bit-field 'pfm' is a GCC extension [-Werror=pedantic]
>
> > uint16_t pfm:2;
>
> > ^
>
> > /root/dpdk/x86_64-native-linux-gcc/include/rte_higig.h:116:2: error: type of
> bit-field 'resv2' is a GCC extension [-Werror=pedantic]
>
> > uint16_t resv2:5;
>
> > ^
>
> > /root/dpdk/x86_64-native-linux-gcc/include/rte_higig.h:117:2: error: type of
> bit-field 'hdr_ext_len' is a GCC extension [-Werror=pedantic]
>
> > uint16_t hdr_ext_len:3;
>
> >
>
> > and this is with gcc 4.8.5
>
>
>
> From https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__stackoverflow.com_questions_10906238_warning-2Dwhen-2Dusing-
> 2Dbitfield-2Dwith-2Dunsigned-
> 2Dchar&d=DwIBAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=owEKckYY4FTmil1Z6oBUR
> wkTThyuRbLAY9LdfiaT6HA&m=GZ-
> 6cngPycaUlGJT20VEOf9oTcp5PMwk7j1JV1vAQfs&s=SCg5yVPS4zZa8GSn9bl_eUtI
> vBmoDzi35PspWUttIUY&e=
>
> it seems that it is allowed in c99, so I guess it's a gcc 4.8 bug.
>
>
>
> Adding __extension__ above the struct solves the warnings, I suggest to
>
> add it.
/**
*
* higig2 ppt type1 header.
*/
RTE_STD_C11
struct rte_higig2_ppt_type1 {
uint16_t classification;
uint16_t resv;
uint16_t vid;
#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
uint16_t opcode:3;
uint16_t resv1:2;
uint16_t src_t:1;
uint16_t pfm:2;
uint16_t resv2:5;
uint16_t hdr_ext_len:3;
#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN
uint16_t pfm:2;
uint16_t src_t:1;
uint16_t resv1:2;
uint16_t opcode:3;
uint16_t hdr_ext_len:3;
uint16_t resv2:5;
#endif
};
I have already added it. RTE_STD_C11 , this is a macro for __extension__.
/** C extension macro for environments lacking C11 features. */
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L
#define RTE_STD_C11 __extension__
#else
#define RTE_STD_C11
#endif
>
>
>
>
>
> Olivier