Commit e8a88f09 authored by Bryan O'Sullivan's avatar Bryan O'Sullivan Committed by Linus Torvalds

[PATCH] IB/ipath: report correct device identification information in /sys

Signed-off-by: default avatarRobert Walsh <robert.walsh@qlogic.com>
Signed-off-by: default avatarBryan O'Sullivan <bryan.osullivan@qlogic.com>
Cc: "Michael S. Tsirkin" <mst@mellanox.co.il>
Cc: Roland Dreier <rolandd@cisco.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9edbd990
...@@ -341,18 +341,26 @@ u32 ipath_layer_get_nguid(struct ipath_devdata *dd) ...@@ -341,18 +341,26 @@ u32 ipath_layer_get_nguid(struct ipath_devdata *dd)
EXPORT_SYMBOL_GPL(ipath_layer_get_nguid); EXPORT_SYMBOL_GPL(ipath_layer_get_nguid);
int ipath_layer_query_device(struct ipath_devdata *dd, u32 * vendor, u32 ipath_layer_get_majrev(struct ipath_devdata *dd)
u32 * boardrev, u32 * majrev, u32 * minrev)
{ {
*vendor = dd->ipath_vendorid; return dd->ipath_majrev;
*boardrev = dd->ipath_boardrev; }
*majrev = dd->ipath_majrev;
*minrev = dd->ipath_minrev;
return 0; EXPORT_SYMBOL_GPL(ipath_layer_get_majrev);
u32 ipath_layer_get_minrev(struct ipath_devdata *dd)
{
return dd->ipath_minrev;
}
EXPORT_SYMBOL_GPL(ipath_layer_get_minrev);
u32 ipath_layer_get_pcirev(struct ipath_devdata *dd)
{
return dd->ipath_pcirev;
} }
EXPORT_SYMBOL_GPL(ipath_layer_query_device); EXPORT_SYMBOL_GPL(ipath_layer_get_pcirev);
u32 ipath_layer_get_flags(struct ipath_devdata *dd) u32 ipath_layer_get_flags(struct ipath_devdata *dd)
{ {
...@@ -375,6 +383,13 @@ u16 ipath_layer_get_deviceid(struct ipath_devdata *dd) ...@@ -375,6 +383,13 @@ u16 ipath_layer_get_deviceid(struct ipath_devdata *dd)
EXPORT_SYMBOL_GPL(ipath_layer_get_deviceid); EXPORT_SYMBOL_GPL(ipath_layer_get_deviceid);
u32 ipath_layer_get_vendorid(struct ipath_devdata *dd)
{
return dd->ipath_vendorid;
}
EXPORT_SYMBOL_GPL(ipath_layer_get_vendorid);
u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd) u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd)
{ {
return dd->ipath_lastibcstat; return dd->ipath_lastibcstat;
......
...@@ -144,11 +144,13 @@ int ipath_layer_want_buffer(struct ipath_devdata *dd); ...@@ -144,11 +144,13 @@ int ipath_layer_want_buffer(struct ipath_devdata *dd);
int ipath_layer_set_guid(struct ipath_devdata *, __be64 guid); int ipath_layer_set_guid(struct ipath_devdata *, __be64 guid);
__be64 ipath_layer_get_guid(struct ipath_devdata *); __be64 ipath_layer_get_guid(struct ipath_devdata *);
u32 ipath_layer_get_nguid(struct ipath_devdata *); u32 ipath_layer_get_nguid(struct ipath_devdata *);
int ipath_layer_query_device(struct ipath_devdata *, u32 * vendor, u32 ipath_layer_get_majrev(struct ipath_devdata *);
u32 * boardrev, u32 * majrev, u32 * minrev); u32 ipath_layer_get_minrev(struct ipath_devdata *);
u32 ipath_layer_get_pcirev(struct ipath_devdata *);
u32 ipath_layer_get_flags(struct ipath_devdata *dd); u32 ipath_layer_get_flags(struct ipath_devdata *dd);
struct device *ipath_layer_get_device(struct ipath_devdata *dd); struct device *ipath_layer_get_device(struct ipath_devdata *dd);
u16 ipath_layer_get_deviceid(struct ipath_devdata *dd); u16 ipath_layer_get_deviceid(struct ipath_devdata *dd);
u32 ipath_layer_get_vendorid(struct ipath_devdata *);
u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd); u64 ipath_layer_get_lastibcstat(struct ipath_devdata *dd);
u32 ipath_layer_get_ibmtu(struct ipath_devdata *dd); u32 ipath_layer_get_ibmtu(struct ipath_devdata *dd);
int ipath_layer_enable_timer(struct ipath_devdata *dd); int ipath_layer_enable_timer(struct ipath_devdata *dd);
......
...@@ -85,7 +85,7 @@ static int recv_subn_get_nodeinfo(struct ib_smp *smp, ...@@ -85,7 +85,7 @@ static int recv_subn_get_nodeinfo(struct ib_smp *smp,
{ {
struct nodeinfo *nip = (struct nodeinfo *)&smp->data; struct nodeinfo *nip = (struct nodeinfo *)&smp->data;
struct ipath_devdata *dd = to_idev(ibdev)->dd; struct ipath_devdata *dd = to_idev(ibdev)->dd;
u32 vendor, boardid, majrev, minrev; u32 vendor, majrev, minrev;
if (smp->attr_mod) if (smp->attr_mod)
smp->status |= IB_SMP_INVALID_FIELD; smp->status |= IB_SMP_INVALID_FIELD;
...@@ -105,9 +105,11 @@ static int recv_subn_get_nodeinfo(struct ib_smp *smp, ...@@ -105,9 +105,11 @@ static int recv_subn_get_nodeinfo(struct ib_smp *smp,
nip->port_guid = nip->sys_guid; nip->port_guid = nip->sys_guid;
nip->partition_cap = cpu_to_be16(ipath_layer_get_npkeys(dd)); nip->partition_cap = cpu_to_be16(ipath_layer_get_npkeys(dd));
nip->device_id = cpu_to_be16(ipath_layer_get_deviceid(dd)); nip->device_id = cpu_to_be16(ipath_layer_get_deviceid(dd));
ipath_layer_query_device(dd, &vendor, &boardid, &majrev, &minrev); majrev = ipath_layer_get_majrev(dd);
minrev = ipath_layer_get_minrev(dd);
nip->revision = cpu_to_be32((majrev << 16) | minrev); nip->revision = cpu_to_be32((majrev << 16) | minrev);
nip->local_port_num = port; nip->local_port_num = port;
vendor = ipath_layer_get_vendorid(dd);
nip->vendor_id[0] = 0; nip->vendor_id[0] = 0;
nip->vendor_id[1] = vendor >> 8; nip->vendor_id[1] = vendor >> 8;
nip->vendor_id[2] = vendor; nip->vendor_id[2] = vendor;
......
...@@ -568,18 +568,15 @@ static int ipath_query_device(struct ib_device *ibdev, ...@@ -568,18 +568,15 @@ static int ipath_query_device(struct ib_device *ibdev,
struct ib_device_attr *props) struct ib_device_attr *props)
{ {
struct ipath_ibdev *dev = to_idev(ibdev); struct ipath_ibdev *dev = to_idev(ibdev);
u32 vendor, boardrev, majrev, minrev;
memset(props, 0, sizeof(*props)); memset(props, 0, sizeof(*props));
props->device_cap_flags = IB_DEVICE_BAD_PKEY_CNTR | props->device_cap_flags = IB_DEVICE_BAD_PKEY_CNTR |
IB_DEVICE_BAD_QKEY_CNTR | IB_DEVICE_SHUTDOWN_PORT | IB_DEVICE_BAD_QKEY_CNTR | IB_DEVICE_SHUTDOWN_PORT |
IB_DEVICE_SYS_IMAGE_GUID; IB_DEVICE_SYS_IMAGE_GUID;
ipath_layer_query_device(dev->dd, &vendor, &boardrev, props->vendor_id = ipath_layer_get_vendorid(dev->dd);
&majrev, &minrev); props->vendor_part_id = ipath_layer_get_deviceid(dev->dd);
props->vendor_id = vendor; props->hw_ver = ipath_layer_get_pcirev(dev->dd);
props->vendor_part_id = boardrev;
props->hw_ver = boardrev << 16 | majrev << 8 | minrev;
props->sys_image_guid = dev->sys_image_guid; props->sys_image_guid = dev->sys_image_guid;
...@@ -1121,11 +1118,8 @@ static ssize_t show_rev(struct class_device *cdev, char *buf) ...@@ -1121,11 +1118,8 @@ static ssize_t show_rev(struct class_device *cdev, char *buf)
{ {
struct ipath_ibdev *dev = struct ipath_ibdev *dev =
container_of(cdev, struct ipath_ibdev, ibdev.class_dev); container_of(cdev, struct ipath_ibdev, ibdev.class_dev);
int vendor, boardrev, majrev, minrev;
ipath_layer_query_device(dev->dd, &vendor, &boardrev, return sprintf(buf, "%x\n", ipath_layer_get_pcirev(dev->dd));
&majrev, &minrev);
return sprintf(buf, "%d.%d\n", majrev, minrev);
} }
static ssize_t show_hca(struct class_device *cdev, char *buf) static ssize_t show_hca(struct class_device *cdev, char *buf)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment