net/mlx5: fix condition for calling mlx5_link_update_unlocked_gset

Message ID 1560937965-448702-1-git-send-email-asafp@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series net/mlx5: fix condition for calling mlx5_link_update_unlocked_gset |

Checks

Context Check Description
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Asaf Penso June 19, 2019, 9:52 a.m. UTC
  mlx5_link_update uses the newer ethtool command
ETHTOOL_GLINKSETTINGS to determine interface capabilities but falls
back to the older (deprecated) ETHTOOL_GSET command if the new
method fails for any reason.
The older method only supports reporting of capabilities up to 40G.

However, mlx5_link_update_unlocked_gs can return a failure for a
number of reasons (including the link being down).
Using the older method in cases of transient failure of the method
can result in reporting of reduced capabilities to the application.

The older method (mlx5_link_update_unlocked_gset) should only be
invoked if the newer method returns EOPNOTSUPP.

Fixes: 7d2e32f7 ("net/mlx5: fix ethtool link setting call order")
Cc: stable@dpdk.org

Signed-off-by: Asaf Penso <asafp@mellanox.com>
Reported-by: Srinivas Narayan <srinivas.narayan@att.com>
---
 drivers/net/mlx5/mlx5_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Slava Ovsiienko July 2, 2019, 3:03 p.m. UTC | #1
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Asaf Penso
> Sent: Wednesday, June 19, 2019 12:53
> To: Yongseok Koh <yskoh@mellanox.com>; Shahaf Shuler
> <shahafs@mellanox.com>
> Cc: dev@dpdk.org; srinivas.narayan@att.com; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/mlx5: fix condition for calling
> mlx5_link_update_unlocked_gset
> 
> mlx5_link_update uses the newer ethtool command
> ETHTOOL_GLINKSETTINGS to determine interface capabilities but falls
> back to the older (deprecated) ETHTOOL_GSET command if the new
> method fails for any reason.
> The older method only supports reporting of capabilities up to 40G.
> 
> However, mlx5_link_update_unlocked_gs can return a failure for a
> number of reasons (including the link being down).
> Using the older method in cases of transient failure of the method
> can result in reporting of reduced capabilities to the application.
> 
> The older method (mlx5_link_update_unlocked_gset) should only be
> invoked if the newer method returns EOPNOTSUPP.
> 
> Fixes: 7d2e32f7 ("net/mlx5: fix ethtool link setting call order")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Asaf Penso <asafp@mellanox.com>
> Reported-by: Srinivas Narayan <srinivas.narayan@att.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>

> ---
>  drivers/net/mlx5/mlx5_ethdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_ethdev.c
> b/drivers/net/mlx5/mlx5_ethdev.c
> index ac0500a..61e12cc 100644
> --- a/drivers/net/mlx5/mlx5_ethdev.c
> +++ b/drivers/net/mlx5/mlx5_ethdev.c
> @@ -947,7 +947,7 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev,
> char *fw_ver, size_t fw_size)
> 
>  	do {
>  		ret = mlx5_link_update_unlocked_gs(dev, &dev_link);
> -		if (ret)
> +		if (ret == -ENOTSUP)
>  			ret = mlx5_link_update_unlocked_gset(dev,
> &dev_link);
>  		if (ret == 0)
>  			break;
> --
> 1.8.3.1
  
Raslan Darawsheh July 2, 2019, 3:30 p.m. UTC | #2
Hi,

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Asaf Penso
> Sent: Wednesday, June 19, 2019 12:53 PM
> To: Yongseok Koh <yskoh@mellanox.com>; Shahaf Shuler
> <shahafs@mellanox.com>
> Cc: dev@dpdk.org; srinivas.narayan@att.com; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/mlx5: fix condition for calling
> mlx5_link_update_unlocked_gset
> 
> mlx5_link_update uses the newer ethtool command
> ETHTOOL_GLINKSETTINGS to determine interface capabilities but falls back
> to the older (deprecated) ETHTOOL_GSET command if the new method fails
> for any reason.
> The older method only supports reporting of capabilities up to 40G.
> 
> However, mlx5_link_update_unlocked_gs can return a failure for a number
> of reasons (including the link being down).
> Using the older method in cases of transient failure of the method can result
> in reporting of reduced capabilities to the application.
> 
> The older method (mlx5_link_update_unlocked_gset) should only be
> invoked if the newer method returns EOPNOTSUPP.
> 
> Fixes: 7d2e32f7 ("net/mlx5: fix ethtool link setting call order")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Asaf Penso <asafp@mellanox.com>
> Reported-by: Srinivas Narayan <srinivas.narayan@att.com>
> ---
>  drivers/net/mlx5/mlx5_ethdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_ethdev.c
> b/drivers/net/mlx5/mlx5_ethdev.c index ac0500a..61e12cc 100644
> --- a/drivers/net/mlx5/mlx5_ethdev.c
> +++ b/drivers/net/mlx5/mlx5_ethdev.c
> @@ -947,7 +947,7 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev,
> char *fw_ver, size_t fw_size)
> 
>  	do {
>  		ret = mlx5_link_update_unlocked_gs(dev, &dev_link);
> -		if (ret)
> +		if (ret == -ENOTSUP)
>  			ret = mlx5_link_update_unlocked_gset(dev,
> &dev_link);
>  		if (ret == 0)
>  			break;
> --
> 1.8.3.1

Patch applied to next-net-mlx

Kindest regards,
Raslan Darawsheh
  

Patch

diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index ac0500a..61e12cc 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -947,7 +947,7 @@  int mlx5_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size)
 
 	do {
 		ret = mlx5_link_update_unlocked_gs(dev, &dev_link);
-		if (ret)
+		if (ret == -ENOTSUP)
 			ret = mlx5_link_update_unlocked_gset(dev, &dev_link);
 		if (ret == 0)
 			break;