[openib-general] [PATCH] ib_mad: In completion handler, when status != success call send done handler

Sean Hefty mshefty at ichips.intel.com
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 general mailing list