aboutsummaryrefslogtreecommitdiff
path: root/sbin/nvmecontrol/firmware.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/nvmecontrol/firmware.c')
-rw-r--r--sbin/nvmecontrol/firmware.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/sbin/nvmecontrol/firmware.c b/sbin/nvmecontrol/firmware.c
index 256847ef8ac2..c1c26c310627 100644
--- a/sbin/nvmecontrol/firmware.c
+++ b/sbin/nvmecontrol/firmware.c
@@ -29,7 +29,6 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/ioccom.h>
#include <sys/stat.h>
@@ -103,9 +102,10 @@ slot_has_valid_firmware(int fd, int slot)
int has_fw = false;
read_logpage(fd, NVME_LOG_FIRMWARE_SLOT,
- NVME_GLOBAL_NAMESPACE_TAG, 0, 0, 0, &fw, sizeof(fw));
+ NVME_GLOBAL_NAMESPACE_TAG, 0, 0, 0, 0, 0, 0, 0,
+ &fw, sizeof(fw));
- if (fw.revision[slot-1] != 0LLU)
+ if (fw.revision[slot-1][0] != '\0')
has_fw = true;
return (has_fw);
@@ -278,21 +278,18 @@ firmware(const struct cmd *f, int argc, char *argv[])
if (read_controller_data(fd, &cdata))
errx(EX_IOERR, "Identify request failed");
- oacs_fw = (cdata.oacs >> NVME_CTRLR_DATA_OACS_FIRMWARE_SHIFT) &
- NVME_CTRLR_DATA_OACS_FIRMWARE_MASK;
+ oacs_fw = NVMEV(NVME_CTRLR_DATA_OACS_FIRMWARE, cdata.oacs);
if (oacs_fw == 0)
errx(EX_UNAVAILABLE,
"controller does not support firmware activate/download");
- fw_slot1_ro = (cdata.frmw >> NVME_CTRLR_DATA_FRMW_SLOT1_RO_SHIFT) &
- NVME_CTRLR_DATA_FRMW_SLOT1_RO_MASK;
+ fw_slot1_ro = NVMEV(NVME_CTRLR_DATA_FRMW_SLOT1_RO, cdata.frmw);
if (opt.fw_img && opt.slot == 1 && fw_slot1_ro)
errx(EX_UNAVAILABLE, "slot %d is marked as read only", opt.slot);
- fw_num_slots = (cdata.frmw >> NVME_CTRLR_DATA_FRMW_NUM_SLOTS_SHIFT) &
- NVME_CTRLR_DATA_FRMW_NUM_SLOTS_MASK;
+ fw_num_slots = NVMEV(NVME_CTRLR_DATA_FRMW_NUM_SLOTS, cdata.frmw);
if (opt.slot > fw_num_slots)
errx(EX_UNAVAILABLE,