/** * ib_process_direct_cq - process a CQ in caller context * @cq: CQ to process * @budget: number of CQEs to poll for * * This function is used to process all outstanding CQ entries on a * %IB_POLL_DIRECT CQ. It does not offload CQ processing to a different * context and does not ask for completion interrupts from the HCA. * * Note: for compatibility reasons -1 can be passed in %budget for unlimited * polling. Do not use this feature in new code, it will be removed soon. */ int ib_process_cq_direct(struct ib_cq *cq, int budget) { WARN_ON_ONCE(cq->poll_ctx != IB_POLL_DIRECT); return __ib_process_cq(cq, budget); }
/** * ib_process_direct_cq - process a CQ in caller context * @cq: CQ to process * @budget: number of CQEs to poll for * * This function is used to process all outstanding CQ entries. * It does not offload CQ processing to a different context and does * not ask for completion interrupts from the HCA. * Using direct processing on CQ with non IB_POLL_DIRECT type may trigger * concurrent processing. * * Note: do not pass -1 as %budget unless it is guaranteed that the number * of completions that will be processed is small. */ int ib_process_cq_direct(struct ib_cq *cq, int budget) { struct ib_wc wcs[IB_POLL_BATCH_DIRECT]; return __ib_process_cq(cq, budget, wcs, IB_POLL_BATCH_DIRECT); }