|
@@ -194,7 +194,13 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
|
|
|
/* Set the cached Q_Key before we attach if it's the broadcast group */
|
|
|
if (!memcmp(mcast->mcmember.mgid.raw, priv->dev->broadcast + 4,
|
|
|
sizeof (union ib_gid))) {
|
|
|
+ spin_lock_irq(&priv->lock);
|
|
|
+ if (!priv->broadcast) {
|
|
|
+ spin_unlock_irq(&priv->lock);
|
|
|
+ return -EAGAIN;
|
|
|
+ }
|
|
|
priv->qkey = be32_to_cpu(priv->broadcast->mcmember.qkey);
|
|
|
+ spin_unlock_irq(&priv->lock);
|
|
|
priv->tx_wr.wr.ud.remote_qkey = priv->qkey;
|
|
|
}
|
|
|
|