[dpdk-dev] [PATCH v2 2/5] lpm: fix compilation on ARM BE

Bruce Richardson bruce.richardson at intel.com
Wed Dec 13 14:22:53 CET 2017


On Wed, Dec 13, 2017 at 06:22:55PM +0530, Hemant Agrawal wrote:
> Compiling on ARM BE using Linaro toolchain caused following
> error/warnings.
> 
> rte_lpm.c: In function ‘add_depth_big_v20’:
> rte_lpm.c:911:4: error: braces around scalar initializer [-Werror]
>     { .group_idx = (uint8_t)tbl8_group_index, },
>     ^
> rte_lpm.c:911:4: note: (near initialization for
> 	‘new_tbl24_entry.depth’)
> rte_lpm.c:911:6:error: field name not in record or union initializer
>     { .group_idx = (uint8_t)tbl8_group_index, },
>       ^
> rte_lpm.c:911:6: note: (near initialization for
> 	‘new_tbl24_entry.depth’)
> rte_lpm.c:914:13: error: initialized field overwritten
> 	[-Werror=override-init]
>     .depth = 0,
> 
> Fixes: dc81ebbacaeb ("lpm: extend IPv4 next hop field")
> Cc: Michal Kobylinski <michalx.kobylinski at intel.com>
> Cc: stable at dpdk.org
> 
> Signed-off-by: Jun Yang <jun.yang at nxp.com>
> Signed-off-by: Hemant Agrawal <hemant.agrawal at nxp.com>
> Acked-by: Bruce Richardson <bruce.richardson at intel.com>
> ---
> v2: added endianess check in the assignments
> 
>  lib/librte_lpm/rte_lpm.c | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
> index e1f1fad..a47c04f 100644
> --- a/lib/librte_lpm/rte_lpm.c
> +++ b/lib/librte_lpm/rte_lpm.c
> @@ -912,10 +912,17 @@ add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
>  		 */
>  
>  		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
> +#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
>  			{ .group_idx = (uint8_t)tbl8_group_index, },
>  			.valid = VALID,
>  			.valid_group = 1,
>  			.depth = 0,
> +#else
> +			.depth = 0,
> +			.valid_group = 1,
> +			.valid = VALID,
> +			{ .group_idx = (uint8_t)tbl8_group_index, },
> +#endif
>  		};
>  
I'm not I'd agree with this as a "better" fix. Were the issues with the
previous version of just removing the braces. All the ifdefs are rather
ugly.


More information about the dev mailing list