> -----Original Message----- > From: Olivier Matz <olivier.m...@6wind.com> > Sent: Wednesday, October 23, 2019 5:09 PM > To: Raslan Darawsheh <rasl...@mellanox.com> > Cc: Ferruh Yigit <ferruh.yi...@intel.com>; Kiran Kumar Kokkilagadda > <kirankum...@marvell.com>; Adrien Mazarguil > <adrien.mazarg...@6wind.com>; Wenzhuo Lu <wenzhuo...@intel.com>; > Jingjing Wu <jingjing...@intel.com>; Bernard Iremonger > <bernard.iremon...@intel.com>; John McNamara > <john.mcnam...@intel.com>; Marko Kovacevic <marko.kovace...@intel.com>; > Thomas Monjalon <tho...@monjalon.net>; Andrew Rybchenko > <arybche...@solarflare.com>; dev@dpdk.org; ajit.khapa...@broadcom.com > 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