You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cvm/src/packages/exec-nvme-cli/controller-field-mapping.js

129 lines
2.5 KiB
JavaScript

"use strict";
const { B } = require("../unit-bytes-iec");
const thirdFourthByteMask = parseInt("11111111111111110000000000000000", 2);
const secondByteMask = parseInt("00000000000000001111111100000000", 2);
const firstByteMask = parseInt("00000000000000000000000011111111", 2);
module.exports = {
vid: "vendorID",
ssvi: "subsystemVendorID",
sn: { name: "serialNumber", transform: (string) => string.trim() },
mn: { name: "modelNumber", transform: (string) => string.trim() },
fr: "firmwareRevision",
rab: { name: "recommendedArbitrationBurst", transform: (value) => 2 ** value }, // FIXME: Is this correct?
ieee: "ouiIdentifier",
cmic: { name: "cmicCapabilities", transform: (bitField) => {
return {
anar: bitField & 8,
virtualFunction: bitField & 4,
multipleControllers: bitField & 2,
multipleSubsystemPorts: bitField & 1
};
}},
mdts: { name: "maximumDataTransferSize", transform: (value) => {
if (value === 0) {
return null;
} else {
// Note: counted in multiples of the minimum memory page size
// TODO: Can we grab this from somewhere and return the value in bytes instead?
return 2 ** value;
}
}},
cntlid: "controllerID",
ver: { name: "protocolVersion", transform: (value) => {
return {
major: value & thirdFourthByteMask,
minor: value & secondByteMask,
tertiary: value & firstByteMask
};
}},
// MARKER
rtd3r: { name: "rtd3ResumeLatency", transform: (value) => {
if (value === 0) {
return null;
} else {
// TODO: Unit?
return value;
}
}},
rtd3e: { name: "rtd3EntryLatency", transform: (value) => {
if (value === 0) {
return null;
} else {
// TODO: Unit?
return value;
}
}},
// TODO:
// oaes,
// ctratt,
// rrls,
// crdt1,
// crdt2,
// crdt3,
// nvmsr,
// vwci,
// mec,
// oacs,
// acl,
// aerl,
// frmw,
// lpa,
// elpe,
// npss,
// avscc,
// apsta,
// wctemp,
// cctemp,
// mtfa,
// hmpre,
// hmmin,
tnvmcap: { name: "totalSpace", transform: (value) => B(value) },
unvmcap: { name: "freeSpace", transform: (value) => B(value) },
// TOOD:
// rpmbs,
// edstt,
// dsto,
// fwug,
// kas,
// hctma,
// mntmt,
// mxtmt,
// sanicap,
// hmminds,
// hmmaxd,
// nsetidmax,
// anatt,
// anacap,
// anagrpmax,
// nanagrpid,
// domainid,
// megcap,
// sqes,
// cqes,
// maxcmd,
// nn,
// oncs,
// fuses,
// fna,
// vwc,
// awun,
// awupf,
// icsvscc,
// nwpc,
// acwu,
// ocfs,
// sgls,
// maxdna,
// maxcna,
// ioccsz,
// iorcsz,
// icdoff,
// fcatt,
// msdbd,
// ofcs,
// psds
};