diff --git a/include/spdk/nvmf.h b/include/spdk/nvmf.h index d188d4e02..c5bfd7fb5 100644 --- a/include/spdk/nvmf.h +++ b/include/spdk/nvmf.h @@ -114,6 +114,144 @@ struct spdk_nvmf_transport_poll_group_stat { }; }; +/** + * Function to be called for each newly discovered qpair. + * + * \param qpair The newly discovered qpair. + * \param cb_arg A context argument passed to this function. + */ +typedef void (*new_qpair_fn)(struct spdk_nvmf_qpair *qpair, void *cb_arg); + +struct spdk_nvmf_transport_ops { + /** + * Transport type + */ + enum spdk_nvme_transport_type type; + + /** + * Initialize transport options to default value + */ + void (*opts_init)(struct spdk_nvmf_transport_opts *opts); + + /** + * Create a transport for the given transport opts + */ + struct spdk_nvmf_transport *(*create)(struct spdk_nvmf_transport_opts *opts); + + /** + * Destroy the transport + */ + int (*destroy)(struct spdk_nvmf_transport *transport); + + /** + * Instruct the transport to accept new connections at the address + * provided. This may be called multiple times. + */ + int (*listen)(struct spdk_nvmf_transport *transport, + const struct spdk_nvme_transport_id *trid); + + /** + * Stop accepting new connections at the given address. + */ + int (*stop_listen)(struct spdk_nvmf_transport *transport, + const struct spdk_nvme_transport_id *trid); + + /** + * Check for new connections on the transport. + */ + void (*accept)(struct spdk_nvmf_transport *transport, new_qpair_fn cb_fn, void *cb_arg); + + /** + * Fill out a discovery log entry for a specific listen address. + */ + void (*listener_discover)(struct spdk_nvmf_transport *transport, + struct spdk_nvme_transport_id *trid, + struct spdk_nvmf_discovery_log_page_entry *entry); + + /** + * Create a new poll group + */ + struct spdk_nvmf_transport_poll_group *(*poll_group_create)(struct spdk_nvmf_transport *transport); + + /** + * Get the polling group of the queue pair optimal for the specific transport + */ + struct spdk_nvmf_transport_poll_group *(*get_optimal_poll_group)(struct spdk_nvmf_qpair *qpair); + + /** + * Destroy a poll group + */ + void (*poll_group_destroy)(struct spdk_nvmf_transport_poll_group *group); + + /** + * Add a qpair to a poll group + */ + int (*poll_group_add)(struct spdk_nvmf_transport_poll_group *group, + struct spdk_nvmf_qpair *qpair); + + /** + * Remove a qpair from a poll group + */ + int (*poll_group_remove)(struct spdk_nvmf_transport_poll_group *group, + struct spdk_nvmf_qpair *qpair); + + /** + * Poll the group to process I/O + */ + int (*poll_group_poll)(struct spdk_nvmf_transport_poll_group *group); + + /* + * Free the request without sending a response + * to the originator. Release memory tied to this request. + */ + int (*req_free)(struct spdk_nvmf_request *req); + + /* + * Signal request completion, which sends a response + * to the originator. + */ + int (*req_complete)(struct spdk_nvmf_request *req); + + /* + * Deinitialize a connection. + */ + void (*qpair_fini)(struct spdk_nvmf_qpair *qpair); + + /* + * Get the peer transport ID for the queue pair. + */ + int (*qpair_get_peer_trid)(struct spdk_nvmf_qpair *qpair, + struct spdk_nvme_transport_id *trid); + + /* + * Get the local transport ID for the queue pair. + */ + int (*qpair_get_local_trid)(struct spdk_nvmf_qpair *qpair, + struct spdk_nvme_transport_id *trid); + + /* + * Get the listener transport ID that accepted this qpair originally. + */ + int (*qpair_get_listen_trid)(struct spdk_nvmf_qpair *qpair, + struct spdk_nvme_transport_id *trid); + + /* + * set the submission queue size of the queue pair + */ + int (*qpair_set_sqsize)(struct spdk_nvmf_qpair *qpair); + + /* + * Get transport poll group statistics + */ + int (*poll_group_get_stat)(struct spdk_nvmf_tgt *tgt, + struct spdk_nvmf_transport_poll_group_stat **stat); + + /* + * Free transport poll group statistics previously allocated with poll_group_get_stat() + */ + void (*poll_group_free_stat)(struct spdk_nvmf_transport_poll_group_stat *stat); +}; + /** * Construct an NVMe-oF target. * @@ -214,14 +352,6 @@ void spdk_nvmf_tgt_listen(struct spdk_nvmf_tgt *tgt, spdk_nvmf_tgt_listen_done_fn cb_fn, void *cb_arg); -/** - * Function to be called for each newly discovered qpair. - * - * \param qpair The newly discovered qpair. - * \param cb_arg A context argument passed to this function. - */ -typedef void (*new_qpair_fn)(struct spdk_nvmf_qpair *qpair, void *cb_arg); - /** * Poll the target for incoming connections. * diff --git a/lib/nvmf/transport.h b/lib/nvmf/transport.h index 06af852d5..57ef9493d 100644 --- a/lib/nvmf/transport.h +++ b/lib/nvmf/transport.h @@ -50,136 +50,6 @@ struct spdk_nvmf_transport { TAILQ_ENTRY(spdk_nvmf_transport) link; }; -struct spdk_nvmf_transport_ops { - /** - * Transport type - */ - enum spdk_nvme_transport_type type; - - /** - * Initialize transport options to default value - */ - void (*opts_init)(struct spdk_nvmf_transport_opts *opts); - - /** - * Create a transport for the given transport opts - */ - struct spdk_nvmf_transport *(*create)(struct spdk_nvmf_transport_opts *opts); - - /** - * Destroy the transport - */ - int (*destroy)(struct spdk_nvmf_transport *transport); - - /** - * Instruct the transport to accept new connections at the address - * provided. This may be called multiple times. - */ - int (*listen)(struct spdk_nvmf_transport *transport, - const struct spdk_nvme_transport_id *trid); - - /** - * Stop accepting new connections at the given address. - */ - int (*stop_listen)(struct spdk_nvmf_transport *transport, - const struct spdk_nvme_transport_id *trid); - - /** - * Check for new connections on the transport. - */ - void (*accept)(struct spdk_nvmf_transport *transport, new_qpair_fn cb_fn, void *cb_arg); - - /** - * Fill out a discovery log entry for a specific listen address. - */ - void (*listener_discover)(struct spdk_nvmf_transport *transport, - struct spdk_nvme_transport_id *trid, - struct spdk_nvmf_discovery_log_page_entry *entry); - - /** - * Create a new poll group - */ - struct spdk_nvmf_transport_poll_group *(*poll_group_create)(struct spdk_nvmf_transport *transport); - - /** - * Get the polling group of the queue pair optimal for the specific transport - */ - struct spdk_nvmf_transport_poll_group *(*get_optimal_poll_group)(struct spdk_nvmf_qpair *qpair); - - /** - * Destroy a poll group - */ - void (*poll_group_destroy)(struct spdk_nvmf_transport_poll_group *group); - - /** - * Add a qpair to a poll group - */ - int (*poll_group_add)(struct spdk_nvmf_transport_poll_group *group, - struct spdk_nvmf_qpair *qpair); - - /** - * Remove a qpair from a poll group - */ - int (*poll_group_remove)(struct spdk_nvmf_transport_poll_group *group, - struct spdk_nvmf_qpair *qpair); - - /** - * Poll the group to process I/O - */ - int (*poll_group_poll)(struct spdk_nvmf_transport_poll_group *group); - - /* - * Free the request without sending a response - * to the originator. Release memory tied to this request. - */ - int (*req_free)(struct spdk_nvmf_request *req); - - /* - * Signal request completion, which sends a response - * to the originator. - */ - int (*req_complete)(struct spdk_nvmf_request *req); - - /* - * Deinitialize a connection. - */ - void (*qpair_fini)(struct spdk_nvmf_qpair *qpair); - - /* - * Get the peer transport ID for the queue pair. - */ - int (*qpair_get_peer_trid)(struct spdk_nvmf_qpair *qpair, - struct spdk_nvme_transport_id *trid); - - /* - * Get the local transport ID for the queue pair. - */ - int (*qpair_get_local_trid)(struct spdk_nvmf_qpair *qpair, - struct spdk_nvme_transport_id *trid); - - /* - * Get the listener transport ID that accepted this qpair originally. - */ - int (*qpair_get_listen_trid)(struct spdk_nvmf_qpair *qpair, - struct spdk_nvme_transport_id *trid); - - /* - * set the submission queue size of the queue pair - */ - int (*qpair_set_sqsize)(struct spdk_nvmf_qpair *qpair); - - /* - * Get transport poll group statistics - */ - int (*poll_group_get_stat)(struct spdk_nvmf_tgt *tgt, - struct spdk_nvmf_transport_poll_group_stat **stat); - - /* - * Free transport poll group statistics previously allocated with poll_group_get_stat() - */ - void (*poll_group_free_stat)(struct spdk_nvmf_transport_poll_group_stat *stat); -}; - int spdk_nvmf_transport_stop_listen(struct spdk_nvmf_transport *transport, const struct spdk_nvme_transport_id *trid);