summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/mellanox/mlx4/main.c
diff options
context:
space:
mode:
authorMaor Gottlieb <maorg@mellanox.com>2016-10-27 16:27:14 +0300
committerDavid S. Miller <davem@davemloft.net>2016-10-29 16:23:48 -0400
commit33a1f8b196dca933313c001866c4df3f3ca11f78 (patch)
tree480a21a8941bb17a9a766bc4c57f4fe80be9370f /drivers/net/ethernet/mellanox/mlx4/main.c
parentaa0c08feae8161b945520ada753d0dfe62b14fe7 (diff)
downloadlinux-stable-33a1f8b196dca933313c001866c4df3f3ca11f78.tar.gz
linux-stable-33a1f8b196dca933313c001866c4df3f3ca11f78.tar.bz2
linux-stable-33a1f8b196dca933313c001866c4df3f3ca11f78.zip
net/mlx4_core: Avoid setting ports to auto when only one port type is supported
When only one port type is supported, it should be read only. We reject changing requests, even to the auto sense mode. Fixes: 27bf91d6a0d5 ("mlx4_core: Add link type autosensing") Signed-off-by: Maor Gottlieb <maorg@mellanox.com> Signed-off-by: Moshe Shemesh <moshe@mellanox.com> Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/main.c')
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/main.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index 7183ac4135d2..6f4e67bc3538 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -1102,6 +1102,14 @@ static int __set_port_type(struct mlx4_port_info *info,
int i;
int err = 0;
+ if ((port_type & mdev->caps.supported_type[info->port]) != port_type) {
+ mlx4_err(mdev,
+ "Requested port type for port %d is not supported on this HCA\n",
+ info->port);
+ err = -EINVAL;
+ goto err_sup;
+ }
+
mlx4_stop_sense(mdev);
mutex_lock(&priv->port_mutex);
info->tmp_type = port_type;
@@ -1147,7 +1155,7 @@ static int __set_port_type(struct mlx4_port_info *info,
out:
mlx4_start_sense(mdev);
mutex_unlock(&priv->port_mutex);
-
+err_sup:
return err;
}