static void __gnix_msg_send_fr_complete(struct gnix_fab_req *req, struct gnix_tx_descriptor *txd) { atomic_dec(&req->vc->outstanding_tx_reqs); _gnix_nic_tx_free(req->gnix_ep->nic, txd); /* Schedule VC TX queue in case the VC is 'fenced'. */ _gnix_vc_tx_schedule(req->vc); _gnix_fr_free(req->gnix_ep, req); }
static void __gnix_amo_fr_complete(struct gnix_fab_req *req, struct gnix_tx_descriptor *txd) { if (req->flags & FI_LOCAL_MR) { GNIX_INFO(FI_LOG_EP_DATA, "freeing auto-reg MR: %p\n", req->amo.loc_md); fi_close(&req->amo.loc_md->mr_fid.fid); } atomic_dec(&req->vc->outstanding_tx_reqs); _gnix_nic_tx_free(req->vc->ep->nic, txd); /* Schedule VC TX queue in case the VC is 'fenced'. */ _gnix_vc_tx_schedule(req->vc); _gnix_fr_free(req->vc->ep, req); }
static void __gnix_amo_fr_complete(struct gnix_fab_req *req) { int rc; if (req->flags & FI_LOCAL_MR) { GNIX_INFO(FI_LOG_EP_DATA, "freeing auto-reg MR: %p\n", req->amo.loc_md); rc = fi_close(&req->amo.loc_md->mr_fid.fid); if (rc != FI_SUCCESS) { GNIX_ERR(FI_LOG_DOMAIN, "failed to deregister auto-registered region, " "rc=%d\n", rc); } req->flags &= ~FI_LOCAL_MR; } ofi_atomic_dec32(&req->vc->outstanding_tx_reqs); /* Schedule VC TX queue in case the VC is 'fenced'. */ _gnix_vc_tx_schedule(req->vc); _gnix_fr_free(req->vc->ep, req); }