From 47bcdd345fa1617699572abab89687d099ff0f0c Mon Sep 17 00:00:00 2001 From: Yevgeny Petrilin Date: Mon, 19 Dec 2011 04:00:26 +0000 Subject: [PATCH] --- yaml --- r: 279007 b: refs/heads/master c: 58a60168d12c4e5be21c29420a3de4a41ef3470f h: refs/heads/master i: 279005: 8f6af44e354f139e3939ee953305003f5b710280 279003: a90684fd1addc35b87e8582ce12182fcc651f7dd 278999: e80e99b2e2a45557ba2def9ba7ae1d06bd0213c7 278991: 386f9249ee0f1e019897e74a9868b0ce33fa3dfa 278975: 7018796754908e36d07017cec9e7a3f26d571d4f v: v3 --- [refs] | 2 +- trunk/drivers/net/ethernet/mellanox/mlx4/main.c | 10 ++++++++-- trunk/include/linux/mlx4/device.h | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 2fdbae01053d..7d02e67a5344 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9f6e20cee6253c4ca5faacba8dbd09ebe70132ed +refs/heads/master: 58a60168d12c4e5be21c29420a3de4a41ef3470f diff --git a/trunk/drivers/net/ethernet/mellanox/mlx4/main.c b/trunk/drivers/net/ethernet/mellanox/mlx4/main.c index b969bfb569e3..8f7314394cc2 100644 --- a/trunk/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/trunk/drivers/net/ethernet/mellanox/mlx4/main.c @@ -274,6 +274,10 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap) dev->caps.stat_rate_support = dev_cap->stat_rate_support; dev->caps.max_gso_sz = dev_cap->max_gso_sz; + /* Sense port always allowed on supported devices for ConnectX1 and 2 */ + if (dev->pdev->device != 0x1003) + dev->caps.flags |= MLX4_DEV_CAP_FLAG_SENSE_SUPPORT; + dev->caps.log_num_macs = log_num_mac; dev->caps.log_num_vlans = MLX4_LOG_NUM_VLANS; dev->caps.log_num_prios = use_prio ? 3 : 0; @@ -311,7 +315,8 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap) } dev->caps.possible_type[i] = dev->caps.port_type[i]; mlx4_priv(dev)->sense.sense_allowed[i] = - dev->caps.supported_type[i] == MLX4_PORT_TYPE_AUTO; + ((dev->caps.supported_type[i] == MLX4_PORT_TYPE_AUTO) && + (dev->caps.flags & MLX4_DEV_CAP_FLAG_SENSE_SUPPORT)); if (dev->caps.log_num_macs > dev_cap->log_max_macs[i]) { dev->caps.log_num_macs = dev_cap->log_max_macs[i]; @@ -583,7 +588,8 @@ static ssize_t set_port_type(struct device *dev, types[i] = mdev->caps.port_type[i+1]; } - if (!(mdev->caps.flags & MLX4_DEV_CAP_FLAG_DPDP)) { + if (!(mdev->caps.flags & MLX4_DEV_CAP_FLAG_DPDP) && + !(mdev->caps.flags & MLX4_DEV_CAP_FLAG_SENSE_SUPPORT)) { for (i = 1; i <= mdev->caps.num_ports; i++) { if (mdev->caps.possible_type[i] == MLX4_PORT_TYPE_AUTO) { mdev->caps.possible_type[i] = mdev->caps.port_type[i]; diff --git a/trunk/include/linux/mlx4/device.h b/trunk/include/linux/mlx4/device.h index 5f784ff6a36e..b06a44ba1565 100644 --- a/trunk/include/linux/mlx4/device.h +++ b/trunk/include/linux/mlx4/device.h @@ -94,7 +94,8 @@ enum { MLX4_DEV_CAP_FLAG_UDP_RSS = 1LL << 40, MLX4_DEV_CAP_FLAG_VEP_UC_STEER = 1LL << 41, MLX4_DEV_CAP_FLAG_VEP_MC_STEER = 1LL << 42, - MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48 + MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48, + MLX4_DEV_CAP_FLAG_SENSE_SUPPORT = 1LL << 55 }; #define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90)