[openib-general] Re: merge rdma_cm and ib_addr upstream

Roland Dreier rdreier at cisco.com
Tue Jan 10 07:20:21 PST 2006


    Or> Just to make sure, would the __be64 node_guid field of struct
    Or> ib_device have the exact semantics of the __be64 node_guid
    Or> field of struct ib_device_attr ? iser uses it from the attr
    Or> struct and we can sure move to use it from the device struct.

Yes, that's right.  Something like the patch below (compile tested
only) is what is required.

 - R.

---

Move iSER from getting node_guid via ib_query_device() to using the
node_guid field in struct ib_device, since ib_query_device() will stop
returning the node_guid soon.

Signed-off-by: Roland Dreier <rolandd at cisco.com>

--- infiniband/ulp/iser/iser_verbs.c	(revision 4866)
+++ infiniband/ulp/iser/iser_verbs.c	(working copy)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2005 Cisco Systems.  All rights reserved.
+ * Copyright (c) 2005, 2006 Cisco Systems.  All rights reserved.
  *
  * This software is available to you under a choice of one of two
  * licenses.  You may choose to be licensed under the terms of the GNU
@@ -73,8 +73,6 @@ int iser_create_adaptor_ib_res(struct is
 	struct ib_device	  *device = p_iser_adaptor->device;
 	struct ib_fmr_pool_param  params;
 
-	ib_query_device(device, &(p_iser_adaptor->device_attr));
-
 	strcpy(p_iser_adaptor->name, device->name);
 	iser_dbg("setting device name %s as adatptor name\n", device->name);
 
@@ -234,23 +232,16 @@ int iser_free_qp_and_id(struct iser_conn
 
 struct iser_adaptor *iser_adaptor_find_by_device(struct rdma_cm_id *cma_id)
 {
-	struct ib_device_attr *p_device_attr = NULL;
 	struct list_head      *p_list;
 	struct iser_adaptor   *p_adaptor = NULL;
 
-	p_device_attr = kmalloc(sizeof *p_device_attr, GFP_KERNEL);
-	if(p_device_attr == NULL)
-		goto end;
-
-	ib_query_device(cma_id->device, p_device_attr);
-
 	spin_lock(&ig.adaptor_list_lock);
 
 	p_list = ig.adaptor_list.next;
 	while (p_list != &ig.adaptor_list) {
 		p_adaptor = list_entry(p_list, struct iser_adaptor, ig_list);
 		/* find if there's a match using the device GUID */
-		if (p_adaptor->device_attr.node_guid == p_device_attr->node_guid)
+		if (p_adaptor->device->node_guid == cma_id->device->node_guid)
 			break;
 	}
 
@@ -268,7 +259,6 @@ struct iser_adaptor *iser_adaptor_find_b
 	}
 end:
 	spin_unlock(&ig.adaptor_list_lock);
-	kfree(p_device_attr);
 	return p_adaptor;
 }
 
--- infiniband/ulp/iser/iser.h	(revision 4866)
+++ infiniband/ulp/iser/iser.h	(working copy)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2005 Cisco Systems.  All rights reserved.
+ * Copyright (c) 2005, 2006 Cisco Systems.  All rights reserved.
  *
  * This software is available to you under a choice of one of two
  * licenses.  You may choose to be licensed under the terms of the GNU
@@ -105,7 +105,6 @@ struct iser_adaptor {
 	struct list_head       ig_list; /* entry in ig adaptors list */
 
 	struct ib_device       *device;
-	struct ib_device_attr  device_attr;
 
 	struct ib_pd	       *pd;
 	struct ib_cq	       *cq;



More information about the general mailing list