[ofa-general] Re: IPOIB CM (NOSRQ) extension

Michael S. Tsirkin mst at dev.mellanox.co.il
Sat Jun 9 21:42:00 PDT 2007


> Quoting Pradeep Satyanarayana <pradeeps at linux.vnet.ibm.com>:
> Subject: IPOIB CM (NOSRQ) extension
> 
> This patch handles the corner case of running out of RC QPs. In that
> case it switches to UD mode. This patch can be used both by NOSRQ and
> SRQ code.
> 
> Signed-off-by: Pradeep Satyanarayana <pradeeps at linux.vnet.ibm.com>

You don't provide any way to retry going back to connected mode,
after a failure, which is really intermittent by nature. That's pretty bad.

> ---
> 
> --- c/linux-2.6.22-rc3/drivers/infiniband/ulp/ipoib/ipoib_cm.c 
> 2007-06-07 11:13:55.000000000 -0400
> +++ b/linux-2.6.22-rc3/drivers/infiniband/ulp/ipoib/ipoib_cm.c 
> 2007-06-07 11:11:21.000000000 -0400
> @@ -1383,6 +1383,11 @@ static int ipoib_cm_tx_handler(struct ib
>  		break;
>  	case IB_CM_REQ_ERROR:
>  	case IB_CM_REJ_RECEIVED:
> +		ipoib_warn(priv, "REJ received\n");
> +		neigh = tx->neigh;
> +		if (neigh)
> +			clear_bit(IPOIB_FLAG_OPER_UP, &neigh->cm->flags);
> +		break;
>  	case IB_CM_TIMEWAIT_EXIT:
>  		ipoib_dbg(priv, "CM error %d.\n", event->event);
>  		spin_lock_irq(&priv->tx_lock);

This has an effect of dropping down to datagram mode
on errors such as CM timeout, or a reject due to stale connection.
I think this is a wrong thing to do.

> --- c/linux-2.6.22-rc3/drivers/infiniband/ulp/ipoib/ipoib_main.c 
> 2007-05-30 14:56:25.000000000 -0400
> +++ b/linux-2.6.22-rc3/drivers/infiniband/ulp/ipoib/ipoib_main.c 
> 2007-06-06 18:28:06.000000000 -0400
> @@ -679,11 +679,10 @@ static int ipoib_start_xmit(struct sk_bu
> 
>  		neigh = *to_ipoib_neigh(skb->dst->neighbour);
> 
> -		if (ipoib_cm_get(neigh)) {
> -			if (ipoib_cm_up(neigh)) {
> +		if (ipoib_cm_get(neigh) &&  ipoib_cm_up(neigh) &&
> +			test_bit(IPOIB_FLAG_OPER_UP, &neigh->cm->flags)) {
>  				ipoib_cm_send(dev, skb, ipoib_cm_get(neigh));
>  				goto out;
> -			}
>  		} else if (neigh->ah) {
>  			if (unlikely(memcmp(&neigh->dgid.raw,
>  					    skb->dst->neighbour->ha + 4,

This adds overhead on xmit datapath (and it's atomics!),
which doesn't make me happy at all.

-- 
MST



More information about the general mailing list