Lines Matching refs:srq

462 static void post_pending_srq_wrs(struct t4_srq *srq)
467 while (srq->pending_in_use) {
468 pwr = &srq->pending_wrs[srq->pending_cidx];
469 srq->sw_rq[srq->pidx].wr_id = pwr->wr_id;
470 srq->sw_rq[srq->pidx].valid = 1;
474 srq->cidx, srq->pidx, srq->wq_pidx,
475 srq->in_use, srq->size,
478 c4iw_copy_wr_to_srq(srq, &pwr->wqe, pwr->len16);
479 t4_srq_consume_pending_wr(srq);
480 t4_srq_produce(srq, pwr->len16);
485 t4_ring_srq_db(srq, idx, pwr->len16, &pwr->wqe);
486 srq->queue[srq->size].status.host_wq_pidx =
487 srq->wq_pidx;
491 static u64 reap_srq_cqe(struct t4_cqe *hw_cqe, struct t4_srq *srq)
493 int rel_idx = CQE_ABS_RQE_IDX(hw_cqe) - srq->rqt_abs_idx;
496 srq->sw_rq[rel_idx].valid = 0;
497 wr_id = srq->sw_rq[rel_idx].wr_id;
499 if (rel_idx == srq->cidx) {
501 __func__, rel_idx, srq->cidx, srq->pidx,
502 srq->wq_pidx, srq->in_use, srq->size,
503 (unsigned long long)srq->sw_rq[rel_idx].wr_id);
504 t4_srq_consume(srq);
505 while (srq->ooo_count && !srq->sw_rq[srq->cidx].valid) {
507 __func__, srq->cidx, srq->pidx,
508 srq->wq_pidx, srq->in_use,
509 srq->size, srq->ooo_count,
511 srq->sw_rq[srq->cidx].wr_id);
512 t4_srq_consume_ooo(srq);
514 if (srq->ooo_count == 0 && srq->pending_in_use)
515 post_pending_srq_wrs(srq);
518 __func__, rel_idx, srq->cidx,
519 srq->pidx, srq->wq_pidx,
520 srq->in_use, srq->size,
521 srq->ooo_count,
522 (unsigned long long)srq->sw_rq[rel_idx].wr_id);
523 t4_srq_produce_ooo(srq);
546 struct t4_srq *srq)
722 if (!srq) {
729 *cookie = reap_srq_cqe(hw_cqe, srq);
755 struct ib_wc *wc, struct c4iw_srq *srq)
765 srq ? &srq->wq : NULL);
777 if (srq && !(srq->flags & T4_SRQ_LIMIT_SUPPORT) && srq->armed &&
778 srq->wq.in_use < srq->srq_limit)
779 c4iw_dispatch_srq_limit_reached_event(srq);
923 struct c4iw_srq *srq = NULL;
936 srq = qhp->srq;
937 if (srq)
938 spin_lock(&srq->lock);
939 ret = __c4iw_poll_cq_one(chp, qhp, wc, srq);
941 if (srq)
942 spin_unlock(&srq->lock);