Would this generate a completion event even if no completion entries are queued?
Maybe I'm misunderstanding, but this sounds like a bandaid for broken applications, and a bandaid that other hardware drivers won't implement. On Thu, Oct 13, 2011 at 1:21 AM, Kumar Sanghvi <kuma...@chelsio.com> wrote: > At the time when peer closes connection, iw_cxgb4 will not > send a cq event if ibqp.uobject exists. In that case, its possible > for user application to get blocked in ibv_get_cq_event. > > To resolve this, call the cq's comp_handler to unblock any read > from ibv_get_cq_event. > > Signed-off-by: Kumar Sanghvi <kuma...@chelsio.com> > --- > drivers/infiniband/hw/cxgb4/qp.c | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/drivers/infiniband/hw/cxgb4/qp.c > b/drivers/infiniband/hw/cxgb4/qp.c > index ec3ce67..b59b56c 100644 > --- a/drivers/infiniband/hw/cxgb4/qp.c > +++ b/drivers/infiniband/hw/cxgb4/qp.c > @@ -970,8 +970,12 @@ static void flush_qp(struct c4iw_qp *qhp) > if (qhp->ibqp.uobject) { > t4_set_wq_in_error(&qhp->wq); > t4_set_cq_in_error(&rchp->cq); > - if (schp != rchp) > + (*rchp->ibcq.comp_handler)(&rchp->ibcq, > rchp->ibcq.cq_context); > + if (schp != rchp) { > t4_set_cq_in_error(&schp->cq); > + (*schp->ibcq.comp_handler)(&schp->ibcq, > + schp->ibcq.cq_context); > + } > return; > } > __flush_qp(qhp, rchp, schp); > -- > 1.7.1 > > -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html