提交 db91be8e 编写于 作者: A Aya Levin 提交者: Greg Kroah-Hartman

net/mlx5e: Fix ethtool self test: link speed

[ Upstream commit 534e7366f41b0c689b01af4375aefcd1462adedf ]

Ethtool self test contains a test for link speed. This test reads the
PTYS register and determines whether the current speed is valid or not.
Change current implementation to use the function mlx5e_port_linkspeed()
that does the same check and fails when speed is invalid. This code
redundancy lead to a bug when mlx5e_port_linkspeed() was updated with
expended speeds and the self test was not.

Fixes: 2c81bfd5 ("net/mlx5e: Move port speed code from en_ethtool.c to en/port.c")
Signed-off-by: NAya Levin <ayal@mellanox.com>
Reviewed-by: NMoshe Shemesh <moshe@mellanox.com>
Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 5eb1967b
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <linux/udp.h> #include <linux/udp.h>
#include <net/udp.h> #include <net/udp.h>
#include "en.h" #include "en.h"
#include "en/port.h"
enum { enum {
MLX5E_ST_LINK_STATE, MLX5E_ST_LINK_STATE,
...@@ -80,22 +81,12 @@ static int mlx5e_test_link_state(struct mlx5e_priv *priv) ...@@ -80,22 +81,12 @@ static int mlx5e_test_link_state(struct mlx5e_priv *priv)
static int mlx5e_test_link_speed(struct mlx5e_priv *priv) static int mlx5e_test_link_speed(struct mlx5e_priv *priv)
{ {
u32 out[MLX5_ST_SZ_DW(ptys_reg)]; u32 speed;
u32 eth_proto_oper;
int i;
if (!netif_carrier_ok(priv->netdev)) if (!netif_carrier_ok(priv->netdev))
return 1; return 1;
if (mlx5_query_port_ptys(priv->mdev, out, sizeof(out), MLX5_PTYS_EN, 1)) return mlx5e_port_linkspeed(priv->mdev, &speed);
return 1;
eth_proto_oper = MLX5_GET(ptys_reg, out, eth_proto_oper);
for (i = 0; i < MLX5E_LINK_MODES_NUMBER; i++) {
if (eth_proto_oper & MLX5E_PROT_MASK(i))
return 0;
}
return 1;
} }
struct mlx5ehdr { struct mlx5ehdr {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册