[ofa-general] IPoIB CM (NOSRQ) [Patch V9] revised

Sean Hefty sean.hefty at intel.com
Wed Oct 10 10:30:48 PDT 2007


>@@ -313,19 +483,18 @@ static int ipoib_cm_req_handler(struct i
> 	}
>
> 	psn = random32() & 0xffffff;
>-	ret = ipoib_cm_modify_rx_qp(dev, cm_id, p->qp, psn);
>-	if (ret)
>-		goto err_modify;
>-
>-	spin_lock_irq(&priv->lock);
>-	queue_delayed_work(ipoib_workqueue,
>-			   &priv->cm.stale_task, IPOIB_CM_RX_DELAY);
>-	/* Add this entry to passive ids list head, but do not re-add it
>-	 * if IB_EVENT_QP_LAST_WQE_REACHED has moved it to flush list. */
>-	p->jiffies = jiffies;
>-	if (p->state == IPOIB_CM_RX_LIVE)
>-		list_move(&p->list, &priv->cm.passive_ids);
>-	spin_unlock_irq(&priv->lock);
>+	if (!priv->cm.srq) {
>+		ret = allocate_and_post_rbuf_nosrq(cm_id, p, psn);
>+		if (ret)
>+			goto err_modify;
>+	} else {
>+		p->rx_ring = NULL;
>+		ret = ipoib_cm_modify_rx_qp(dev, cm_id, p->qp, psn);
>+		if (ret)
>+			goto err_modify;
>+		p->state = IPOIB_CM_RX_LIVE;
>+		init_context_and_add_list(cm_id, p, priv);

I missed this impact in my previous review.  Removing the locking from
init_context_and_add_list() means that we need a lock here.

- Sean



More information about the general mailing list