[openib-general] [PATCH v2 1/2] iWARP Connection Manager.
Steve Wise
swise at opengridcomputing.com
Tue Jun 13 13:34:31 PDT 2006
<snip>
> > > +static void cm_event_handler(struct iw_cm_id *cm_id,
> > > + struct iw_cm_event *iw_event)
> > > +{
> > > + struct iwcm_work *work;
> > > + struct iwcm_id_private *cm_id_priv;
> > > + unsigned long flags;
> > > +
> > > + work = kmalloc(sizeof(*work), GFP_ATOMIC);
> > > + if (!work)
> > > + return;
> >
> > This allocation _will_ fail sometimes. The driver must recover from it.
> > Will it do so?
>
> Er...no. It will lose this event. Depending on the event...the carnage
> varies. We'll take a look at this.
>
This behavior is consistent with the Infiniband CM (see
drivers/infiniband/core/cm.c function cm_recv_handler()). But I think
we should at least log an error because a lost event will usually stall
the rdma connection.
> >
> > > +EXPORT_SYMBOL(iw_cm_init_qp_attr);
> >
> > This file exports a ton of symbols. It's usual to provide some justifying
> > commentary in the changelog when this happens.
>
> This module is a logical instance of the xx_cm where xx is the transport
> type. I think there is some discussion warranted on whether or not these
> should all be built into and exported by rdma_cm. One rationale would be
> that the rdma_cm is the only client for many of these functions (this
> being a particularly good example) and doing so would reduce the export
> count. Others would be reasonably needed for any application (connect,
> etc...)
>
Transport-dependent ULPs, in theory, are able to use the
transport-specific CM directly if they don't wish to use the RDMA CM. I
think that's the rationale for have the xx_cm modules seperate from the
rdma_cm module and exporting the various functions.
> All that said, we'll be sure to document the exported symbols in a
> follow-up patch.
>
I'll add commentary explaining this.
Steve.
More information about the general
mailing list