Loading lib/nvmf/conn.c +3 −17 Original line number Diff line number Diff line Loading @@ -632,24 +632,10 @@ static int nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn) goto handler_error; } /* * Check for any pending rdma_reads to start */ conn->rdma.pending_rdma_read_count--; if (!STAILQ_EMPTY(&conn->rdma.qp_pending_desc)) { tx_desc = STAILQ_FIRST(&conn->rdma.qp_pending_desc); STAILQ_REMOVE_HEAD(&conn->rdma.qp_pending_desc, link); STAILQ_INSERT_TAIL(&conn->rdma.qp_tx_active_desc, tx_desc, link); SPDK_TRACELOG(SPDK_TRACE_RDMA, "Issue rdma read from pending queue: tx_desc %p\n", tx_desc); rc = nvmf_post_rdma_read(conn, tx_desc); rc = nvmf_process_pending_rdma(conn); if (rc) { SPDK_ERRLOG("Unable to post pending rdma read descriptor\n"); goto handler_error; } } break; case IBV_WC_RECV: Loading lib/nvmf/rdma.c +25 −0 Original line number Diff line number Diff line Loading @@ -1070,4 +1070,29 @@ fail: return -ENOMEM; } int nvmf_process_pending_rdma(struct spdk_nvmf_conn *conn) { struct nvme_qp_tx_desc *tx_desc; int rc; conn->rdma.pending_rdma_read_count--; if (!STAILQ_EMPTY(&conn->rdma.qp_pending_desc)) { tx_desc = STAILQ_FIRST(&conn->rdma.qp_pending_desc); STAILQ_REMOVE_HEAD(&conn->rdma.qp_pending_desc, link); STAILQ_INSERT_TAIL(&conn->rdma.qp_tx_active_desc, tx_desc, link); SPDK_TRACELOG(SPDK_TRACE_RDMA, "Issue rdma read from pending queue: tx_desc %p\n", tx_desc); rc = nvmf_post_rdma_read(conn, tx_desc); if (rc) { SPDK_ERRLOG("Unable to post pending rdma read descriptor\n"); return -1; } } return 0; } SPDK_LOG_REGISTER_TRACE_FLAG("rdma", SPDK_TRACE_RDMA) lib/nvmf/rdma.h +1 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ int nvmf_post_rdma_recv(struct spdk_nvmf_conn *conn, struct nvme_qp_rx_desc *rx_desc); int nvmf_post_rdma_send(struct spdk_nvmf_conn *conn, struct nvme_qp_tx_desc *tx_desc); int nvmf_process_pending_rdma(struct spdk_nvmf_conn *conn); int nvmf_rdma_init(void); void nvmf_rdma_conn_cleanup(struct spdk_nvmf_conn *conn); Loading Loading
lib/nvmf/conn.c +3 −17 Original line number Diff line number Diff line Loading @@ -632,24 +632,10 @@ static int nvmf_check_rdma_completions(struct spdk_nvmf_conn *conn) goto handler_error; } /* * Check for any pending rdma_reads to start */ conn->rdma.pending_rdma_read_count--; if (!STAILQ_EMPTY(&conn->rdma.qp_pending_desc)) { tx_desc = STAILQ_FIRST(&conn->rdma.qp_pending_desc); STAILQ_REMOVE_HEAD(&conn->rdma.qp_pending_desc, link); STAILQ_INSERT_TAIL(&conn->rdma.qp_tx_active_desc, tx_desc, link); SPDK_TRACELOG(SPDK_TRACE_RDMA, "Issue rdma read from pending queue: tx_desc %p\n", tx_desc); rc = nvmf_post_rdma_read(conn, tx_desc); rc = nvmf_process_pending_rdma(conn); if (rc) { SPDK_ERRLOG("Unable to post pending rdma read descriptor\n"); goto handler_error; } } break; case IBV_WC_RECV: Loading
lib/nvmf/rdma.c +25 −0 Original line number Diff line number Diff line Loading @@ -1070,4 +1070,29 @@ fail: return -ENOMEM; } int nvmf_process_pending_rdma(struct spdk_nvmf_conn *conn) { struct nvme_qp_tx_desc *tx_desc; int rc; conn->rdma.pending_rdma_read_count--; if (!STAILQ_EMPTY(&conn->rdma.qp_pending_desc)) { tx_desc = STAILQ_FIRST(&conn->rdma.qp_pending_desc); STAILQ_REMOVE_HEAD(&conn->rdma.qp_pending_desc, link); STAILQ_INSERT_TAIL(&conn->rdma.qp_tx_active_desc, tx_desc, link); SPDK_TRACELOG(SPDK_TRACE_RDMA, "Issue rdma read from pending queue: tx_desc %p\n", tx_desc); rc = nvmf_post_rdma_read(conn, tx_desc); if (rc) { SPDK_ERRLOG("Unable to post pending rdma read descriptor\n"); return -1; } } return 0; } SPDK_LOG_REGISTER_TRACE_FLAG("rdma", SPDK_TRACE_RDMA)
lib/nvmf/rdma.h +1 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ int nvmf_post_rdma_recv(struct spdk_nvmf_conn *conn, struct nvme_qp_rx_desc *rx_desc); int nvmf_post_rdma_send(struct spdk_nvmf_conn *conn, struct nvme_qp_tx_desc *tx_desc); int nvmf_process_pending_rdma(struct spdk_nvmf_conn *conn); int nvmf_rdma_init(void); void nvmf_rdma_conn_cleanup(struct spdk_nvmf_conn *conn); Loading