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

Reply via email to