unsigned uct_rc_verbs_iface_post_recv_always(uct_rc_iface_t *iface, unsigned max) { struct ibv_recv_wr *bad_wr; uct_ib_recv_wr_t *wrs; unsigned count; int ret; wrs = ucs_alloca(sizeof *wrs * max); count = uct_ib_iface_prepare_rx_wrs(&iface->super, &iface->rx.mp, wrs, max); if (ucs_unlikely(count == 0)) { return 0; } UCT_IB_INSTRUMENT_RECORD_RECV_WR_LEN("uct_rc_iface_post_recv_always", &wrs[0].ibwr); ret = ibv_post_srq_recv(iface->rx.srq, &wrs[0].ibwr, &bad_wr); if (ret != 0) { ucs_fatal("ibv_post_srq_recv() returned %d: %m", ret); } iface->rx.available -= count; return count; }
static UCS_F_NOINLINE void uct_ud_verbs_iface_post_recv_always(uct_ud_verbs_iface_t *iface, int max) { struct ibv_recv_wr *bad_wr; uct_ib_recv_wr_t *wrs; unsigned count; int ret; wrs = ucs_alloca(sizeof *wrs * max); count = uct_ib_iface_prepare_rx_wrs(&iface->super.super, &iface->super.rx.mp, wrs, max); if (count == 0) { return; } ret = ibv_post_recv(iface->super.qp, &wrs[0].ibwr, &bad_wr); if (ret != 0) { ucs_fatal("ibv_post_recv() returned %d: %m", ret); } iface->super.rx.available -= count; }