[PATCH 5/9] nvme-fc: centralize admin tagset initialization

Chaitanya Kulkarni chaitanyak at nvidia.com
Fri Jan 28 01:20:11 PST 2022


From: Chaitanya Kulkarni <kch at nvidia.com>

Add and use helper to remove duplicate code for admin tag initialization
for all transports.

Signed-off-by: Chaitanya Kulkarni <kch at nvidia.com>
---
 drivers/nvme/host/fc.c   | 12 +++---------
 drivers/nvme/host/nvme.h | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index 23c896a138a3..ec2afedfa991 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -3529,18 +3529,12 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
 
 	nvme_fc_init_queue(ctrl, 0);
 
-	memset(&ctrl->admin_tag_set, 0, sizeof(ctrl->admin_tag_set));
-	ctrl->admin_tag_set.ops = &nvme_fc_admin_mq_ops;
-	ctrl->admin_tag_set.queue_depth = NVME_AQ_MQ_TAG_DEPTH;
-	ctrl->admin_tag_set.reserved_tags = NVMF_RESERVED_TAGS;
-	ctrl->admin_tag_set.numa_node = ctrl->ctrl.numa_node;
+	nvme_init_admin_tagset(&(ctrl->admin_tag_set), ctrl,
+			       ctrl->ctrl.numa_node, &nvme_fc_admin_mq_ops,
+			       BLK_MQ_F_NO_SCHED, NVMF_RESERVED_TAGS);
 	ctrl->admin_tag_set.cmd_size =
 		struct_size((struct nvme_fcp_op_w_sgl *)NULL, priv,
 			    ctrl->lport->ops->fcprqst_priv_sz);
-	ctrl->admin_tag_set.driver_data = ctrl;
-	ctrl->admin_tag_set.nr_hw_queues = 1;
-	ctrl->admin_tag_set.timeout = NVME_ADMIN_TIMEOUT;
-	ctrl->admin_tag_set.flags = BLK_MQ_F_NO_SCHED;
 
 	ret = blk_mq_alloc_tag_set(&ctrl->admin_tag_set);
 	if (ret)
diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
index f8658f984d64..6a3fd759415a 100644
--- a/drivers/nvme/host/nvme.h
+++ b/drivers/nvme/host/nvme.h
@@ -938,4 +938,21 @@ static inline bool nvme_multi_css(struct nvme_ctrl *ctrl)
 	return (ctrl->ctrl_config & NVME_CC_CSS_MASK) == NVME_CC_CSS_CSI;
 }
 
+static inline void nvme_init_admin_tagset(struct blk_mq_tag_set *set,
+					  void *driver_data, int numa_node,
+					  const struct blk_mq_ops *ops,
+					  unsigned int flags,
+					  unsigned int reserved_tags)
+{
+	memset(set, 0, sizeof(*set));
+	set->driver_data = driver_data;
+	set->numa_node = numa_node;
+	set->ops = ops;
+	set->flags = flags;
+	set->reserved_tags = reserved_tags;
+	set->queue_depth = NVME_AQ_MQ_TAG_DEPTH;
+	set->nr_hw_queues = 1;
+	set->timeout = NVME_ADMIN_TIMEOUT;
+}
+
 #endif /* _NVME_H */
-- 
2.29.0




More information about the Linux-nvme mailing list