[openib-general] [PATCH] [verbs] add node_guid to device structure
Sean Hefty
sean.hefty at intel.com
Wed Sep 7 16:24:56 PDT 2005
This patch adds the node_guid to struct ib_device to avoid ULPs needing
to query for it.
It will also make it possible to give users the attributes of a device
as part of their add_device routine.
If this patch is okay with everyone, I will submit patches to remove
the device attribute queries in the CM, SRP, and sysfs.
Signed-off-by: Sean Hefty <sean.hefty at intel.com>
Index: include/rdma/ib_verbs.h
===================================================================
--- include/rdma/ib_verbs.h (revision 3340)
+++ include/rdma/ib_verbs.h (working copy)
@@ -952,6 +952,7 @@ struct ib_device {
IB_DEV_UNREGISTERED
} reg_state;
+ __be64 node_guid;
u8 node_type;
u8 phys_port_cnt;
};
Index: core/device.c
===================================================================
--- core/device.c (revision 3340)
+++ core/device.c (working copy)
@@ -227,8 +227,15 @@ static int add_client_context(struct ib_
*/
int ib_register_device(struct ib_device *device)
{
+ struct ib_device_attr *device_attr = NULL;
int ret;
+ device_attr = kmalloc(sizeof *device_attr, GFP_KERNEL);
+ if (!device_attr) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
down(&device_sem);
if (strchr(device->name, '%')) {
@@ -247,6 +254,12 @@ int ib_register_device(struct ib_device
spin_lock_init(&device->event_handler_lock);
spin_lock_init(&device->client_data_lock);
+ ret = ib_query_device(device, device_attr);
+ if (ret)
+ goto out;
+
+ device->node_guid = device_attr->node_guid;
+
ret = ib_device_register_sysfs(device);
if (ret) {
printk(KERN_WARNING "Couldn't register device %s with driver model\n",
@@ -268,6 +281,7 @@ int ib_register_device(struct ib_device
out:
up(&device_sem);
+ kfree(device_attr);
return ret;
}
EXPORT_SYMBOL(ib_register_device);
More information about the general
mailing list