aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYevgeny Petrilin <yevgenyp@mellanox.co.il>2011-03-22 18:38:07 -0400
committerDavid S. Miller <davem@davemloft.net>2011-03-23 15:24:20 -0400
commit725c89997e03d71b09ea3c17c997da0712b9d835 (patch)
treed141987aec9ae90d43e3f44e3facee921ec6f526
parent14c07b1358ede1664652bb9b28d9ace5fe6f7f92 (diff)
mlx4_en: Reporting HW revision in ethtool -i
HW revision is derived from device ID and rev id. Signed-off-by: Eugenia Emantayev <eugenia@mellanox.co.il> Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/infiniband/hw/mlx4/main.c1
-rw-r--r--drivers/net/mlx4/en_ethtool.c15
-rw-r--r--drivers/net/mlx4/main.c2
-rw-r--r--drivers/net/mlx4/mlx4_en.h3
-rw-r--r--include/linux/mlx4/device.h2
5 files changed, 20 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index c7a6213c6996..66e3eecfd0db 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -721,7 +721,6 @@ static int init_node_data(struct mlx4_ib_dev *dev)
721 if (err) 721 if (err)
722 goto out; 722 goto out;
723 723
724 dev->dev->rev_id = be32_to_cpup((__be32 *) (out_mad->data + 32));
725 memcpy(&dev->ib_dev.node_guid, out_mad->data + 12, 8); 724 memcpy(&dev->ib_dev.node_guid, out_mad->data + 12, 8);
726 725
727out: 726out:
diff --git a/drivers/net/mlx4/en_ethtool.c b/drivers/net/mlx4/en_ethtool.c
index c1f351f6ae57..62ace6c72b42 100644
--- a/drivers/net/mlx4/en_ethtool.c
+++ b/drivers/net/mlx4/en_ethtool.c
@@ -45,7 +45,20 @@ mlx4_en_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *drvinfo)
45 struct mlx4_en_priv *priv = netdev_priv(dev); 45 struct mlx4_en_priv *priv = netdev_priv(dev);
46 struct mlx4_en_dev *mdev = priv->mdev; 46 struct mlx4_en_dev *mdev = priv->mdev;
47 47
48 sprintf(drvinfo->driver, DRV_NAME " (%s)", mdev->dev->board_id); 48 switch (mdev->dev->rev_id) {
49 case 0xa0:
50 if (dev->dev_id >= MLX4_EN_CX3_LOW_ID && dev->dev_id <= MLX4_EN_CX3_HIGH_ID)
51 sprintf(drvinfo->driver, DRV_NAME " (%s_CX-3)", mdev->dev->board_id);
52 else
53 sprintf(drvinfo->driver, DRV_NAME " (%s_CX)", mdev->dev->board_id);
54 break;
55 case 0xb0:
56 sprintf(drvinfo->driver, DRV_NAME " (%s_CX-2)", mdev->dev->board_id);
57 break;
58 default:
59 sprintf(drvinfo->driver, DRV_NAME " (%s)", mdev->dev->board_id);
60 break;
61 }
49 strncpy(drvinfo->version, DRV_VERSION " (" DRV_RELDATE ")", 32); 62 strncpy(drvinfo->version, DRV_VERSION " (" DRV_RELDATE ")", 32);
50 sprintf(drvinfo->fw_version, "%d.%d.%d", 63 sprintf(drvinfo->fw_version, "%d.%d.%d",
51 (u16) (mdev->dev->caps.fw_ver >> 32), 64 (u16) (mdev->dev->caps.fw_ver >> 32),
diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
index 42d4fb477870..5bebb8800ab2 100644
--- a/drivers/net/mlx4/main.c
+++ b/drivers/net/mlx4/main.c
@@ -1139,6 +1139,8 @@ static int __mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
1139 INIT_LIST_HEAD(&priv->pgdir_list); 1139 INIT_LIST_HEAD(&priv->pgdir_list);
1140 mutex_init(&priv->pgdir_mutex); 1140 mutex_init(&priv->pgdir_mutex);
1141 1141
1142 pci_read_config_byte(pdev, PCI_REVISION_ID, &dev->rev_id);
1143
1142 /* 1144 /*
1143 * Now reset the HCA before we touch the PCI capabilities or 1145 * Now reset the HCA before we touch the PCI capabilities or
1144 * attempt a firmware command, since a boot ROM may have left 1146 * attempt a firmware command, since a boot ROM may have left
diff --git a/drivers/net/mlx4/mlx4_en.h b/drivers/net/mlx4/mlx4_en.h
index 07aea8d0beeb..ad4df66750bc 100644
--- a/drivers/net/mlx4/mlx4_en.h
+++ b/drivers/net/mlx4/mlx4_en.h
@@ -216,6 +216,9 @@ struct mlx4_en_tx_desc {
216 216
217#define MLX4_EN_USE_SRQ 0x01000000 217#define MLX4_EN_USE_SRQ 0x01000000
218 218
219#define MLX4_EN_CX3_LOW_ID 0x1000
220#define MLX4_EN_CX3_HIGH_ID 0x1005
221
219struct mlx4_en_rx_alloc { 222struct mlx4_en_rx_alloc {
220 struct page *page; 223 struct page *page;
221 u16 offset; 224 u16 offset;
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index 2460356d2c72..fe2a3a3f046c 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -422,7 +422,7 @@ struct mlx4_dev {
422 unsigned long flags; 422 unsigned long flags;
423 struct mlx4_caps caps; 423 struct mlx4_caps caps;
424 struct radix_tree_root qp_table_tree; 424 struct radix_tree_root qp_table_tree;
425 u32 rev_id; 425 u8 rev_id;
426 char board_id[MLX4_BOARD_ID_LEN]; 426 char board_id[MLX4_BOARD_ID_LEN];
427}; 427};
428 428