1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright (C) 2020 Intel Corporation. 3 * All rights reserved. 4 * Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 5 */ 6 7 #include "common/lib/test_env.c" 8 9 const char * 10 spdk_nvme_transport_id_trtype_str(enum spdk_nvme_transport_type trtype) 11 { 12 switch (trtype) { 13 case SPDK_NVME_TRANSPORT_PCIE: 14 return "PCIe"; 15 case SPDK_NVME_TRANSPORT_RDMA: 16 return "RDMA"; 17 case SPDK_NVME_TRANSPORT_FC: 18 return "FC"; 19 default: 20 return NULL; 21 } 22 } 23 24 int 25 spdk_nvme_transport_id_populate_trstring(struct spdk_nvme_transport_id *trid, const char *trstring) 26 { 27 int len, i; 28 29 if (trstring == NULL) { 30 return -EINVAL; 31 } 32 33 len = strnlen(trstring, SPDK_NVMF_TRSTRING_MAX_LEN); 34 if (len == SPDK_NVMF_TRSTRING_MAX_LEN) { 35 return -EINVAL; 36 } 37 38 /* cast official trstring to uppercase version of input. */ 39 for (i = 0; i < len; i++) { 40 trid->trstring[i] = toupper(trstring[i]); 41 } 42 return 0; 43 } 44 45 DEFINE_STUB(nvme_request_check_timeout, int, (struct nvme_request *req, uint16_t cid, 46 struct spdk_nvme_ctrlr_process *active_proc, uint64_t now_tick), 0); 47 DEFINE_STUB_V(nvme_ctrlr_destruct_finish, (struct spdk_nvme_ctrlr *ctrlr)); 48 DEFINE_STUB(nvme_ctrlr_construct, int, (struct spdk_nvme_ctrlr *ctrlr), 0); 49 DEFINE_STUB_V(nvme_ctrlr_destruct, (struct spdk_nvme_ctrlr *ctrlr)); 50 DEFINE_STUB(nvme_ctrlr_get_vs, int, (struct spdk_nvme_ctrlr *ctrlr, 51 union spdk_nvme_vs_register *vs), 0); 52 DEFINE_STUB(nvme_ctrlr_get_cap, int, (struct spdk_nvme_ctrlr *ctrlr, 53 union spdk_nvme_cap_register *cap), 0); 54 DEFINE_STUB_V(nvme_qpair_deinit, (struct spdk_nvme_qpair *qpair)); 55 DEFINE_STUB_V(spdk_nvme_transport_register, (const struct spdk_nvme_transport_ops *ops)); 56 DEFINE_STUB(nvme_transport_ctrlr_connect_qpair, int, (struct spdk_nvme_ctrlr *ctrlr, 57 struct spdk_nvme_qpair *qpair), 0); 58 DEFINE_STUB_V(nvme_transport_ctrlr_disconnect_qpair_done, (struct spdk_nvme_qpair *qpair)); 59 DEFINE_STUB(nvme_ctrlr_get_current_process, struct spdk_nvme_ctrlr_process *, 60 (struct spdk_nvme_ctrlr *ctrlr), (struct spdk_nvme_ctrlr_process *)(uintptr_t)0x1); 61 DEFINE_STUB(nvme_ctrlr_add_process, int, (struct spdk_nvme_ctrlr *ctrlr, void *devhandle), 0); 62 DEFINE_STUB_V(spdk_nvme_trid_populate_transport, (struct spdk_nvme_transport_id *trid, 63 enum spdk_nvme_transport_type trtype)); 64 DEFINE_STUB(nvme_get_transport, const struct spdk_nvme_transport *, (const char *transport_name), 65 NULL); 66 DEFINE_STUB(spdk_nvme_qpair_process_completions, int32_t, (struct spdk_nvme_qpair *qpair, 67 uint32_t max_completions), 0); 68 DEFINE_STUB_V(nvme_ctrlr_disable, (struct spdk_nvme_ctrlr *ctrlr)); 69 DEFINE_STUB(nvme_ctrlr_disable_poll, int, (struct spdk_nvme_ctrlr *ctrlr), 0); 70 71 /* Fabric transports only */ 72 DEFINE_STUB_V(nvme_ctrlr_disconnect_qpair, (struct spdk_nvme_qpair *qpair)); 73 DEFINE_STUB(nvme_fabric_ctrlr_set_reg_4, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, 74 uint32_t value), 0); 75 DEFINE_STUB(nvme_fabric_ctrlr_set_reg_8, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, 76 uint64_t value), 0); 77 DEFINE_STUB(nvme_fabric_ctrlr_get_reg_4, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, 78 uint32_t *value), 0); 79 DEFINE_STUB(nvme_fabric_ctrlr_get_reg_8, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, 80 uint64_t *value), 0); 81 DEFINE_STUB(nvme_fabric_ctrlr_set_reg_4_async, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, 82 uint32_t value, spdk_nvme_reg_cb cb, void *ctx), 0); 83 DEFINE_STUB(nvme_fabric_ctrlr_set_reg_8_async, int, (struct spdk_nvme_ctrlr *ctrlr, uint32_t offset, 84 uint64_t value, spdk_nvme_reg_cb cb, void *ctx), 0); 85 DEFINE_STUB(nvme_fabric_ctrlr_get_reg_4_async, int, (struct spdk_nvme_ctrlr *ctrlr, 86 uint32_t offset, spdk_nvme_reg_cb cb, void *ctx), 0); 87 DEFINE_STUB(nvme_fabric_ctrlr_get_reg_8_async, int, (struct spdk_nvme_ctrlr *ctrlr, 88 uint32_t offset, spdk_nvme_reg_cb cb, void *ctx), 0); 89 DEFINE_STUB(nvme_fabric_ctrlr_scan, int, (struct spdk_nvme_probe_ctx *probe_ctx, 90 bool direct_connect), 0); 91 DEFINE_STUB(nvme_fabric_qpair_connect, int, (struct spdk_nvme_qpair *qpair, uint32_t num_entries), 92 0); 93 DEFINE_STUB(nvme_fabric_qpair_connect_async, int, (struct spdk_nvme_qpair *qpair, 94 uint32_t num_entries), 0); 95 DEFINE_STUB(nvme_fabric_qpair_connect_poll, int, (struct spdk_nvme_qpair *qpair), 0); 96 DEFINE_STUB_V(nvme_transport_ctrlr_disconnect_qpair, (struct spdk_nvme_ctrlr *ctrlr, 97 struct spdk_nvme_qpair *qpair)); 98 DEFINE_STUB(nvme_poll_group_disconnect_qpair, int, (struct spdk_nvme_qpair *qpair), 0); 99 100 int 101 nvme_qpair_init(struct spdk_nvme_qpair *qpair, uint16_t id, 102 struct spdk_nvme_ctrlr *ctrlr, 103 enum spdk_nvme_qprio qprio, 104 uint32_t num_requests, bool async) 105 { 106 qpair->ctrlr = ctrlr; 107 qpair->id = id; 108 qpair->qprio = qprio; 109 qpair->async = async; 110 qpair->trtype = SPDK_NVME_TRANSPORT_TCP; 111 qpair->poll_group = (void *)0xDEADBEEF; 112 113 return 0; 114 } 115