]> www.infradead.org Git - nvme.git/commitdiff
nvmet: Introduce get/set_feature controller operations
authorDamien Le Moal <dlemoal@kernel.org>
Sat, 4 Jan 2025 04:59:45 +0000 (13:59 +0900)
committerKeith Busch <kbusch@kernel.org>
Sat, 11 Jan 2025 03:30:48 +0000 (19:30 -0800)
The implementation of some features cannot always be done generically by
the target core code. Arbitraion and IRQ coalescing features are
examples of such features: their implementation must be provided (at
least partially) by the target controller driver.

Introduce the set_feature() and get_feature() controller fabrics
operations (in struct nvmet_fabrics_ops) to allow supporting such
features.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Tested-by: Rick Wertenbroek <rick.wertenbroek@gmail.com>
Tested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/nvmet.h

index 86bb2852a63ba0f567360d9a36e1ab58bdc66b57..8325de3382eed25f06b758e4000029d43cede3a1 100644 (file)
@@ -416,6 +416,10 @@ struct nvmet_fabrics_ops {
        u16 (*create_cq)(struct nvmet_ctrl *ctrl, u16 cqid, u16 flags,
                         u16 qsize, u64 prp1, u16 irq_vector);
        u16 (*delete_cq)(struct nvmet_ctrl *ctrl, u16 cqid);
+       u16 (*set_feature)(const struct nvmet_ctrl *ctrl, u8 feat,
+                          void *feat_data);
+       u16 (*get_feature)(const struct nvmet_ctrl *ctrl, u8 feat,
+                          void *feat_data);
 };
 
 #define NVMET_MAX_INLINE_BIOVEC        8