[openib-general] [PATCH] ib_mad: In completion handler, when status != success call send done handler
Sean Hefty
Tue Oct 26 10:13:32 PDT 2004
On Tue, 26 Oct 2004 13:03:58 -0400
Hal Rosenstock <halr at voltaire.com> wrote:
> On Tue, 2004-10-26 at 12:50, Sean Hefty wrote:
> > > Another alternative is to assume it is a receive if it is not a send is
> > > not matched.
> >
> > I think we have other issues with the completion handling as well.
> > Since we use a single CQ for both QPs, I think that we need to search
> > the send_posted_mad_list to find the corresponding completion.
> > We cannot assume that the completion matches with the request at the
> > head of the list.
> >
> > This appears to be broken in the non-error case as well.
>
> Right.
>
> > I will happily create a patch to fix these issues.
>
> Just wondering... will the patch change to a CQ/QP or leave it as 1
> CQ/port ? (BTW, there was a patch a long time ago on this which was lost
> in the shuffle. Sorry).
I was just looking at the other error handling cases to see what would make the most sense. At a minimum, I think that we want two send_posted_mad_list's, one per QP, in order to recover from errors on one of the QPs. Having a single list makes it more complicated to restart a QP.
>From a software viewpoint, I think that 2 CQs per QP, for a total of 4 per port, would make the code the simplest, and probably allow for the most optimization wrt completion processing and QP size. (My assumption is that the memory cost for 4 smaller CQs would basically be the same as 1 or 2 larger CQs.)
Of course, we can always use a single CQ and just set the wr_id to something that can differentiate between which send/receive queue we're trying to process.
- Sean
More information about the openib-general mailing list