diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-11-18 23:37:07 +0300 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-11-18 23:37:07 +0300 |
commit | 5177dc3f2b3220b2dcfcf35eb9e6ec53ee818231 (patch) | |
tree | 29dd80a7b33426d0890aa07b5864224557c62af7 /drivers/infiniband/ulp/ipoib/ipoib_main.c | |
parent | 0bb943c7a2136716757a263f604d26309fd98042 (diff) | |
parent | 7f0f598a0069d1ab072375965a4b69137233169c (diff) | |
download | linux-5177dc3f2b3220b2dcfcf35eb9e6ec53ee818231.tar.xz |
Merge branch 'linus' into tracing/urgent
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_main.c')
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index fddded7900d1..85257f6b9576 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -106,12 +106,13 @@ int ipoib_open(struct net_device *dev) ipoib_dbg(priv, "bringing up interface\n"); - napi_enable(&priv->napi); set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags); if (ipoib_pkey_dev_delay_open(dev)) return 0; + napi_enable(&priv->napi); + if (ipoib_ib_dev_open(dev)) { napi_disable(&priv->napi); return -EINVAL; @@ -546,6 +547,7 @@ static int path_rec_start(struct net_device *dev, if (path->query_id < 0) { ipoib_warn(priv, "ib_sa_path_rec_get failed: %d\n", path->query_id); path->query = NULL; + complete(&path->done); return path->query_id; } @@ -662,7 +664,7 @@ static void unicast_arp_send(struct sk_buff *skb, struct net_device *dev, skb_push(skb, sizeof *phdr); __skb_queue_tail(&path->queue, skb); - if (path_rec_start(dev, path)) { + if (!path->query && path_rec_start(dev, path)) { spin_unlock_irqrestore(&priv->lock, flags); path_free(dev, path); return; |