RE: [PATCH v3 10/28] IB/Verbs: Reform cm related part in IB-core cma

From: Hefty, Sean
Date: Mon Apr 13 2015 - 16:31:22 EST


> On Mon, Apr 13, 2015 at 07:25:48PM +0000, Hefty, Sean wrote:
> > > @@ -1037,17 +1033,13 @@ void rdma_destroy_id(struct rdma_cm_id *id)
> > > mutex_unlock(&id_priv->handler_mutex);
> > >
> > > if (id_priv->cma_dev) {
> > > - switch (rdma_node_get_transport(id_priv->id.device-
> > > >node_type)) {
> > > - case RDMA_TRANSPORT_IB:
> > > + if (rdma_ib_or_iboe(id_priv->id.device, id_priv->id.port_num))
> >
> > A listen id can be associated with a device without being associated
> > with a port (see the listen_any_list). Some other check is needed
> > to handle this case. I guess the code could check the first port on
> > the device (replace port_num with hardcoded value 1). Then we
> > wouldn't be any more broken than the code already is. (The 'break'
> > is conceptual, not practical.)
>
> Hum. So, devices on a port must have some compatibility when it comes
> to these invariants. It looks like all ports must have the same
> iwarpyness, for multiple reasons.
>
> Less clear is how rocee vs ib work within a device... Can you APM
> between those two kinds of ports?

No idea

> All these switches are so ugly :| Function pointers setup in
> iw_/ib_create_cm_id would be a lot clearer and safer.

I noticed this too. The if checks throughout the cma are becoming unmaintainable. It may be cleaner if all devices adopted using the cm device function pointers.

> > This appears to be highlighting an architectural flaw in the iboe
> integration.
>
> You mean iwarp?

I meant iboe. Wildcard listens map to multiple listens, one per device. The assumption being that all ports on the device are the same. IBoE changed that assumption.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/