diff --git a/nvme-wrap.c b/nvme-wrap.c index ca240280df..99467a1607 100644 --- a/nvme-wrap.c +++ b/nvme-wrap.c @@ -119,11 +119,37 @@ int nvme_cli_get_features(struct nvme_dev *dev, return do_admin_args_op(get_features, dev, args); } +int nvme_cli_get_features_arbitration(struct nvme_dev *dev, enum nvme_get_features_sel sel, + __u32 *result) +{ + return do_admin_op(get_features_arbitration, dev, sel, result); +} + +int nvme_cli_get_features_power_mgmt(struct nvme_dev *dev, enum nvme_get_features_sel sel, + __u32 *result) +{ + return do_admin_op(get_features_power_mgmt, dev, sel, result); +} + int nvme_cli_set_features(struct nvme_dev *dev, struct nvme_set_features_args *args) { return do_admin_args_op(set_features, dev, args); } +int nvme_cli_set_features_arbitration(struct nvme_dev *dev, __u8 ab, __u8 lpw, __u8 mpw, __u8 hpw, + bool save, __u32 *result) +{ + if (dev->type == NVME_DEV_DIRECT) + return nvme_set_features_arbitration(dev_fd(dev), ab, lpw, mpw, hpw, save, result); + + return -ENODEV; +} + +int nvme_cli_features_power_mgmt(struct nvme_dev *dev, __u8 ps, __u8 wh, bool save, __u32 *result) +{ + return do_admin_op(set_features_power_mgmt, dev, ps, wh, save, result); +} + int nvme_cli_ns_mgmt_delete(struct nvme_dev *dev, __u32 nsid, __u32 timeout) { if (dev->type == NVME_DEV_DIRECT) diff --git a/nvme-wrap.h b/nvme-wrap.h index 43f4f8082c..4f46c0afc7 100644 --- a/nvme-wrap.h +++ b/nvme-wrap.h @@ -48,8 +48,14 @@ int nvme_cli_sanitize_nvm(struct nvme_dev *dev, int nvme_cli_get_features(struct nvme_dev *dev, struct nvme_get_features_args *args); - +int nvme_cli_get_features_arbitration(struct nvme_dev *dev, enum nvme_get_features_sel sel, + __u32 *result); +int nvme_cli_get_features_power_mgmt(struct nvme_dev *dev, enum nvme_get_features_sel sel, + __u32 *result); int nvme_cli_set_features(struct nvme_dev *dev, struct nvme_set_features_args *args); +int nvme_cli_set_features_arbitration(struct nvme_dev *dev, __u8 ab, __u8 lpw, __u8 mpw, __u8 hpw, + bool save, __u32 *result); +int nvme_set_features_power_mgmt(int fd, __u8 ps, __u8 wh, bool save, __u32 *result); int nvme_cli_get_log(struct nvme_dev *dev, struct nvme_get_log_args *args); int nvme_cli_get_log_page(struct nvme_dev *dev, diff --git a/subprojects/libnvme.wrap b/subprojects/libnvme.wrap index 31ffb184a9..b3aed9d6db 100644 --- a/subprojects/libnvme.wrap +++ b/subprojects/libnvme.wrap @@ -1,6 +1,6 @@ [wrap-git] url = https://github.com/linux-nvme/libnvme.git -revision = 846d61ca17b4752d48bfcf7377b79f4d4ebd4282 +revision = b24390412697c7ef50c965d339592416dfc3b87e [provide] libnvme = libnvme_dep