aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorRoland Dreier <rolandd@cisco.com>2005-11-29 00:20:34 -0500
committerRoland Dreier <rolandd@cisco.com>2005-11-29 00:20:34 -0500
commit65c7eddaba33995e013ef3c04718f6dc8fdf2335 (patch)
tree5f96a0797d23e7cee4f2a6c4770bacadee31a261 /drivers/infiniband
parentbf6d9e23a36c8a01bf6fbb945387d8ca3870ff71 (diff)
IPoIB: reinitialize path struct's completion for every query
It's possible that IPoIB will issue multiple SA queries for the same path struct. Therefore the 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@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 2fa30751f362..cd58b3ddd9c4 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -428,7 +428,6 @@ static struct ipoib_path *path_rec_create(struct net_device *dev,
428 skb_queue_head_init(&path->queue); 428 skb_queue_head_init(&path->queue);
429 429
430 INIT_LIST_HEAD(&path->neigh_list); 430 INIT_LIST_HEAD(&path->neigh_list);
431 init_completion(&path->done);
432 431
433 memcpy(path->pathrec.dgid.raw, gid->raw, sizeof (union ib_gid)); 432 memcpy(path->pathrec.dgid.raw, gid->raw, sizeof (union ib_gid));
434 path->pathrec.sgid = priv->local_gid; 433 path->pathrec.sgid = priv->local_gid;
@@ -446,6 +445,8 @@ static int path_rec_start(struct net_device *dev,
446 ipoib_dbg(priv, "Start path record lookup for " IPOIB_GID_FMT "\n", 445 ipoib_dbg(priv, "Start path record lookup for " IPOIB_GID_FMT "\n",
447 IPOIB_GID_ARG(path->pathrec.dgid)); 446 IPOIB_GID_ARG(path->pathrec.dgid));
448 447
448 init_completion(&path->done);
449
449 path->query_id = 450 path->query_id =
450 ib_sa_path_rec_get(priv->ca, priv->port, 451 ib_sa_path_rec_get(priv->ca, priv->port,
451 &path->pathrec, 452 &path->pathrec,