git: 4bfe52650c14 - main - nvme: share one routine between Delete I/O CQ and Delete I/O SQ

From: Abdelkader Boudih <seuros_at_FreeBSD.org>
Date: Fri, 25 Sep 2026 21:43:20 UTC
The branch main has been updated by seuros:

URL: https://cgit.FreeBSD.org/src/commit/?id=4bfe52650c140694505dd136f24bb3649153124a

commit 4bfe52650c140694505dd136f24bb3649153124a
Author:     Abdelkader Boudih <seuros@FreeBSD.org>
AuthorDate: 2026-09-25 21:42:42 +0000
Commit:     Abdelkader Boudih <seuros@FreeBSD.org>
CommitDate: 2026-09-25 21:42:42 +0000

    nvme: share one routine between Delete I/O CQ and Delete I/O SQ
    
    Reviewed by:    imp, adrian
    Differential Revision:  https://reviews.freebsd.org/D60021
---
 sys/dev/nvme/nvme_ctrlr_cmd.c | 36 +++++++++++++++---------------------
 1 file changed, 15 insertions(+), 21 deletions(-)

diff --git a/sys/dev/nvme/nvme_ctrlr_cmd.c b/sys/dev/nvme/nvme_ctrlr_cmd.c
index 728b49f5e41d..27a2848038d5 100644
--- a/sys/dev/nvme/nvme_ctrlr_cmd.c
+++ b/sys/dev/nvme/nvme_ctrlr_cmd.c
@@ -121,9 +121,9 @@ nvme_ctrlr_cmd_create_io_sq(struct nvme_controller *ctrlr,
 	nvme_ctrlr_submit_admin_request(ctrlr, req);
 }
 
-void
-nvme_ctrlr_cmd_delete_io_cq(struct nvme_controller *ctrlr,
-    struct nvme_qpair *io_que, nvme_cb_fn_t cb_fn, void *cb_arg)
+static void
+nvme_ctrlr_cmd_delete_io_queue(struct nvme_controller *ctrlr,
+    struct nvme_qpair *io_que, uint8_t opc, nvme_cb_fn_t cb_fn, void *cb_arg)
 {
 	struct nvme_request *req;
 	struct nvme_command *cmd;
@@ -131,11 +131,10 @@ nvme_ctrlr_cmd_delete_io_cq(struct nvme_controller *ctrlr,
 	req = nvme_allocate_request_null(M_WAITOK, cb_fn, cb_arg);
 
 	cmd = &req->cmd;
-	cmd->opc = NVME_OPC_DELETE_IO_CQ;
+	cmd->opc = opc;
 
 	/*
-	 * TODO: create a delete io completion queue command data
-	 *  structure.
+	 * TODO: create a delete io queue command data structure.
 	 */
 	cmd->cdw10 = htole32(io_que->id);
 
@@ -143,24 +142,19 @@ nvme_ctrlr_cmd_delete_io_cq(struct nvme_controller *ctrlr,
 }
 
 void
-nvme_ctrlr_cmd_delete_io_sq(struct nvme_controller *ctrlr,
+nvme_ctrlr_cmd_delete_io_cq(struct nvme_controller *ctrlr,
     struct nvme_qpair *io_que, nvme_cb_fn_t cb_fn, void *cb_arg)
 {
-	struct nvme_request *req;
-	struct nvme_command *cmd;
-
-	req = nvme_allocate_request_null(M_WAITOK, cb_fn, cb_arg);
-
-	cmd = &req->cmd;
-	cmd->opc = NVME_OPC_DELETE_IO_SQ;
-
-	/*
-	 * TODO: create a delete io submission queue command data
-	 *  structure.
-	 */
-	cmd->cdw10 = htole32(io_que->id);
+	nvme_ctrlr_cmd_delete_io_queue(ctrlr, io_que, NVME_OPC_DELETE_IO_CQ,
+	    cb_fn, cb_arg);
+}
 
-	nvme_ctrlr_submit_admin_request(ctrlr, req);
+void
+nvme_ctrlr_cmd_delete_io_sq(struct nvme_controller *ctrlr,
+    struct nvme_qpair *io_que, nvme_cb_fn_t cb_fn, void *cb_arg)
+{
+	nvme_ctrlr_cmd_delete_io_queue(ctrlr, io_que, NVME_OPC_DELETE_IO_SQ,
+	    cb_fn, cb_arg);
 }
 
 void