return 0;
}
-static int get_log_telemetry_ctrl(struct nvme_dev *dev, size_t size,
+static int get_log_telemetry_ctrl(struct nvme_dev *dev, bool rae, size_t size,
struct nvme_telemetry_log **buf)
{
struct nvme_telemetry_log *log;
if (!log)
return -errno;
- err = nvme_cli_get_log_telemetry_ctrl(dev, true, 0, size, log);
+ err = nvme_cli_get_log_telemetry_ctrl(dev, rae, 0, size, log);
if (err) {
free(log);
return -errno;
}
static int __get_telemetry_log_ctrl(struct nvme_dev *dev,
+ bool rae,
enum nvme_telemetry_da da,
size_t *size,
struct nvme_telemetry_log **buf)
goto free;
if (!log->ctrlavail) {
+ if (!rae) {
+ err = nvme_cli_get_log_telemetry_ctrl(dev, rae, 0,
+ NVME_LOG_TELEM_BLOCK_SIZE,
+ log);
+ goto free;
+ }
+
*size = NVME_LOG_TELEM_BLOCK_SIZE;
*buf = log;
if (err)
goto free;
- return get_log_telemetry_ctrl(dev, *size, buf);
+ return get_log_telemetry_ctrl(dev, rae, *size, buf);
free:
free(log);
__u32 host_gen;
bool ctrl_init;
int data_area;
+ bool rae;
};
struct config cfg = {
.file_name = NULL,
.host_gen = 1,
.ctrl_init = false,
.data_area = 3,
+ .rae = true,
};
OPT_ARGS(opts) = {
OPT_UINT("host-generate", 'g', &cfg.host_gen, hgen),
OPT_FLAG("controller-init", 'c', &cfg.ctrl_init, cgen),
OPT_UINT("data-area", 'd', &cfg.data_area, dgen),
+ OPT_FLAG("rae", 'r', &cfg.rae, rae),
OPT_END()
};
}
if (cfg.ctrl_init)
- err = __get_telemetry_log_ctrl(dev, cfg.data_area,
+ err = __get_telemetry_log_ctrl(dev, cfg.rae, cfg.data_area,
&total_size, &log);
else if (cfg.host_gen)
err = __create_telemetry_log_host(dev, cfg.data_area,