xref: /spdk/lib/nvmf/transport.h (revision c6c1234de9e0015e670dd0b51bf6ce39ee0e07bd)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (C) 2016 Intel Corporation. All rights reserved.
3  *   Copyright (c) 2019 Mellanox Technologies LTD. All rights reserved.
4  */
5 
6 #ifndef SPDK_NVMF_TRANSPORT_H
7 #define SPDK_NVMF_TRANSPORT_H
8 
9 #include "spdk/stdinc.h"
10 
11 #include "spdk/nvme.h"
12 #include "spdk/nvmf.h"
13 #include "spdk/nvmf_transport.h"
14 
15 void nvmf_transport_listener_discover(struct spdk_nvmf_transport *transport,
16 				      struct spdk_nvme_transport_id *trid,
17 				      struct spdk_nvmf_discovery_log_page_entry *entry);
18 
19 struct spdk_nvmf_transport_poll_group *nvmf_transport_poll_group_create(
20 	struct spdk_nvmf_transport *transport, struct spdk_nvmf_poll_group *group);
21 struct spdk_nvmf_transport_poll_group *nvmf_transport_get_optimal_poll_group(
22 	struct spdk_nvmf_transport *transport, struct spdk_nvmf_qpair *qpair);
23 
24 void nvmf_transport_poll_group_destroy(struct spdk_nvmf_transport_poll_group *group);
25 
26 int nvmf_transport_poll_group_add(struct spdk_nvmf_transport_poll_group *group,
27 				  struct spdk_nvmf_qpair *qpair);
28 
29 int nvmf_transport_poll_group_remove(struct spdk_nvmf_transport_poll_group *group,
30 				     struct spdk_nvmf_qpair *qpair);
31 
32 int nvmf_transport_poll_group_poll(struct spdk_nvmf_transport_poll_group *group);
33 
34 int nvmf_transport_req_free(struct spdk_nvmf_request *req);
35 
36 int nvmf_transport_req_complete(struct spdk_nvmf_request *req);
37 
38 void nvmf_transport_qpair_fini(struct spdk_nvmf_qpair *qpair,
39 			       spdk_nvmf_transport_qpair_fini_cb cb_fn, void *cb_arg);
40 
41 int nvmf_transport_qpair_get_peer_trid(struct spdk_nvmf_qpair *qpair,
42 				       struct spdk_nvme_transport_id *trid);
43 
44 int nvmf_transport_qpair_get_local_trid(struct spdk_nvmf_qpair *qpair,
45 					struct spdk_nvme_transport_id *trid);
46 
47 int nvmf_transport_qpair_get_listen_trid(struct spdk_nvmf_qpair *qpair,
48 		struct spdk_nvme_transport_id *trid);
49 
50 void nvmf_transport_qpair_abort_request(struct spdk_nvmf_qpair *qpair,
51 					struct spdk_nvmf_request *req);
52 
53 void nvmf_request_free_stripped_buffers(struct spdk_nvmf_request *req,
54 					struct spdk_nvmf_transport_poll_group *group,
55 					struct spdk_nvmf_transport *transport);
56 
57 int nvmf_request_get_stripped_buffers(struct spdk_nvmf_request *req,
58 				      struct spdk_nvmf_transport_poll_group *group,
59 				      struct spdk_nvmf_transport *transport,
60 				      uint32_t length);
61 
62 bool nvmf_request_get_buffers_abort(struct spdk_nvmf_request *req);
63 
64 #endif /* SPDK_NVMF_TRANSPORT_H */
65