[1/5] net/mlx5: add warning message for Direct Verbs flow

Message ID 20181017020739.11203-1-yskoh@mellanox.com (mailing list archive)
State Superseded, archived
Delegated to: Shahaf Shuler
Headers
Series [1/5] net/mlx5: add warning message for Direct Verbs flow |

Checks

Context Check Description
ci/Intel-compilation success Compilation OK

Commit Message

Yongseok Koh Oct. 17, 2018, 2:07 a.m. UTC
  In case that the library doesn't support DV flow, if enabled by
'dv_flow_en=1', print out a warning message and disable it.

Fixes: 51e72d386c99 ("net/mlx5: add runtime parameter to enable Direct Verbs")
Cc: orika@mellanox.com

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
---
 drivers/net/mlx5/mlx5.c      |  6 ++++++
 drivers/net/mlx5/mlx5_flow.c | 20 +++++++-------------
 2 files changed, 13 insertions(+), 13 deletions(-)
  

Comments

Ori Kam Oct. 17, 2018, 5:11 a.m. UTC | #1
> -----Original Message-----
> From: Yongseok Koh
> Sent: Wednesday, October 17, 2018 5:08 AM
> To: Shahaf Shuler <shahafs@mellanox.com>
> Cc: dev@dpdk.org; Yongseok Koh <yskoh@mellanox.com>; Ori Kam
> <orika@mellanox.com>
> Subject: [PATCH 1/5] net/mlx5: add warning message for Direct Verbs flow
> 
> In case that the library doesn't support DV flow, if enabled by
> 'dv_flow_en=1', print out a warning message and disable it.
> 
> Fixes: 51e72d386c99 ("net/mlx5: add runtime parameter to enable Direct
> Verbs")
> Cc: orika@mellanox.com
> 
> Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
> Acked-by: Ori Kam <orika@mellanox.com>
> ---
>  drivers/net/mlx5/mlx5.c      |  6 ++++++
>  drivers/net/mlx5/mlx5_flow.c | 20 +++++++-------------
>  2 files changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
> index 795a219771..70b8626126 100644
> --- a/drivers/net/mlx5/mlx5.c
> +++ b/drivers/net/mlx5/mlx5.c
> @@ -1016,6 +1016,12 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
>  		cs_desc.counter_type, cs_desc.num_of_cs,
>  		cs_desc.attributes);
>  #endif
> +#ifndef HAVE_IBV_FLOW_DV_SUPPORT
> +	if (config.dv_flow_en) {
> +		DRV_LOG(WARNING, "DV flow is not supported");
> +		config.dv_flow_en = 0;
> +	}
> +#endif
>  	config.ind_table_max_size =
>  		attr.rss_caps.max_rwq_indirection_table_size;
>  	/*
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index bd70fce248..04e287f160 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -1673,25 +1673,19 @@ const struct mlx5_flow_driver_ops
> mlx5_flow_null_drv_ops = {
>   *   Pointer to the flow attributes.
>   *
>   * @return
> - *   flow driver type if supported, MLX5_FLOW_TYPE_MAX otherwise.
> + *   flow driver type, MLX5_FLOW_TYPE_MAX otherwise.
>   */
>  static enum mlx5_flow_drv_type
> -flow_get_drv_type(struct rte_eth_dev *dev __rte_unused,
> -		  const struct rte_flow_attr *attr)
> +flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr)
>  {
> -	struct priv *priv __rte_unused = dev->data->dev_private;
> +	struct priv *priv = dev->data->dev_private;
>  	enum mlx5_flow_drv_type type = MLX5_FLOW_TYPE_MAX;
> 
> -	if (attr->transfer) {
> +	if (attr->transfer)
>  		type = MLX5_FLOW_TYPE_TCF;
> -	} else {
> -#ifdef HAVE_IBV_FLOW_DV_SUPPORT
> -		type = priv->config.dv_flow_en ?  MLX5_FLOW_TYPE_DV :
> -						  MLX5_FLOW_TYPE_VERBS;
> -#else
> -		type = MLX5_FLOW_TYPE_VERBS;
> -#endif
> -	}
> +	else
> +		type = priv->config.dv_flow_en ? MLX5_FLOW_TYPE_DV :
> +						 MLX5_FLOW_TYPE_VERBS;
>  	return type;
>  }
> 
> --
> 2.11.0

Acked-by: Ori Kam <orika@mellanox.com>

Thanks,
Ori
  

Patch

diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 795a219771..70b8626126 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -1016,6 +1016,12 @@  mlx5_dev_spawn(struct rte_device *dpdk_dev,
 		cs_desc.counter_type, cs_desc.num_of_cs,
 		cs_desc.attributes);
 #endif
+#ifndef HAVE_IBV_FLOW_DV_SUPPORT
+	if (config.dv_flow_en) {
+		DRV_LOG(WARNING, "DV flow is not supported");
+		config.dv_flow_en = 0;
+	}
+#endif
 	config.ind_table_max_size =
 		attr.rss_caps.max_rwq_indirection_table_size;
 	/*
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index bd70fce248..04e287f160 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1673,25 +1673,19 @@  const struct mlx5_flow_driver_ops mlx5_flow_null_drv_ops = {
  *   Pointer to the flow attributes.
  *
  * @return
- *   flow driver type if supported, MLX5_FLOW_TYPE_MAX otherwise.
+ *   flow driver type, MLX5_FLOW_TYPE_MAX otherwise.
  */
 static enum mlx5_flow_drv_type
-flow_get_drv_type(struct rte_eth_dev *dev __rte_unused,
-		  const struct rte_flow_attr *attr)
+flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr)
 {
-	struct priv *priv __rte_unused = dev->data->dev_private;
+	struct priv *priv = dev->data->dev_private;
 	enum mlx5_flow_drv_type type = MLX5_FLOW_TYPE_MAX;
 
-	if (attr->transfer) {
+	if (attr->transfer)
 		type = MLX5_FLOW_TYPE_TCF;
-	} else {
-#ifdef HAVE_IBV_FLOW_DV_SUPPORT
-		type = priv->config.dv_flow_en ?  MLX5_FLOW_TYPE_DV :
-						  MLX5_FLOW_TYPE_VERBS;
-#else
-		type = MLX5_FLOW_TYPE_VERBS;
-#endif
-	}
+	else
+		type = priv->config.dv_flow_en ? MLX5_FLOW_TYPE_DV :
+						 MLX5_FLOW_TYPE_VERBS;
 	return type;
 }