in efawin/verbs.c [464:482]
int efa_poll_cq(struct ibv_cq *ibvcq, int nwc, struct ibv_wc *wc)
{
struct efa_cq *cq = to_efa_cq(ibvcq);
int ret = 0;
int i;
pthread_spin_lock(&cq->lock);
for (i = 0; i < nwc; i++) {
ret = efa_poll_sub_cqs(cq, &wc[i], false);
if (ret) {
if (ret == ENOENT)
ret = 0;
break;
}
}
pthread_spin_unlock(&cq->lock);
return i ? i : -ret;
}