aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/ipath/ipath_layer.c31
-rw-r--r--drivers/infiniband/hw/ipath/ipath_layer.h6
-rw-r--r--drivers/infiniband/hw/ipath/ipath_mad.c6
-rw-r--r--drivers/infiniband/hw/ipath/ipath_verbs.c14
4 files changed, 35 insertions, 22 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_layer.c b/drivers/infiniband/hw/ipath/ipath_layer.c
index 4b51b97de899..0f8b5290ff19 100644
--- a/drivers/infiniband/hw/ipath/ipath_layer.c
+++ b/drivers/infiniband/hw/ipath/ipath_layer.c
@@ -341,18 +341,26 @@ u32 ipath_layer_get_nguid(struct ipath_devdata *dd)
341 341
342EXPORT_SYMBOL_GPL(ipath_layer_get_nguid); 342EXPORT_SYMBOL_GPL(ipath_layer_get_nguid);
343 343
344int ipath_layer_query_device(struct ipath_devdata *dd, u32 * vendor, 344u32 ipath_layer_get_majrev(struct ipath_devdata *dd)
345 u32 * boardrev, u32 * majrev, u32 * minrev)
346{ 345{
347 *vendor = dd->ipath_vendorid; 346 return dd->ipath_majrev;
348 *boardrev = dd->ipath_boardrev; 347}
349 *majrev = dd->ipath_majrev;
350 *minrev = dd->ipath_minrev;
351 348
352 return 0; 349EXPORT_SYMBOL_GPL(ipath_layer_get_majrev);
350
351u32 ipath_layer_get_minrev(struct ipath_devdata *dd)
352{
353 return dd->ipath_minrev;
354}
355
356EXPORT_SYMBOL_GPL(ipath_layer_get_minrev);
357
358u32 ipath_layer_get_pcirev(struct ipath_devdata *dd)
359{
360 return dd->ipath_pcirev;
353} 361}
354 362
355EXPORT_SYMBOL_GPL(ipath_layer_query_device); 363EXPORT_SYMBOL_GPL(ipath_layer_get_pcirev);
356 364
357u32 ipath_layer_get_flags(struct ipath_devdata *dd) 365u32 ipath_layer_get_flags(struct ipath_devdata *dd)
358{ 366{
@@ -375,6 +383,13 @@ u16 ipath_layer_get_deviceid(struct ipath_devdata *dd)
375 383
376EXPORT_SYMBOL_GPL(ipath_layer_get_deviceid); 384EXPORT_SYMBOL_GPL(ipath_layer_get_deviceid);
377 385
386u32 ipath_layer_get_vendorid(struct ipath_devdata *dd)
387{
388 return dd->ipath_vendorid;
389}
390
391EXPORT_SYMBOL_GPL(ipath_layer_get_vendorid);
392
378u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd) 393u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd)
379{ 394{
380 return dd->ipath_lastibcstat; 395 return dd->ipath_lastibcstat;
diff --git a/drivers/infiniband/hw/ipath/ipath_layer.h b/drivers/infiniband/hw/ipath/ipath_layer.h
index aff755141e73..5dcffc7e53cc 100644
--- a/drivers/infiniband/hw/ipath/ipath_layer.h
+++ b/drivers/infiniband/hw/ipath/ipath_layer.h
@@ -144,11 +144,13 @@ int ipath_layer_want_buffer(struct ipath_devdata *dd);
144int ipath_layer_set_guid(struct ipath_devdata *, __be64 guid); 144int ipath_layer_set_guid(struct ipath_devdata *, __be64 guid);
145__be64 ipath_layer_get_guid(struct ipath_devdata *); 145__be64 ipath_layer_get_guid(struct ipath_devdata *);
146u32 ipath_layer_get_nguid(struct ipath_devdata *); 146u32 ipath_layer_get_nguid(struct ipath_devdata *);
147int ipath_layer_query_device(struct ipath_devdata *, u32 * vendor, 147u32 ipath_layer_get_majrev(struct ipath_devdata *);
148 u32 * boardrev, u32 * majrev, u32 * minrev); 148u32 ipath_layer_get_minrev(struct ipath_devdata *);
149u32 ipath_layer_get_pcirev(struct ipath_devdata *);
149u32 ipath_layer_get_flags(struct ipath_devdata *dd); 150u32 ipath_layer_get_flags(struct ipath_devdata *dd);
150struct device *ipath_layer_get_device(struct ipath_devdata *dd); 151struct device *ipath_layer_get_device(struct ipath_devdata *dd);
151u16 ipath_layer_get_deviceid(struct ipath_devdata *dd); 152u16 ipath_layer_get_deviceid(struct ipath_devdata *dd);
153u32 ipath_layer_get_vendorid(struct ipath_devdata *);
152u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd); 154u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd);
153u32 ipath_layer_get_ibmtu(struct ipath_devdata *dd); 155u32 ipath_layer_get_ibmtu(struct ipath_devdata *dd);
154int ipath_layer_enable_timer(struct ipath_devdata *dd); 156int ipath_layer_enable_timer(struct ipath_devdata *dd);
diff --git a/drivers/infiniband/hw/ipath/ipath_mad.c b/drivers/infiniband/hw/ipath/ipath_mad.c
index ff09df2d262e..8f765341d03d 100644
--- a/drivers/infiniband/hw/ipath/ipath_mad.c
+++ b/drivers/infiniband/hw/ipath/ipath_mad.c
@@ -85,7 +85,7 @@ static int recv_subn_get_nodeinfo(struct ib_smp *smp,
85{ 85{
86 struct nodeinfo *nip = (struct nodeinfo *)&smp->data; 86 struct nodeinfo *nip = (struct nodeinfo *)&smp->data;
87 struct ipath_devdata *dd = to_idev(ibdev)->dd; 87 struct ipath_devdata *dd = to_idev(ibdev)->dd;
88 u32 vendor, boardid, majrev, minrev; 88 u32 vendor, majrev, minrev;
89 89
90 if (smp->attr_mod) 90 if (smp->attr_mod)
91 smp->status |= IB_SMP_INVALID_FIELD; 91 smp->status |= IB_SMP_INVALID_FIELD;
@@ -105,9 +105,11 @@ static int recv_subn_get_nodeinfo(struct ib_smp *smp,
105 nip->port_guid = nip->sys_guid; 105 nip->port_guid = nip->sys_guid;
106 nip->partition_cap = cpu_to_be16(ipath_layer_get_npkeys(dd)); 106 nip->partition_cap = cpu_to_be16(ipath_layer_get_npkeys(dd));
107 nip->device_id = cpu_to_be16(ipath_layer_get_deviceid(dd)); 107 nip->device_id = cpu_to_be16(ipath_layer_get_deviceid(dd));
108 ipath_layer_query_device(dd, &vendor, &boardid, &majrev, &minrev); 108 majrev = ipath_layer_get_majrev(dd);
109 minrev = ipath_layer_get_minrev(dd);
109 nip->revision = cpu_to_be32((majrev << 16) | minrev); 110 nip->revision = cpu_to_be32((majrev << 16) | minrev);
110 nip->local_port_num = port; 111 nip->local_port_num = port;
112 vendor = ipath_layer_get_vendorid(dd);
111 nip->vendor_id[0] = 0; 113 nip->vendor_id[0] = 0;
112 nip->vendor_id[1] = vendor >> 8; 114 nip->vendor_id[1] = vendor >> 8;
113 nip->vendor_id[2] = vendor; 115 nip->vendor_id[2] = vendor;
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c
index 18375e831744..e04c7619f9fe 100644
--- a/drivers/infiniband/hw/ipath/ipath_verbs.c
+++ b/drivers/infiniband/hw/ipath/ipath_verbs.c
@@ -568,18 +568,15 @@ static int ipath_query_device(struct ib_device *ibdev,
568 struct ib_device_attr *props) 568 struct ib_device_attr *props)
569{ 569{
570 struct ipath_ibdev *dev = to_idev(ibdev); 570 struct ipath_ibdev *dev = to_idev(ibdev);
571 u32 vendor, boardrev, majrev, minrev;
572 571
573 memset(props, 0, sizeof(*props)); 572 memset(props, 0, sizeof(*props));
574 573
575 props->device_cap_flags = IB_DEVICE_BAD_PKEY_CNTR | 574 props->device_cap_flags = IB_DEVICE_BAD_PKEY_CNTR |
576 IB_DEVICE_BAD_QKEY_CNTR | IB_DEVICE_SHUTDOWN_PORT | 575 IB_DEVICE_BAD_QKEY_CNTR | IB_DEVICE_SHUTDOWN_PORT |
577 IB_DEVICE_SYS_IMAGE_GUID; 576 IB_DEVICE_SYS_IMAGE_GUID;
578 ipath_layer_query_device(dev->dd, &vendor, &boardrev, 577 props->vendor_id = ipath_layer_get_vendorid(dev->dd);
579 &majrev, &minrev); 578 props->vendor_part_id = ipath_layer_get_deviceid(dev->dd);
580 props->vendor_id = vendor; 579 props->hw_ver = ipath_layer_get_pcirev(dev->dd);
581 props->vendor_part_id = boardrev;
582 props->hw_ver = boardrev << 16 | majrev << 8 | minrev;
583 580
584 props->sys_image_guid = dev->sys_image_guid; 581 props->sys_image_guid = dev->sys_image_guid;
585 582
@@ -1121,11 +1118,8 @@ static ssize_t show_rev(struct class_device *cdev, char *buf)
1121{ 1118{
1122 struct ipath_ibdev *dev = 1119 struct ipath_ibdev *dev =
1123 container_of(cdev, struct ipath_ibdev, ibdev.class_dev); 1120 container_of(cdev, struct ipath_ibdev, ibdev.class_dev);
1124 int vendor, boardrev, majrev, minrev;
1125 1121
1126 ipath_layer_query_device(dev->dd, &vendor, &boardrev, 1122 return sprintf(buf, "%x\n", ipath_layer_get_pcirev(dev->dd));
1127 &majrev, &minrev);
1128 return sprintf(buf, "%d.%d\n", majrev, minrev);
1129} 1123}
1130 1124
1131static ssize_t show_hca(struct class_device *cdev, char *buf) 1125static ssize_t show_hca(struct class_device *cdev, char *buf)