From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yongseok Koh Subject: Re: [PATCH] net/mlx5: fix generic tunnel offloading compatibility check Date: Wed, 23 May 2018 15:45:25 -0700 Message-ID: <20180523224524.GB13339@yongseok-MBP.local> References: <20180523115937.32201-1-shahafs@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: nelio.laranjeiro@6wind.com, adrien.mazarguil@6wind.com, dev@dpdk.org, xuemingl@mellanox.com To: Shahaf Shuler Return-path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0072.outbound.protection.outlook.com [104.47.1.72]) by dpdk.org (Postfix) with ESMTP id 9A2FB1D7 for ; Thu, 24 May 2018 00:45:44 +0200 (CEST) Content-Disposition: inline In-Reply-To: <20180523115937.32201-1-shahafs@mellanox.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Wed, May 23, 2018 at 02:59:37PM +0300, Shahaf Shuler wrote: > On some distros, the inbox rdma-core tree can contain the Software > Parser enum while the remaining structs still missing. > > Fixes: 5f8ba81c4228 ("net/mlx5: support generic tunnel offloading") > Cc: xuemingl@mellanox.com > > Signed-off-by: Shahaf Shuler > --- > drivers/net/mlx5/Makefile | 7 ++++++- > drivers/net/mlx5/mlx5.c | 4 ++-- > 2 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile > index 293144e8a0..b09dd785ad 100644 > --- a/drivers/net/mlx5/Makefile > +++ b/drivers/net/mlx5/Makefile > @@ -118,11 +118,16 @@ mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh > enum IBV_WQ_FLAG_RX_END_PADDING \ > $(AUTOCONF_OUTPUT) > $Q sh -- '$<' '$@' \ > - HAVE_IBV_MLX5_MOD_SWP \ > + HAVE_IBV_MLX5_MOD_SWP_MASK \ > infiniband/mlx5dv.h \ > enum MLX5DV_CONTEXT_MASK_SWP \ > $(AUTOCONF_OUTPUT) > $Q sh -- '$<' '$@' \ > + HAVE_IBV_MLX5_MOD_SWP_CAPS \ > + infiniband/mlx5dv.h \ > + type 'struct mlx5dv_sw_parsing_caps' \ > + $(AUTOCONF_OUTPUT) > + $Q sh -- '$<' '$@' \ > HAVE_IBV_MLX5_MOD_MPW \ > infiniband/mlx5dv.h \ > enum MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED \ > diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c > index 006665600a..91dafe93ab 100644 > --- a/drivers/net/mlx5/mlx5.c > +++ b/drivers/net/mlx5/mlx5.c > @@ -775,7 +775,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, > } > ibv_dev = list[i]; > DRV_LOG(DEBUG, "device opened"); > -#ifdef HAVE_IBV_MLX5_MOD_SWP > +#ifdef HAVE_IBV_MLX5_MOD_SWP_MASK > attrs_out.comp_mask |= MLX5DV_CONTEXT_MASK_SWP; > #endif > /* > @@ -801,7 +801,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, > DRV_LOG(DEBUG, "MPW isn't supported"); > mps = MLX5_MPW_DISABLED; > } > -#ifdef HAVE_IBV_MLX5_MOD_SWP > +#if defined(HAVE_IBV_MLX5_MOD_SWP_MASK) && defined(HAVE_IBV_MLX5_MOD_SWP_CAPS) > if (attrs_out.comp_mask & MLX5DV_CONTEXT_MASK_SWP) > swp = attrs_out.sw_parsing_caps.sw_parsing_offloads; > DRV_LOG(DEBUG, "SWP support: %u", swp); You mean, even if the mask is defined, the capability struct might not be defined, right? If the capability struct is defined, is the mask always defined? I guess so. Then, how about just checking the struct instead of enum in order to define HAVE_IBV_MLX5_MOD_SWP, instead of splitting it into two macros? Thanks, Yongseok