DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] net/iavf: fix virtual channel RSS command error handling
@ 2021-07-21  6:32 Alvin Zhang
  2021-07-25 10:09 ` Zhang, Qi Z
  2021-07-26  9:17 ` [dpdk-dev] [PATCH v2] " Alvin Zhang
  0 siblings, 2 replies; 4+ messages in thread
From: Alvin Zhang @ 2021-07-21  6:32 UTC (permalink / raw)
  To: beilei.xing; +Cc: dev, Alvin Zhang, stable

Kernel PF may not respond to virtual channel commands
VIRTCHNL_OP_GET_RSS_HENA_CAPS and VIRTCHNL_OP_SET_RSS_HENA, which
will cause VF to fail to start.

RSS offload type configuration is not a necessary feature for VF,
so in order to improve VF compatibility, in this patch the PMD will
ignore the error result of above two commands and will print warnings
instead.

Fixes: 5a038d19962d ("net/iavf: fix RSS configuration on i40e VF")
Cc: stable@dpdk.org

Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
---
 drivers/net/iavf/iavf_ethdev.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 41382c6..162f55d 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -259,7 +259,7 @@ struct rte_iavf_xstats_name_off {
 	return err;
 }
 
-static int
+static void
 iavf_config_rss_hf(struct iavf_adapter *adapter, uint64_t rss_hf)
 {
 	static const uint64_t map_hena_rss[] = {
@@ -319,8 +319,12 @@ struct rte_iavf_xstats_name_off {
 	int ret;
 
 	ret = iavf_get_hena_caps(adapter, &caps);
-	if (ret)
-		return ret;
+	if (ret) {
+		PMD_DRV_LOG(WARNING,
+			    "fail to get supported RSS caps, lack PF support");
+		return;
+	}
+
 	/**
 	 * ETH_RSS_IPV4 and ETH_RSS_IPV6 can be considered as 2
 	 * generalizations of all other IPv4 and IPv6 RSS types.
@@ -343,8 +347,11 @@ struct rte_iavf_xstats_name_off {
 	}
 
 	ret = iavf_set_hena(adapter, hena);
-	if (ret)
-		return ret;
+	if (ret) {
+		PMD_DRV_LOG(WARNING,
+			    "fail to clean existing RSS, lack PF support");
+		return;
+	}
 
 	if (valid_rss_hf & ipv4_rss)
 		valid_rss_hf |= rss_hf & ETH_RSS_IPV4;
@@ -357,7 +364,6 @@ struct rte_iavf_xstats_name_off {
 			    rss_hf & ~valid_rss_hf);
 
 	vf->rss_hf = valid_rss_hf;
-	return 0;
 }
 
 static int
@@ -409,9 +415,7 @@ struct rte_iavf_xstats_name_off {
 			return ret;
 		}
 	} else {
-		ret = iavf_config_rss_hf(adapter, rss_conf->rss_hf);
-		if (ret != -ENOTSUP)
-			return ret;
+		iavf_config_rss_hf(adapter, rss_conf->rss_hf);
 	}
 
 	return 0;
@@ -1400,9 +1404,7 @@ static int iavf_config_rx_queues_irqs(struct rte_eth_dev *dev,
 			return ret;
 		}
 	} else {
-		ret = iavf_config_rss_hf(adapter, rss_conf->rss_hf);
-		if (ret != -ENOTSUP)
-			return ret;
+		iavf_config_rss_hf(adapter, rss_conf->rss_hf);
 	}
 
 	return 0;
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH] net/iavf: fix virtual channel RSS command error handling
  2021-07-21  6:32 [dpdk-dev] [PATCH] net/iavf: fix virtual channel RSS command error handling Alvin Zhang
@ 2021-07-25 10:09 ` Zhang, Qi Z
  2021-07-26  9:17 ` [dpdk-dev] [PATCH v2] " Alvin Zhang
  1 sibling, 0 replies; 4+ messages in thread
From: Zhang, Qi Z @ 2021-07-25 10:09 UTC (permalink / raw)
  To: Zhang, AlvinX, Xing, Beilei; +Cc: dev, Zhang, AlvinX, stable



> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Alvin Zhang
> Sent: Wednesday, July 21, 2021 2:32 PM
> To: Xing, Beilei <beilei.xing@intel.com>
> Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/iavf: fix virtual channel RSS command error
> handling
> 
> Kernel PF may not respond to virtual channel commands
> VIRTCHNL_OP_GET_RSS_HENA_CAPS and VIRTCHNL_OP_SET_RSS_HENA,
> which will cause VF to fail to start.
> 
> RSS offload type configuration is not a necessary feature for VF, so in order to
> improve VF compatibility, in this patch the PMD will ignore the error result of
> above two commands and will print warnings instead.
> 
> Fixes: 5a038d19962d ("net/iavf: fix RSS configuration on i40e VF")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
> ---
>  drivers/net/iavf/iavf_ethdev.c | 26 ++++++++++++++------------
>  1 file changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index
> 41382c6..162f55d 100644
> --- a/drivers/net/iavf/iavf_ethdev.c
> +++ b/drivers/net/iavf/iavf_ethdev.c
> @@ -259,7 +259,7 @@ struct rte_iavf_xstats_name_off {
>  	return err;
>  }
> 
> -static int
> +static void
>  iavf_config_rss_hf(struct iavf_adapter *adapter, uint64_t rss_hf)  {
>  	static const uint64_t map_hena_rss[] = { @@ -319,8 +319,12 @@ struct
> rte_iavf_xstats_name_off {
>  	int ret;
> 
>  	ret = iavf_get_hena_caps(adapter, &caps);
> -	if (ret)
> -		return ret;
> +	if (ret) {
> +		PMD_DRV_LOG(WARNING,
> +			    "fail to get supported RSS caps, lack PF support");

This is misleading, the failure reason is not necessary be "lack PF support', it could be any other reason
So better just print the error code here, or simply ignore if a meaningful failure message will already be printed inside iavf_get_hena_caps.

> +		return;
> +	}
> +
>  	/**
>  	 * ETH_RSS_IPV4 and ETH_RSS_IPV6 can be considered as 2
>  	 * generalizations of all other IPv4 and IPv6 RSS types.
> @@ -343,8 +347,11 @@ struct rte_iavf_xstats_name_off {
>  	}
> 
>  	ret = iavf_set_hena(adapter, hena);
> -	if (ret)
> -		return ret;
> +	if (ret) {
> +		PMD_DRV_LOG(WARNING,
> +			    "fail to clean existing RSS, lack PF support");

Actually this is not the case to "clean" but "overwrite", also the "lack PF support" should be refined base on previous comments.

> +		return;
> +	}
> 
>  	if (valid_rss_hf & ipv4_rss)
>  		valid_rss_hf |= rss_hf & ETH_RSS_IPV4; @@ -357,7 +364,6 @@
> struct rte_iavf_xstats_name_off {
>  			    rss_hf & ~valid_rss_hf);
> 
>  	vf->rss_hf = valid_rss_hf;
> -	return 0;
>  }
> 
>  static int
> @@ -409,9 +415,7 @@ struct rte_iavf_xstats_name_off {
>  			return ret;
>  		}
>  	} else {
> -		ret = iavf_config_rss_hf(adapter, rss_conf->rss_hf);
> -		if (ret != -ENOTSUP)
> -			return ret;
> +		iavf_config_rss_hf(adapter, rss_conf->rss_hf);
>  	}
> 
>  	return 0;
> @@ -1400,9 +1404,7 @@ static int iavf_config_rx_queues_irqs(struct
> rte_eth_dev *dev,
>  			return ret;
>  		}
>  	} else {
> -		ret = iavf_config_rss_hf(adapter, rss_conf->rss_hf);
> -		if (ret != -ENOTSUP)
> -			return ret;
> +		iavf_config_rss_hf(adapter, rss_conf->rss_hf);
>  	}
> 
>  	return 0;
> --
> 1.8.3.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [dpdk-dev] [PATCH v2] net/iavf: fix virtual channel RSS command error handling
  2021-07-21  6:32 [dpdk-dev] [PATCH] net/iavf: fix virtual channel RSS command error handling Alvin Zhang
  2021-07-25 10:09 ` Zhang, Qi Z
@ 2021-07-26  9:17 ` Alvin Zhang
  2021-07-27 11:54   ` Zhang, Qi Z
  1 sibling, 1 reply; 4+ messages in thread
From: Alvin Zhang @ 2021-07-26  9:17 UTC (permalink / raw)
  To: beilei.xing, qi.z.zhang; +Cc: dev, Alvin Zhang, stable

Kernel PF may not respond to virtual channel commands
VIRTCHNL_OP_GET_RSS_HENA_CAPS and VIRTCHNL_OP_SET_RSS_HENA, which
will cause VF to fail to start.

RSS offload type configuration is not a necessary feature for VF,
so in order to improve VF compatibility, in this patch the PMD will
ignore the error result of above two commands and will print warnings
instead.

Fixes: 5a038d19962d ("net/iavf: fix RSS configuration on i40e VF")
Cc: stable@dpdk.org

Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
---
 drivers/net/iavf/iavf_ethdev.c | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index 41382c6..574cfe0 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -259,7 +259,7 @@ struct rte_iavf_xstats_name_off {
 	return err;
 }
 
-static int
+static void
 iavf_config_rss_hf(struct iavf_adapter *adapter, uint64_t rss_hf)
 {
 	static const uint64_t map_hena_rss[] = {
@@ -319,8 +319,16 @@ struct rte_iavf_xstats_name_off {
 	int ret;
 
 	ret = iavf_get_hena_caps(adapter, &caps);
-	if (ret)
-		return ret;
+	if (ret) {
+		/**
+		 * RSS offload type configuration is not a necessary feature
+		 * for VF, so here just print a warning and return.
+		 */
+		PMD_DRV_LOG(WARNING,
+			    "fail to get RSS offload type caps, ret: %d", ret);
+		return;
+	}
+
 	/**
 	 * ETH_RSS_IPV4 and ETH_RSS_IPV6 can be considered as 2
 	 * generalizations of all other IPv4 and IPv6 RSS types.
@@ -343,8 +351,15 @@ struct rte_iavf_xstats_name_off {
 	}
 
 	ret = iavf_set_hena(adapter, hena);
-	if (ret)
-		return ret;
+	if (ret) {
+		/**
+		 * RSS offload type configuration is not a necessary feature
+		 * for VF, so here just print a warning and return.
+		 */
+		PMD_DRV_LOG(WARNING,
+			    "fail to set RSS offload types, ret: %d", ret);
+		return;
+	}
 
 	if (valid_rss_hf & ipv4_rss)
 		valid_rss_hf |= rss_hf & ETH_RSS_IPV4;
@@ -357,7 +372,6 @@ struct rte_iavf_xstats_name_off {
 			    rss_hf & ~valid_rss_hf);
 
 	vf->rss_hf = valid_rss_hf;
-	return 0;
 }
 
 static int
@@ -409,9 +423,7 @@ struct rte_iavf_xstats_name_off {
 			return ret;
 		}
 	} else {
-		ret = iavf_config_rss_hf(adapter, rss_conf->rss_hf);
-		if (ret != -ENOTSUP)
-			return ret;
+		iavf_config_rss_hf(adapter, rss_conf->rss_hf);
 	}
 
 	return 0;
@@ -1400,9 +1412,7 @@ static int iavf_config_rx_queues_irqs(struct rte_eth_dev *dev,
 			return ret;
 		}
 	} else {
-		ret = iavf_config_rss_hf(adapter, rss_conf->rss_hf);
-		if (ret != -ENOTSUP)
-			return ret;
+		iavf_config_rss_hf(adapter, rss_conf->rss_hf);
 	}
 
 	return 0;
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dpdk-dev] [PATCH v2] net/iavf: fix virtual channel RSS command error handling
  2021-07-26  9:17 ` [dpdk-dev] [PATCH v2] " Alvin Zhang
@ 2021-07-27 11:54   ` Zhang, Qi Z
  0 siblings, 0 replies; 4+ messages in thread
From: Zhang, Qi Z @ 2021-07-27 11:54 UTC (permalink / raw)
  To: Zhang, AlvinX, Xing, Beilei; +Cc: dev, stable



> -----Original Message-----
> From: Zhang, AlvinX <alvinx.zhang@intel.com>
> Sent: Monday, July 26, 2021 5:17 PM
> To: Xing, Beilei <beilei.xing@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>
> Cc: dev@dpdk.org; Zhang, AlvinX <alvinx.zhang@intel.com>;
> stable@dpdk.org
> Subject: [PATCH v2] net/iavf: fix virtual channel RSS command error handling
> 
> Kernel PF may not respond to virtual channel commands
> VIRTCHNL_OP_GET_RSS_HENA_CAPS and VIRTCHNL_OP_SET_RSS_HENA,
> which will cause VF to fail to start.
> 
> RSS offload type configuration is not a necessary feature for VF, so in order
> to improve VF compatibility, in this patch the PMD will ignore the error
> result of above two commands and will print warnings instead.
> 
> Fixes: 5a038d19962d ("net/iavf: fix RSS configuration on i40e VF")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>

Acked-by: Qi Zhang <qi.z.zhang@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-07-27 11:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-21  6:32 [dpdk-dev] [PATCH] net/iavf: fix virtual channel RSS command error handling Alvin Zhang
2021-07-25 10:09 ` Zhang, Qi Z
2021-07-26  9:17 ` [dpdk-dev] [PATCH v2] " Alvin Zhang
2021-07-27 11:54   ` Zhang, Qi Z

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).