diff --git a/CHANGELOG.md b/CHANGELOG.md index ee0a72d5c..c0bd3516e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## v20.04: (Upcoming Release) +### nvme + +Export internal nvme_ctrlr_cmd_security_receive/send() APIs as public APIs with "spdk_" +prefix. + ### copy The copy engine library, modules and public APIs have been renamed. Use of the word `copy` diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h index 345c28416..e6318626b 100644 --- a/include/spdk/nvme.h +++ b/include/spdk/nvme.h @@ -1622,6 +1622,51 @@ int spdk_nvme_ctrlr_cmd_set_feature_ns(struct spdk_nvme_ctrlr *ctrlr, uint8_t fe uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg, uint32_t ns_id); +/** + * Receive security protocol data from controller. + * + * This function is thread safe and can be called at any point after spdk_nvme_probe(). + * + * \param ctrlr NVMe controller to use for security receive command submission. + * \param secp Security Protocol that is used. + * \param spsp Security Protocol Specific field. + * \param nssf NVMe Security Specific field. Indicate RPMB target when using Security + * Protocol EAh. + * \param payload The pointer to the payload buffer. + * \param payload_size The size of payload buffer. + * \param cb_fn Callback function to invoke when the command has been completed. + * \param cb_arg Argument to pass to the callback function. + * + * \return 0 if successfully submitted, negated errno if resources could not be allocated + * for this request. + */ +int spdk_nvme_ctrlr_cmd_security_receive(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, + uint16_t spsp, uint8_t nssf, void *payload, + uint32_t payload_size, + spdk_nvme_cmd_cb cb_fn, void *cb_arg); + +/** + * Send security protocol data to controller. + * + * This function is thread safe and can be called at any point after spdk_nvme_probe(). + * + * \param ctrlr NVMe controller to use for security send command submission. + * \param secp Security Protocol that is used. + * \param spsp Security Protocol Specific field. + * \param nssf NVMe Security Specific field. Indicate RPMB target when using Security + * Protocol EAh. + * \param payload The pointer to the payload buffer. + * \param payload_size The size of payload buffer. + * \param cb_fn Callback function to invoke when the command has been completed. + * \param cb_arg Argument to pass to the callback function. + * + * \return 0 if successfully submitted, negated errno if resources could not be allocated + * for this request. + */ +int spdk_nvme_ctrlr_cmd_security_send(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, + uint16_t spsp, uint8_t nssf, void *payload, + uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg); + /** * Receive security protocol data from controller. * diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index b62c0ef6b..c8c7670a0 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -3255,14 +3255,14 @@ spdk_nvme_ctrlr_security_receive(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, return -ENOMEM; } - res = nvme_ctrlr_cmd_security_receive(ctrlr, secp, spsp, nssf, payload, size, - nvme_completion_poll_cb, status); + res = spdk_nvme_ctrlr_cmd_security_receive(ctrlr, secp, spsp, nssf, payload, size, + nvme_completion_poll_cb, status); if (res) { free(status); return res; } if (spdk_nvme_wait_for_completion_robust_lock(ctrlr->adminq, status, &ctrlr->ctrlr_lock)) { - SPDK_ERRLOG("spdk_nvme_ctrlr_security_receive failed!\n"); + SPDK_ERRLOG("spdk_nvme_ctrlr_cmd_security_receive failed!\n"); if (!status->timed_out) { free(status); } @@ -3286,14 +3286,15 @@ spdk_nvme_ctrlr_security_send(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, return -ENOMEM; } - res = nvme_ctrlr_cmd_security_send(ctrlr, secp, spsp, nssf, payload, size, nvme_completion_poll_cb, - status); + res = spdk_nvme_ctrlr_cmd_security_send(ctrlr, secp, spsp, nssf, payload, size, + nvme_completion_poll_cb, + status); if (res) { free(status); return res; } if (spdk_nvme_wait_for_completion_robust_lock(ctrlr->adminq, status, &ctrlr->ctrlr_lock)) { - SPDK_ERRLOG("spdk_nvme_ctrlr_security_send failed!\n"); + SPDK_ERRLOG("spdk_nvme_ctrlr_cmd_security_send failed!\n"); if (!status->timed_out) { free(status); } diff --git a/lib/nvme/nvme_ctrlr_cmd.c b/lib/nvme/nvme_ctrlr_cmd.c index 78c18de68..9c9b0c3c6 100644 --- a/lib/nvme/nvme_ctrlr_cmd.c +++ b/lib/nvme/nvme_ctrlr_cmd.c @@ -686,9 +686,9 @@ nvme_ctrlr_cmd_fw_image_download(struct spdk_nvme_ctrlr *ctrlr, } int -nvme_ctrlr_cmd_security_receive(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, - uint16_t spsp, uint8_t nssf, void *payload, - uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg) +spdk_nvme_ctrlr_cmd_security_receive(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, + uint16_t spsp, uint8_t nssf, void *payload, + uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg) { struct nvme_request *req; struct spdk_nvme_cmd *cmd; @@ -717,9 +717,9 @@ nvme_ctrlr_cmd_security_receive(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, } int -nvme_ctrlr_cmd_security_send(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, - uint16_t spsp, uint8_t nssf, void *payload, - uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg) +spdk_nvme_ctrlr_cmd_security_send(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, + uint16_t spsp, uint8_t nssf, void *payload, + uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg) { struct nvme_request *req; struct spdk_nvme_cmd *cmd; diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index bb71f191b..80e2ed646 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -841,12 +841,6 @@ int nvme_ctrlr_cmd_fw_commit(struct spdk_nvme_ctrlr *ctrlr, int nvme_ctrlr_cmd_fw_image_download(struct spdk_nvme_ctrlr *ctrlr, uint32_t size, uint32_t offset, void *payload, spdk_nvme_cmd_cb cb_fn, void *cb_arg); -int nvme_ctrlr_cmd_security_receive(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, uint16_t spsp, - uint8_t nssf, void *payload, uint32_t payload_size, - spdk_nvme_cmd_cb cb_fn, void *cb_arg); -int nvme_ctrlr_cmd_security_send(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, - uint16_t spsp, uint8_t nssf, void *payload, - uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_sanitize(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, struct spdk_nvme_sanitize *sanitize, uint32_t cdw11, spdk_nvme_cmd_cb cb_fn, void *cb_arg); diff --git a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c index cc2a6e02b..3af78379e 100644 --- a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c +++ b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c @@ -428,23 +428,6 @@ nvme_ctrlr_cmd_fw_image_download(struct spdk_nvme_ctrlr *ctrlr, return 0; } -int -nvme_ctrlr_cmd_security_receive(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, uint16_t spsp, - uint8_t nssf, void *payload, uint32_t payload_size, - spdk_nvme_cmd_cb cb_fn, void *cb_arg) -{ - return 0; -} - -int -nvme_ctrlr_cmd_security_send(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp, - uint16_t spsp, uint8_t nssf, void *payload, - uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg) -{ - return 0; -} - - void nvme_ns_destruct(struct spdk_nvme_ns *ns) {