[openib-general] [PATCH 8/9] kDAPL: convert the hcas ia list to linux native

Tom Duffy Tom.Duffy at Sun.COM
Mon Jun 13 17:18:10 PDT 2005


Signed-off-by: Tom Duffy <tduffy at sun.com>

diff -Nurp -X /home/tduffy/dontdiff linux-kernel-ll8/dat-provider/dapl.h linux-kernel-ll9/dat-provider/dapl.h
--- linux-kernel-ll8/dat-provider/dapl.h	2005-06-13 16:49:24.143015000 -0700
+++ linux-kernel-ll9/dat-provider/dapl.h	2005-06-13 16:53:00.300010000 -0700
@@ -123,7 +123,7 @@ struct dapl_cookie_buffer {
 struct dapl_hca {
 	spinlock_t lock;
 	unsigned long flags;
-	struct dapl_llist_entry *ia_list_head;	/* list of all open IAs */
+	struct list_head ia_list;	/* list of all open IAs */
 	atomic_t handle_ref_count;		/* open instance count */
 	char *name;				/* provider name */
 	struct sockaddr_in6 hca_address;	/* local address of HCA */
@@ -149,11 +149,11 @@ struct dapl_common {
 struct dapl_ia {
 	struct dat_ia ia;
 	struct dapl_common common;
+	struct list_head list;
 	struct dapl_hca *hca;
 	struct dapl_evd *async_error_evd;
 	boolean_t cleanup_async_error_evd;
 
-	struct dapl_llist_entry hca_ia_list_entry;	/* HCAs list of IAs */
 	struct list_head ep_list;	/* EP queue */
 	struct list_head lmr_list;	/* LMR queue */
 	struct list_head rmr_list;	/* RMR queue */
diff -Nurp -X /home/tduffy/dontdiff linux-kernel-ll8/dat-provider/dapl_hca_util.c linux-kernel-ll9/dat-provider/dapl_hca_util.c
--- linux-kernel-ll8/dat-provider/dapl_hca_util.c	2005-06-10 16:13:19.509014000 -0700
+++ linux-kernel-ll9/dat-provider/dapl_hca_util.c	2005-06-13 16:59:49.280012000 -0700
@@ -63,7 +63,7 @@ struct dapl_hca *dapl_hca_alloc(char *na
 		    dapl_hash_create(DAPL_HASH_TABLE_DEFAULT_CAPACITY,
 				     &hca->lmr_hash_table)) {
 			spin_lock_init(&hca->lock);
-			dapl_llist_init_head(&hca->ia_list_head);
+			INIT_LIST_HEAD(&hca->ia_list);
 
 			hca->name = dapl_os_strdup(name);
 			hca->ib_hca_handle = device;
@@ -122,8 +122,7 @@ void dapl_hca_free(struct dapl_hca *hca)
 void dapl_hca_link_ia(struct dapl_hca *hca, struct dapl_ia *ia_ptr)
 {
 	spin_lock_irqsave(&hca->lock, hca->flags);
-	dapl_llist_add_head(&hca->ia_list_head,
-			    &ia_ptr->hca_ia_list_entry, ia_ptr);
+	list_add(&ia_ptr->list, &hca->ia_list);
 	spin_unlock_irqrestore(&hca->lock, hca->flags);
 }
 
@@ -143,17 +142,9 @@ void dapl_hca_link_ia(struct dapl_hca *h
  * 	none
  *
  */
-void dapl_hca_unlink_ia(struct dapl_hca *hca, struct dapl_ia *ia_ptr)
+void dapl_hca_unlink_ia(struct dapl_hca *hca, struct dapl_ia *ia)
 {
 	spin_lock_irqsave(&hca->lock, hca->flags);
-	/*
-	 * If an error occurred when we were opening the IA it
-	 * will not be linked on the list; don't unlink an unlinked
-	 * list!
-	 */
-	if (!dapl_llist_is_empty(&hca->ia_list_head)) {
-		dapl_llist_remove_entry(&hca->ia_list_head,
-					&ia_ptr->hca_ia_list_entry);
-	}
+	list_del(&ia->list);
 	spin_unlock_irqrestore(&hca->lock, hca->flags);
 }
diff -Nurp -X /home/tduffy/dontdiff linux-kernel-ll8/dat-provider/dapl_ia.c linux-kernel-ll9/dat-provider/dapl_ia.c
--- linux-kernel-ll8/dat-provider/dapl_ia.c	2005-06-13 16:50:30.624000000 -0700
+++ linux-kernel-ll9/dat-provider/dapl_ia.c	2005-06-13 16:56:10.004000000 -0700
@@ -62,7 +62,6 @@ struct dapl_ia *dapl_ia_alloc(struct dat
 	ia->hca = hca;
 	ia->async_error_evd = NULL;
 	ia->cleanup_async_error_evd = FALSE;
-	dapl_llist_init_entry(&ia->hca_ia_list_entry);
 	INIT_LIST_HEAD(&ia->ep_list);
 	INIT_LIST_HEAD(&ia->lmr_list);
 	INIT_LIST_HEAD(&ia->rmr_list);




More information about the general mailing list