lib/nvme: add function tables for all transports.
Signed-off-by: Seth Howell <seth.howell@intel.com> Change-Id: I4e7af1c42a19346f4abcb17910a41f8104a2de1b Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478871 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
5cddf93b47
commit
e4eef6975c
@ -2273,3 +2273,36 @@ nvme_pcie_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_
|
|||||||
|
|
||||||
return num_completions;
|
return num_completions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const struct spdk_nvme_transport_ops pcie_ops = {
|
||||||
|
.name = "PCIE",
|
||||||
|
.type = SPDK_NVME_TRANSPORT_PCIE,
|
||||||
|
.ctrlr_construct = nvme_pcie_ctrlr_construct,
|
||||||
|
.ctrlr_scan = nvme_pcie_ctrlr_scan,
|
||||||
|
.ctrlr_destruct = nvme_pcie_ctrlr_destruct,
|
||||||
|
.ctrlr_enable = nvme_pcie_ctrlr_enable,
|
||||||
|
|
||||||
|
.ctrlr_set_reg_4 = nvme_pcie_ctrlr_set_reg_4,
|
||||||
|
.ctrlr_set_reg_8 = nvme_pcie_ctrlr_set_reg_8,
|
||||||
|
.ctrlr_get_reg_4 = nvme_pcie_ctrlr_get_reg_4,
|
||||||
|
.ctrlr_get_reg_8 = nvme_pcie_ctrlr_get_reg_8,
|
||||||
|
|
||||||
|
.ctrlr_get_max_xfer_size = nvme_pcie_ctrlr_get_max_xfer_size,
|
||||||
|
.ctrlr_get_max_sges = nvme_pcie_ctrlr_get_max_sges,
|
||||||
|
|
||||||
|
.ctrlr_alloc_cmb_io_buffer = nvme_pcie_ctrlr_alloc_cmb_io_buffer,
|
||||||
|
.ctrlr_free_cmb_io_buffer = nvme_pcie_ctrlr_free_cmb_io_buffer,
|
||||||
|
|
||||||
|
.ctrlr_create_io_qpair = nvme_pcie_ctrlr_create_io_qpair,
|
||||||
|
.ctrlr_delete_io_qpair = nvme_pcie_ctrlr_delete_io_qpair,
|
||||||
|
.ctrlr_connect_qpair = nvme_pcie_ctrlr_connect_qpair,
|
||||||
|
.ctrlr_disconnect_qpair = nvme_pcie_ctrlr_disconnect_qpair,
|
||||||
|
|
||||||
|
.qpair_abort_reqs = nvme_pcie_qpair_abort_reqs,
|
||||||
|
.qpair_reset = nvme_pcie_qpair_reset,
|
||||||
|
.qpair_submit_request = nvme_pcie_qpair_submit_request,
|
||||||
|
.qpair_process_completions = nvme_pcie_qpair_process_completions,
|
||||||
|
.admin_qpair_abort_aers = nvme_pcie_admin_qpair_abort_aers,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_NVME_TRANSPORT_REGISTER(pcie, &pcie_ops);
|
||||||
|
@ -2161,3 +2161,36 @@ spdk_nvme_rdma_init_hooks(struct spdk_nvme_rdma_hooks *hooks)
|
|||||||
{
|
{
|
||||||
g_nvme_hooks = *hooks;
|
g_nvme_hooks = *hooks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const struct spdk_nvme_transport_ops rdma_ops = {
|
||||||
|
.name = "RDMA",
|
||||||
|
.type = SPDK_NVME_TRANSPORT_RDMA,
|
||||||
|
.ctrlr_construct = nvme_rdma_ctrlr_construct,
|
||||||
|
.ctrlr_scan = nvme_fabric_ctrlr_scan,
|
||||||
|
.ctrlr_destruct = nvme_rdma_ctrlr_destruct,
|
||||||
|
.ctrlr_enable = nvme_rdma_ctrlr_enable,
|
||||||
|
|
||||||
|
.ctrlr_set_reg_4 = nvme_fabric_ctrlr_set_reg_4,
|
||||||
|
.ctrlr_set_reg_8 = nvme_fabric_ctrlr_set_reg_8,
|
||||||
|
.ctrlr_get_reg_4 = nvme_fabric_ctrlr_get_reg_4,
|
||||||
|
.ctrlr_get_reg_8 = nvme_fabric_ctrlr_get_reg_8,
|
||||||
|
|
||||||
|
.ctrlr_get_max_xfer_size = nvme_rdma_ctrlr_get_max_xfer_size,
|
||||||
|
.ctrlr_get_max_sges = nvme_rdma_ctrlr_get_max_sges,
|
||||||
|
|
||||||
|
.ctrlr_alloc_cmb_io_buffer = nvme_rdma_ctrlr_alloc_cmb_io_buffer,
|
||||||
|
.ctrlr_free_cmb_io_buffer = nvme_rdma_ctrlr_free_cmb_io_buffer,
|
||||||
|
|
||||||
|
.ctrlr_create_io_qpair = nvme_rdma_ctrlr_create_io_qpair,
|
||||||
|
.ctrlr_delete_io_qpair = nvme_rdma_ctrlr_delete_io_qpair,
|
||||||
|
.ctrlr_connect_qpair = nvme_rdma_ctrlr_connect_qpair,
|
||||||
|
.ctrlr_disconnect_qpair = nvme_rdma_ctrlr_disconnect_qpair,
|
||||||
|
|
||||||
|
.qpair_abort_reqs = nvme_rdma_qpair_abort_reqs,
|
||||||
|
.qpair_reset = nvme_rdma_qpair_reset,
|
||||||
|
.qpair_submit_request = nvme_rdma_qpair_submit_request,
|
||||||
|
.qpair_process_completions = nvme_rdma_qpair_process_completions,
|
||||||
|
.admin_qpair_abort_aers = nvme_rdma_admin_qpair_abort_aers,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_NVME_TRANSPORT_REGISTER(rdma, &rdma_ops);
|
||||||
|
@ -1817,3 +1817,36 @@ nvme_tcp_admin_qpair_abort_aers(struct spdk_nvme_qpair *qpair)
|
|||||||
nvme_tcp_req_put(tqpair, tcp_req);
|
nvme_tcp_req_put(tqpair, tcp_req);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const struct spdk_nvme_transport_ops tcp_ops = {
|
||||||
|
.name = "TCP",
|
||||||
|
.type = SPDK_NVME_TRANSPORT_TCP,
|
||||||
|
.ctrlr_construct = nvme_tcp_ctrlr_construct,
|
||||||
|
.ctrlr_scan = nvme_fabric_ctrlr_scan,
|
||||||
|
.ctrlr_destruct = nvme_tcp_ctrlr_destruct,
|
||||||
|
.ctrlr_enable = nvme_tcp_ctrlr_enable,
|
||||||
|
|
||||||
|
.ctrlr_set_reg_4 = nvme_fabric_ctrlr_set_reg_4,
|
||||||
|
.ctrlr_set_reg_8 = nvme_fabric_ctrlr_set_reg_8,
|
||||||
|
.ctrlr_get_reg_4 = nvme_fabric_ctrlr_get_reg_4,
|
||||||
|
.ctrlr_get_reg_8 = nvme_fabric_ctrlr_get_reg_8,
|
||||||
|
|
||||||
|
.ctrlr_get_max_xfer_size = nvme_tcp_ctrlr_get_max_xfer_size,
|
||||||
|
.ctrlr_get_max_sges = nvme_tcp_ctrlr_get_max_sges,
|
||||||
|
|
||||||
|
.ctrlr_alloc_cmb_io_buffer = nvme_tcp_ctrlr_alloc_cmb_io_buffer,
|
||||||
|
.ctrlr_free_cmb_io_buffer = nvme_tcp_ctrlr_free_cmb_io_buffer,
|
||||||
|
|
||||||
|
.ctrlr_create_io_qpair = nvme_tcp_ctrlr_create_io_qpair,
|
||||||
|
.ctrlr_delete_io_qpair = nvme_tcp_ctrlr_delete_io_qpair,
|
||||||
|
.ctrlr_connect_qpair = nvme_tcp_ctrlr_connect_qpair,
|
||||||
|
.ctrlr_disconnect_qpair = nvme_tcp_ctrlr_disconnect_qpair,
|
||||||
|
|
||||||
|
.qpair_abort_reqs = nvme_tcp_qpair_abort_reqs,
|
||||||
|
.qpair_reset = nvme_tcp_qpair_reset,
|
||||||
|
.qpair_submit_request = nvme_tcp_qpair_submit_request,
|
||||||
|
.qpair_process_completions = nvme_tcp_qpair_process_completions,
|
||||||
|
.admin_qpair_abort_aers = nvme_tcp_admin_qpair_abort_aers,
|
||||||
|
};
|
||||||
|
|
||||||
|
SPDK_NVME_TRANSPORT_REGISTER(tcp, &tcp_ops);
|
||||||
|
@ -67,3 +67,44 @@ spdk_nvme_transport_id_populate_trstring(struct spdk_nvme_transport_id *trid, co
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_STUB(nvme_request_check_timeout, int, (struct nvme_request *req, uint16_t cid,
|
||||||
|
struct spdk_nvme_ctrlr_process *active_proc, uint64_t now_tick), 0);
|
||||||
|
DEFINE_STUB_V(nvme_ctrlr_destruct_finish, (struct spdk_nvme_ctrlr *ctrlr));
|
||||||
|
DEFINE_STUB(nvme_ctrlr_construct, int, (struct spdk_nvme_ctrlr *ctrlr), 0);
|
||||||
|
DEFINE_STUB_V(nvme_ctrlr_destruct, (struct spdk_nvme_ctrlr *ctrlr));
|
||||||
|
DEFINE_STUB_V(nvme_ctrlr_init_cap, (struct spdk_nvme_ctrlr *ctrlr,
|
||||||
|
const union spdk_nvme_cap_register *cap,
|
||||||
|
const union spdk_nvme_vs_register *vs));
|
||||||
|
DEFINE_STUB(nvme_ctrlr_get_vs, int, (struct spdk_nvme_ctrlr *ctrlr,
|
||||||
|
union spdk_nvme_vs_register *vs), 0);
|
||||||
|
DEFINE_STUB(nvme_ctrlr_get_cap, int, (struct spdk_nvme_ctrlr *ctrlr,
|
||||||
|
union spdk_nvme_cap_register *cap), 0);
|
||||||
|
DEFINE_STUB(nvme_qpair_init, int, (struct spdk_nvme_qpair *qpair, uint16_t id,
|
||||||
|
struct spdk_nvme_ctrlr *ctrlr,
|
||||||
|
enum spdk_nvme_qprio qprio,
|
||||||
|
uint32_t num_requests), 0);
|
||||||
|
DEFINE_STUB_V(nvme_qpair_deinit, (struct spdk_nvme_qpair *qpair));
|
||||||
|
DEFINE_STUB_V(spdk_nvme_transport_register, (const struct spdk_nvme_transport_ops *ops));
|
||||||
|
DEFINE_STUB(nvme_transport_ctrlr_connect_qpair, int, (struct spdk_nvme_ctrlr *ctrlr,
|
||||||
|
struct spdk_nvme_qpair *qpair), 0);
|
||||||
|
DEFINE_STUB(spdk_nvme_ctrlr_get_current_process, struct spdk_nvme_ctrlr_process *,
|
||||||
|
(struct spdk_nvme_ctrlr *ctrlr), (struct spdk_nvme_ctrlr_process *)(uintptr_t)0x1);
|
||||||
|
DEFINE_STUB(nvme_ctrlr_add_process, int, (struct spdk_nvme_ctrlr *ctrlr, void *devhandle), 0);
|
||||||
|
DEFINE_STUB_V(spdk_nvme_trid_populate_transport, (struct spdk_nvme_transport_id *trid,
|
||||||
|
enum spdk_nvme_transport_type trtype));
|
||||||
|
|
||||||
|
/* Fabric transports only */
|
||||||
|
DEFINE_STUB_V(nvme_ctrlr_disconnect_qpair, (struct spdk_nvme_qpair *qpair));
|
||||||
|
DEFINE_STUB(nvme_fabric_ctrlr_set_reg_4, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset,
|
||||||
|
uint32_t value), 0);
|
||||||
|
DEFINE_STUB(nvme_fabric_ctrlr_set_reg_8, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset,
|
||||||
|
uint64_t value), 0);
|
||||||
|
DEFINE_STUB(nvme_fabric_ctrlr_get_reg_4, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset,
|
||||||
|
uint32_t *value), 0);
|
||||||
|
DEFINE_STUB(nvme_fabric_ctrlr_get_reg_8, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset,
|
||||||
|
uint64_t *value), 0);
|
||||||
|
DEFINE_STUB(nvme_fabric_ctrlr_scan, int, (struct spdk_nvme_probe_ctx *probe_ctx,
|
||||||
|
bool direct_connect), 0);
|
||||||
|
DEFINE_STUB(nvme_fabric_qpair_connect, int, (struct spdk_nvme_qpair *qpair, uint32_t num_entries),
|
||||||
|
0);
|
||||||
|
@ -40,6 +40,40 @@
|
|||||||
#include "nvme/nvme_pcie.c"
|
#include "nvme/nvme_pcie.c"
|
||||||
#include "common/lib/nvme/common_stubs.h"
|
#include "common/lib/nvme/common_stubs.h"
|
||||||
|
|
||||||
|
pid_t g_spdk_nvme_pid;
|
||||||
|
DEFINE_STUB(spdk_mem_register, int, (void *vaddr, size_t len), 0);
|
||||||
|
DEFINE_STUB(spdk_mem_unregister, int, (void *vaddr, size_t len), 0);
|
||||||
|
|
||||||
|
DEFINE_STUB(nvme_get_quirks, uint64_t, (const struct spdk_pci_id *id), 0);
|
||||||
|
|
||||||
|
DEFINE_STUB(spdk_nvme_wait_for_completion, int,
|
||||||
|
(struct spdk_nvme_qpair *qpair,
|
||||||
|
struct nvme_completion_poll_status *status), 0);
|
||||||
|
DEFINE_STUB_V(nvme_completion_poll_cb, (void *arg, const struct spdk_nvme_cpl *cpl));
|
||||||
|
|
||||||
|
DEFINE_STUB(nvme_ctrlr_submit_admin_request, int, (struct spdk_nvme_ctrlr *ctrlr,
|
||||||
|
struct nvme_request *req), 0);
|
||||||
|
DEFINE_STUB_V(nvme_ctrlr_free_processes, (struct spdk_nvme_ctrlr *ctrlr));
|
||||||
|
DEFINE_STUB(nvme_ctrlr_proc_get_devhandle, struct spdk_pci_device *,
|
||||||
|
(struct spdk_nvme_ctrlr *ctrlr), NULL);
|
||||||
|
|
||||||
|
DEFINE_STUB(spdk_pci_device_map_bar, int, (struct spdk_pci_device *dev, uint32_t bar,
|
||||||
|
void **mapped_addr, uint64_t *phys_addr, uint64_t *size), 0);
|
||||||
|
DEFINE_STUB(spdk_pci_device_unmap_bar, int, (struct spdk_pci_device *dev, uint32_t bar, void *addr),
|
||||||
|
0);
|
||||||
|
DEFINE_STUB(spdk_pci_device_attach, int, (struct spdk_pci_driver *driver, spdk_pci_enum_cb enum_cb,
|
||||||
|
void *enum_ctx, struct spdk_pci_addr *pci_address), 0);
|
||||||
|
DEFINE_STUB(spdk_pci_device_claim, int, (struct spdk_pci_device *dev), 0);
|
||||||
|
DEFINE_STUB_V(spdk_pci_device_unclaim, (struct spdk_pci_device *dev));
|
||||||
|
DEFINE_STUB_V(spdk_pci_device_detach, (struct spdk_pci_device *device));
|
||||||
|
DEFINE_STUB(spdk_pci_device_cfg_write32, int, (struct spdk_pci_device *dev, uint32_t value,
|
||||||
|
uint32_t offset), 0);
|
||||||
|
DEFINE_STUB(spdk_pci_device_cfg_read32, int, (struct spdk_pci_device *dev, uint32_t *value,
|
||||||
|
uint32_t offset), 0);
|
||||||
|
DEFINE_STUB(spdk_pci_device_get_id, struct spdk_pci_id, (struct spdk_pci_device *dev), {0})
|
||||||
|
|
||||||
|
DEFINE_STUB(spdk_uevent_connect, int, (void), 0);
|
||||||
|
|
||||||
struct spdk_log_flag SPDK_LOG_NVME = {
|
struct spdk_log_flag SPDK_LOG_NVME = {
|
||||||
.name = "nvme",
|
.name = "nvme",
|
||||||
.enabled = false,
|
.enabled = false,
|
||||||
@ -108,11 +142,8 @@ spdk_vtophys(void *buf, uint64_t *size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_STUB(spdk_pci_device_get_addr, struct spdk_pci_addr, (struct spdk_pci_device *dev), {});
|
DEFINE_STUB(spdk_pci_device_get_addr, struct spdk_pci_addr, (struct spdk_pci_device *dev), {});
|
||||||
DEFINE_STUB(nvme_ctrlr_add_process, int, (struct spdk_nvme_ctrlr *ctrlr, void *devhandle), 0);
|
|
||||||
DEFINE_STUB(nvme_ctrlr_probe, int, (const struct spdk_nvme_transport_id *trid,
|
DEFINE_STUB(nvme_ctrlr_probe, int, (const struct spdk_nvme_transport_id *trid,
|
||||||
struct spdk_nvme_probe_ctx *probe_ctx, void *devhandle), 0);
|
struct spdk_nvme_probe_ctx *probe_ctx, void *devhandle), 0);
|
||||||
DEFINE_STUB(spdk_nvme_ctrlr_get_current_process, struct spdk_nvme_ctrlr_process *,
|
|
||||||
(struct spdk_nvme_ctrlr *ctrlr), NULL);
|
|
||||||
DEFINE_STUB(spdk_pci_device_is_removed, bool, (struct spdk_pci_device *dev), false);
|
DEFINE_STUB(spdk_pci_device_is_removed, bool, (struct spdk_pci_device *dev), false);
|
||||||
DEFINE_STUB(spdk_nvme_get_ctrlr_by_trid_unsafe, struct spdk_nvme_ctrlr *,
|
DEFINE_STUB(spdk_nvme_get_ctrlr_by_trid_unsafe, struct spdk_nvme_ctrlr *,
|
||||||
(const struct spdk_nvme_transport_id *trid), NULL);
|
(const struct spdk_nvme_transport_id *trid), NULL);
|
||||||
@ -125,8 +156,6 @@ DEFINE_STUB_V(spdk_nvme_qpair_print_command, (struct spdk_nvme_qpair *qpair,
|
|||||||
struct spdk_nvme_cmd *cmd));
|
struct spdk_nvme_cmd *cmd));
|
||||||
DEFINE_STUB_V(spdk_nvme_qpair_print_completion, (struct spdk_nvme_qpair *qpair,
|
DEFINE_STUB_V(spdk_nvme_qpair_print_completion, (struct spdk_nvme_qpair *qpair,
|
||||||
struct spdk_nvme_cpl *cpl));
|
struct spdk_nvme_cpl *cpl));
|
||||||
DEFINE_STUB_V(spdk_nvme_trid_populate_transport, (struct spdk_nvme_transport_id *trid,
|
|
||||||
enum spdk_nvme_transport_type trtype));
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
prp_list_prep(struct nvme_tracker *tr, struct nvme_request *req, uint32_t *prp_index)
|
prp_list_prep(struct nvme_tracker *tr, struct nvme_request *req, uint32_t *prp_index)
|
||||||
|
@ -40,10 +40,16 @@ SPDK_LOG_REGISTER_COMPONENT("nvme", SPDK_LOG_NVME)
|
|||||||
|
|
||||||
DEFINE_STUB(spdk_mem_map_set_translation, int, (struct spdk_mem_map *map, uint64_t vaddr,
|
DEFINE_STUB(spdk_mem_map_set_translation, int, (struct spdk_mem_map *map, uint64_t vaddr,
|
||||||
uint64_t size, uint64_t translation), 0);
|
uint64_t size, uint64_t translation), 0);
|
||||||
|
|
||||||
DEFINE_STUB(spdk_mem_map_clear_translation, int, (struct spdk_mem_map *map, uint64_t vaddr,
|
DEFINE_STUB(spdk_mem_map_clear_translation, int, (struct spdk_mem_map *map, uint64_t vaddr,
|
||||||
uint64_t size), 0);
|
uint64_t size), 0);
|
||||||
|
|
||||||
|
DEFINE_STUB(spdk_mem_map_alloc, struct spdk_mem_map *, (uint64_t default_translation,
|
||||||
|
const struct spdk_mem_map_ops *ops, void *cb_ctx), NULL);
|
||||||
|
DEFINE_STUB_V(spdk_mem_map_free, (struct spdk_mem_map **pmap));
|
||||||
|
|
||||||
|
DEFINE_STUB_V(nvme_transport_ctrlr_disconnect_qpair, (struct spdk_nvme_ctrlr *ctrlr,
|
||||||
|
struct spdk_nvme_qpair *qpair));
|
||||||
|
|
||||||
/* used to mock out having to split an SGL over a memory region */
|
/* used to mock out having to split an SGL over a memory region */
|
||||||
uint64_t g_mr_size;
|
uint64_t g_mr_size;
|
||||||
struct ibv_mr g_nvme_rdma_mr;
|
struct ibv_mr g_nvme_rdma_mr;
|
||||||
|
@ -42,17 +42,9 @@
|
|||||||
|
|
||||||
SPDK_LOG_REGISTER_COMPONENT("nvme", SPDK_LOG_NVME);
|
SPDK_LOG_REGISTER_COMPONENT("nvme", SPDK_LOG_NVME);
|
||||||
|
|
||||||
DEFINE_STUB(nvme_request_check_timeout, int, (struct nvme_request *req, uint16_t cid,
|
|
||||||
struct spdk_nvme_ctrlr_process *active_proc, uint64_t now_tick), 1);
|
|
||||||
|
|
||||||
DEFINE_STUB(nvme_qpair_submit_request,
|
DEFINE_STUB(nvme_qpair_submit_request,
|
||||||
int, (struct spdk_nvme_qpair *qpair, struct nvme_request *req), 0);
|
int, (struct spdk_nvme_qpair *qpair, struct nvme_request *req), 0);
|
||||||
|
|
||||||
DEFINE_STUB(spdk_nvme_ctrlr_get_current_process, struct spdk_nvme_ctrlr_process *,
|
|
||||||
(struct spdk_nvme_ctrlr *ctrlr), (struct spdk_nvme_ctrlr_process *)(uintptr_t)0x1);
|
|
||||||
|
|
||||||
DEFINE_STUB_V(nvme_ctrlr_disconnect_qpair, (struct spdk_nvme_qpair *qpair));
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_nvme_tcp_pdu_set_data_buf(void)
|
test_nvme_tcp_pdu_set_data_buf(void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user