Hi Steve,
If an application creates its cq for DIRECT poll mode using ib_create_cq() instead of ib_alloc_cq(), and then uses ib_drain_qp() to drain its qp, ib_drain_sq/rq() will always hang forever because cq->wc is NULL. IE ib_create_cq() doesn't allocate cq->wc, and ib_alloc_cq() does. Yet the __ib_process_cq() requires cq->wc to actually complete any completions and calling the cqe_done function. Is this a bug in the CQ core code or the application?
Take a look in __ib_drain_rq/__ib_drain_sq for cq->poll_ctx == IB_POLL_DIRECT. The drain routine polls the completion queue from time to time... -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html