[openib-general] Re: [PATCH 1 of 2] ipoib: pass all of multicast.c through ipoib_workqueue

Roland Dreier rolandd at cisco.com
Mon Nov 28 21:14:58 PST 2005


[resending, forgot to reply to all...]

I started reviewing these patches, and I found in my testing I also
needed the following patch for your stress test to be stable.  Does
this seem correct and necessary?

Thanks,
  Roland

---

It's possible that IPoIB will issue multiple SA queries for the same
path struct.  Therefore a path struct's completion needs to be
initialized for each query rather than only once when the struct is
allocated, or else we might not wait long enough for later queries to
finish and free the path struct too soon.

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

---

--- infiniband/ulp/ipoib/ipoib_main.c	(revision 4180)
+++ infiniband/ulp/ipoib/ipoib_main.c	(working copy)
@@ -428,7 +428,6 @@ static struct ipoib_path *path_rec_creat
 	skb_queue_head_init(&path->queue);
 
 	INIT_LIST_HEAD(&path->neigh_list);
-	init_completion(&path->done);
 
 	memcpy(path->pathrec.dgid.raw, gid->raw, sizeof (union ib_gid));
 	path->pathrec.sgid      = priv->local_gid;
@@ -446,6 +445,8 @@ static int path_rec_start(struct net_dev
 	ipoib_dbg(priv, "Start path record lookup for " IPOIB_GID_FMT "\n",
 		  IPOIB_GID_ARG(path->pathrec.dgid));
 
+	init_completion(&path->done);
+
 	path->query_id =
 		ib_sa_path_rec_get(priv->ca, priv->port,
 				   &path->pathrec,



More information about the general mailing list