Lines Matching refs:ci
35 nvme_info_error(nvme_ctrl_info_t *ci, nvme_info_err_t err, int32_t sys, in nvme_info_error() argument
41 ci->nci_err = err; in nvme_info_error()
42 ci->nci_syserr = sys; in nvme_info_error()
44 ret = vsnprintf(ci->nci_errmsg, sizeof (ci->nci_errmsg), fmt, ap); in nvme_info_error()
46 if (ret >= sizeof (ci->nci_errmsg)) { in nvme_info_error()
47 ci->nci_errlen = sizeof (ci->nci_errmsg) - 1; in nvme_info_error()
49 ci->nci_errlen = 0; in nvme_info_error()
50 ci->nci_errmsg[0] = '\0'; in nvme_info_error()
52 ci->nci_errlen = (size_t)ret; in nvme_info_error()
59 nvme_info_success(nvme_ctrl_info_t *ci) in nvme_info_success() argument
61 ci->nci_err = NVME_INFO_ERR_OK; in nvme_info_success()
62 ci->nci_syserr = 0; in nvme_info_success()
63 ci->nci_errmsg[0] = '\0'; in nvme_info_success()
64 ci->nci_errlen = 0; in nvme_info_success()
70 nvme_ctrl_info_err(nvme_ctrl_info_t *ci) in nvme_ctrl_info_err() argument
72 return (ci->nci_err); in nvme_ctrl_info_err()
76 nvme_ctrl_info_syserr(nvme_ctrl_info_t *ci) in nvme_ctrl_info_syserr() argument
78 return (ci->nci_syserr); in nvme_ctrl_info_syserr()
82 nvme_ctrl_info_errmsg(nvme_ctrl_info_t *ci) in nvme_ctrl_info_errmsg() argument
84 return (ci->nci_errmsg); in nvme_ctrl_info_errmsg()
88 nvme_ctrl_info_errlen(nvme_ctrl_info_t *ci) in nvme_ctrl_info_errlen() argument
90 return (ci->nci_errlen); in nvme_ctrl_info_errlen()
100 nvme_ctrl_info_errtostr(nvme_ctrl_info_t *ci, nvme_info_err_t err) in nvme_ctrl_info_errtostr() argument
129 nvme_ctrl_info_free(nvme_ctrl_info_t *ci) in nvme_ctrl_info_free() argument
131 free(ci); in nvme_ctrl_info_free()
155 nvme_ctrl_info_init_ident(nvme_ctrl_info_t *ci) in nvme_ctrl_info_init_ident() argument
157 nvme_ctrl_info_init_ident_str(ci->nci_info.id_serial, in nvme_ctrl_info_init_ident()
158 sizeof (ci->nci_info.id_serial), ci->nci_serial); in nvme_ctrl_info_init_ident()
159 nvme_ctrl_info_init_ident_str(ci->nci_info.id_model, in nvme_ctrl_info_init_ident()
160 sizeof (ci->nci_info.id_model), ci->nci_model); in nvme_ctrl_info_init_ident()
161 nvme_ctrl_info_init_ident_str(ci->nci_info.id_fwrev, in nvme_ctrl_info_init_ident()
162 sizeof (ci->nci_info.id_fwrev), ci->nci_fwrev); in nvme_ctrl_info_init_ident()
170 nvme_ctrl_info_t *ci; in nvme_ctrl_info_restore() local
186 ci = calloc(1, sizeof (nvme_ctrl_info_t)); in nvme_ctrl_info_restore()
187 if (ci == NULL) { in nvme_ctrl_info_restore()
207 NVME_NVL_CI_MAJOR, DATA_TYPE_UINT16, &ci->nci_vers.v_major, in nvme_ctrl_info_restore()
208 NVME_NVL_CI_MINOR, DATA_TYPE_UINT16, &ci->nci_vers.v_minor, in nvme_ctrl_info_restore()
209 NVME_NVL_CI_INST, DATA_TYPE_INT32, &ci->nci_inst, in nvme_ctrl_info_restore()
213 NVME_NVL_CI_TPORT, DATA_TYPE_UINT32, &ci->nci_tport, NULL); in nvme_ctrl_info_restore()
220 if (ci->nci_inst < 0) { in nvme_ctrl_info_restore()
226 if (ctrl_len != sizeof (ci->nci_info)) { in nvme_ctrl_info_restore()
229 "0x%zx bytes, found 0x%x", sizeof (ci->nci_info), ctrl_len); in nvme_ctrl_info_restore()
233 if (ns_len != sizeof (ci->nci_ns)) { in nvme_ctrl_info_restore()
236 "0x%zx bytes, found 0x%x", sizeof (ci->nci_info), ctrl_len); in nvme_ctrl_info_restore()
240 (void) memcpy(&ci->nci_info, ctrl, ctrl_len); in nvme_ctrl_info_restore()
241 (void) memcpy(&ci->nci_ns, ns, ns_len); in nvme_ctrl_info_restore()
243 if (strlcpy(ci->nci_dev_path, path, sizeof (ci->nci_dev_path)) >= in nvme_ctrl_info_restore()
244 sizeof (ci->nci_dev_path)) { in nvme_ctrl_info_restore()
250 if (ci->nci_tport != NVME_CTRL_TRANSPORT_PCI) { in nvme_ctrl_info_restore()
252 "unknown transport type: 0x%x", ci->nci_tport); in nvme_ctrl_info_restore()
257 NVME_NVL_CI_PCI_VID, DATA_TYPE_UINT16, &ci->nci_vid, in nvme_ctrl_info_restore()
258 NVME_NVL_CI_PCI_DID, DATA_TYPE_UINT16, &ci->nci_did, in nvme_ctrl_info_restore()
259 NVME_NVL_CI_PCI_SUBVID, DATA_TYPE_UINT16, &ci->nci_subvid, in nvme_ctrl_info_restore()
260 NVME_NVL_CI_PCI_SUBSYS, DATA_TYPE_UINT16, &ci->nci_subsys, in nvme_ctrl_info_restore()
261 NVME_NVL_CI_PCI_REV, DATA_TYPE_UINT8, &ci->nci_rev, in nvme_ctrl_info_restore()
262 NVME_NVL_CI_PCI_MPSMIN, DATA_TYPE_UINT32, &ci->nci_mps_min, in nvme_ctrl_info_restore()
263 NVME_NVL_CI_PCI_MPSMAX, DATA_TYPE_UINT32, &ci->nci_mps_max, in nvme_ctrl_info_restore()
264 NVME_NVL_CI_PCI_NINTRS, DATA_TYPE_UINT32, &ci->nci_nintrs, NULL); in nvme_ctrl_info_restore()
272 nvme_ctrl_info_init_ident(ci); in nvme_ctrl_info_restore()
273 *outp = ci; in nvme_ctrl_info_restore()
277 nvme_ctrl_info_free(ci); in nvme_ctrl_info_restore()
282 nvme_ctrl_info_persist(nvme_ctrl_info_t *ci, nvlist_t **nvlp) in nvme_ctrl_info_persist() argument
288 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, in nvme_ctrl_info_persist()
295 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, ret, in nvme_ctrl_info_persist()
300 if ((ret = nvlist_add_int32(nvl, NVME_NVL_CI_INST, ci->nci_inst)) != in nvme_ctrl_info_persist()
302 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, ret, in nvme_ctrl_info_persist()
308 ci->nci_vers.v_major)) != 0 || in nvme_ctrl_info_persist()
310 ci->nci_vers.v_minor)) != 0) { in nvme_ctrl_info_persist()
311 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, ret, in nvme_ctrl_info_persist()
317 ci->nci_dev_path)) != 0) { in nvme_ctrl_info_persist()
318 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, ret, in nvme_ctrl_info_persist()
324 (void *)&ci->nci_info, sizeof (ci->nci_info))) != 0) { in nvme_ctrl_info_persist()
325 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, ret, in nvme_ctrl_info_persist()
331 (void *)&ci->nci_ns, sizeof (ci->nci_ns))) != 0) { in nvme_ctrl_info_persist()
332 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, ret, in nvme_ctrl_info_persist()
337 if ((ret = nvlist_add_uint32(nvl, NVME_NVL_CI_TPORT, ci->nci_tport)) != in nvme_ctrl_info_persist()
339 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, ret, in nvme_ctrl_info_persist()
345 ci->nci_vid)) != 0 || in nvme_ctrl_info_persist()
347 ci->nci_did)) != 0 || in nvme_ctrl_info_persist()
349 ci->nci_subvid)) != 0 || in nvme_ctrl_info_persist()
351 ci->nci_subsys)) != 0 || in nvme_ctrl_info_persist()
353 ci->nci_rev)) != 0 || in nvme_ctrl_info_persist()
355 ci->nci_mps_min)) != 0 || in nvme_ctrl_info_persist()
357 ci->nci_mps_max)) != 0 || in nvme_ctrl_info_persist()
359 ci->nci_nintrs)) != 0) { in nvme_ctrl_info_persist()
360 return (nvme_info_error(ci, NVME_INFO_ERR_PERSIST_NVL, ret, in nvme_ctrl_info_persist()
400 nvme_ctrl_info_t *ci; in nvme_ctrl_info_snap() local
411 ci = calloc(1, sizeof (nvme_ctrl_info_t)); in nvme_ctrl_info_snap()
412 if (ci == NULL) { in nvme_ctrl_info_snap()
423 ci->nci_vid = (uint16_t)val; in nvme_ctrl_info_snap()
429 ci->nci_did = (uint16_t)val; in nvme_ctrl_info_snap()
439 ci->nci_subvid = (uint16_t)val; in nvme_ctrl_info_snap()
446 ci->nci_subvid = 0; in nvme_ctrl_info_snap()
447 ci->nci_subsys = 0; in nvme_ctrl_info_snap()
454 ci->nci_rev = (uint8_t)val; in nvme_ctrl_info_snap()
462 ci->nci_tport = NVME_CTRL_TRANSPORT_PCI; in nvme_ctrl_info_snap()
468 ci->nci_vers = info.nci_vers; in nvme_ctrl_info_snap()
469 ci->nci_info = info.nci_ctrl_id; in nvme_ctrl_info_snap()
470 ci->nci_ns = info.nci_common_ns; in nvme_ctrl_info_snap()
471 ci->nci_mps_min = info.nci_caps.cap_mpsmin; in nvme_ctrl_info_snap()
472 ci->nci_mps_max = info.nci_caps.cap_mpsmax; in nvme_ctrl_info_snap()
473 ci->nci_nintrs = info.nci_nintrs; in nvme_ctrl_info_snap()
475 nvme_ctrl_info_init_ident(ci); in nvme_ctrl_info_snap()
476 *outp = ci; in nvme_ctrl_info_snap()
480 nvme_ctrl_info_free(ci); in nvme_ctrl_info_snap()
485 nvme_ctrl_info_vendor(nvme_ctrl_info_t *ci) in nvme_ctrl_info_vendor() argument
487 return (ci->nci_info.id_vid); in nvme_ctrl_info_vendor()
491 nvme_ctrl_info_model(nvme_ctrl_info_t *ci) in nvme_ctrl_info_model() argument
493 return (ci->nci_model); in nvme_ctrl_info_model()
497 nvme_ctrl_info_serial(nvme_ctrl_info_t *ci) in nvme_ctrl_info_serial() argument
499 return (ci->nci_serial); in nvme_ctrl_info_serial()
503 nvme_ctrl_info_fwgran(nvme_ctrl_info_t *ci) in nvme_ctrl_info_fwgran() argument
507 data.vcd_vers = &ci->nci_vers; in nvme_ctrl_info_fwgran()
508 data.vcd_id = &ci->nci_info; in nvme_ctrl_info_fwgran()
513 nvme_ctrl_info_fwrev(nvme_ctrl_info_t *ci) in nvme_ctrl_info_fwrev() argument
515 return (ci->nci_fwrev); in nvme_ctrl_info_fwrev()
519 nvme_ctrl_info_identify(nvme_ctrl_info_t *ci) in nvme_ctrl_info_identify() argument
521 return (&ci->nci_info); in nvme_ctrl_info_identify()
525 nvme_ctrl_info_version(nvme_ctrl_info_t *ci) in nvme_ctrl_info_version() argument
527 return (&ci->nci_vers); in nvme_ctrl_info_version()
531 nvme_ctrl_info_transport(nvme_ctrl_info_t *ci) in nvme_ctrl_info_transport() argument
533 return (ci->nci_tport); in nvme_ctrl_info_transport()
537 nvme_ctrl_info_type(nvme_ctrl_info_t *ci) in nvme_ctrl_info_type() argument
539 if (nvme_vers_ctrl_info_atleast(ci, &nvme_vers_1v4)) { in nvme_ctrl_info_type()
540 switch (ci->nci_info.id_cntrltype) { in nvme_ctrl_info_type()
556 nvme_ctrl_info_pci_tport(nvme_ctrl_info_t *ci) in nvme_ctrl_info_pci_tport() argument
558 if (ci->nci_tport != NVME_CTRL_TRANSPORT_PCI) { in nvme_ctrl_info_pci_tport()
559 return (nvme_info_error(ci, NVME_INFO_ERR_TRANSPORT, 0, in nvme_ctrl_info_pci_tport()
561 nvme_tporttostr(ci->nci_tport), ci->nci_tport)); in nvme_ctrl_info_pci_tport()
568 nvme_ctrl_info_pci_vid(nvme_ctrl_info_t *ci, uint16_t *u16p) in nvme_ctrl_info_pci_vid() argument
570 if (!nvme_ctrl_info_pci_tport(ci)) in nvme_ctrl_info_pci_vid()
573 *u16p = ci->nci_vid; in nvme_ctrl_info_pci_vid()
574 return (nvme_info_success(ci)); in nvme_ctrl_info_pci_vid()
578 nvme_ctrl_info_pci_did(nvme_ctrl_info_t *ci, uint16_t *u16p) in nvme_ctrl_info_pci_did() argument
580 if (!nvme_ctrl_info_pci_tport(ci)) in nvme_ctrl_info_pci_did()
583 *u16p = ci->nci_did; in nvme_ctrl_info_pci_did()
584 return (nvme_info_success(ci)); in nvme_ctrl_info_pci_did()
588 nvme_ctrl_info_pci_subvid(nvme_ctrl_info_t *ci, uint16_t *u16p) in nvme_ctrl_info_pci_subvid() argument
590 if (!nvme_ctrl_info_pci_tport(ci)) in nvme_ctrl_info_pci_subvid()
593 *u16p = ci->nci_subvid; in nvme_ctrl_info_pci_subvid()
594 return (nvme_info_success(ci)); in nvme_ctrl_info_pci_subvid()
598 nvme_ctrl_info_pci_subsys(nvme_ctrl_info_t *ci, uint16_t *u16p) in nvme_ctrl_info_pci_subsys() argument
600 if (!nvme_ctrl_info_pci_tport(ci)) in nvme_ctrl_info_pci_subsys()
603 *u16p = ci->nci_subsys; in nvme_ctrl_info_pci_subsys()
604 return (nvme_info_success(ci)); in nvme_ctrl_info_pci_subsys()
608 nvme_ctrl_info_pci_rev(nvme_ctrl_info_t *ci, uint8_t *u8p) in nvme_ctrl_info_pci_rev() argument
610 if (!nvme_ctrl_info_pci_tport(ci)) in nvme_ctrl_info_pci_rev()
613 *u8p = ci->nci_rev; in nvme_ctrl_info_pci_rev()
614 return (nvme_info_success(ci)); in nvme_ctrl_info_pci_rev()
618 nvme_ctrl_info_pci_mps_min(nvme_ctrl_info_t *ci, uint32_t *u32p) in nvme_ctrl_info_pci_mps_min() argument
620 if (!nvme_ctrl_info_pci_tport(ci)) in nvme_ctrl_info_pci_mps_min()
623 *u32p = ci->nci_mps_min; in nvme_ctrl_info_pci_mps_min()
624 return (nvme_info_success(ci)); in nvme_ctrl_info_pci_mps_min()
628 nvme_ctrl_info_pci_mps_max(nvme_ctrl_info_t *ci, uint32_t *u32p) in nvme_ctrl_info_pci_mps_max() argument
630 if (!nvme_ctrl_info_pci_tport(ci)) in nvme_ctrl_info_pci_mps_max()
633 *u32p = ci->nci_mps_max; in nvme_ctrl_info_pci_mps_max()
634 return (nvme_info_success(ci)); in nvme_ctrl_info_pci_mps_max()
638 nvme_ctrl_info_pci_nintrs(nvme_ctrl_info_t *ci, uint32_t *u32p) in nvme_ctrl_info_pci_nintrs() argument
640 if (!nvme_ctrl_info_pci_tport(ci)) in nvme_ctrl_info_pci_nintrs()
643 *u32p = ci->nci_nintrs; in nvme_ctrl_info_pci_nintrs()
644 return (nvme_info_success(ci)); in nvme_ctrl_info_pci_nintrs()
648 nvme_ctrl_info_nsmgmt(nvme_ctrl_info_t *ci) in nvme_ctrl_info_nsmgmt() argument
650 if (!nvme_vers_ctrl_info_atleast(ci, &nvme_vers_1v2)) { in nvme_ctrl_info_nsmgmt()
651 return (nvme_info_error(ci, NVME_INFO_ERR_VERSION, 0, in nvme_ctrl_info_nsmgmt()
653 "version 1.2, but is %u.%u", ci->nci_vers.v_major, in nvme_ctrl_info_nsmgmt()
654 ci->nci_vers.v_minor)); in nvme_ctrl_info_nsmgmt()
657 if (ci->nci_info.id_oacs.oa_nsmgmt == 0) { in nvme_ctrl_info_nsmgmt()
658 return (nvme_info_error(ci, NVME_INFO_ERR_MISSING_CAP, 0, in nvme_ctrl_info_nsmgmt()
668 nvme_ctrl_info_cap(nvme_ctrl_info_t *ci, nvme_uint128_t *u128p) in nvme_ctrl_info_cap() argument
670 if (!nvme_ctrl_info_nsmgmt(ci)) { in nvme_ctrl_info_cap()
674 (void) memcpy(u128p, &ci->nci_info.ap_tnvmcap, sizeof (nvme_uint128_t)); in nvme_ctrl_info_cap()
675 return (nvme_info_success(ci)); in nvme_ctrl_info_cap()
679 nvme_ctrl_info_unalloc_cap(nvme_ctrl_info_t *ci, nvme_uint128_t *u128p) in nvme_ctrl_info_unalloc_cap() argument
681 if (!nvme_ctrl_info_nsmgmt(ci)) { in nvme_ctrl_info_unalloc_cap()
685 (void) memcpy(u128p, &ci->nci_info.ap_unvmcap, sizeof (nvme_uint128_t)); in nvme_ctrl_info_unalloc_cap()
686 return (nvme_info_success(ci)); in nvme_ctrl_info_unalloc_cap()
690 nvme_ctrl_info_common_ns(nvme_ctrl_info_t *ci, const nvme_identify_nsid_t **idp) in nvme_ctrl_info_common_ns() argument
692 if (!nvme_ctrl_info_nsmgmt(ci)) { in nvme_ctrl_info_common_ns()
696 *idp = &ci->nci_ns; in nvme_ctrl_info_common_ns()
697 return (nvme_info_success(ci)); in nvme_ctrl_info_common_ns()
701 nvme_ctrl_info_nformats(nvme_ctrl_info_t *ci) in nvme_ctrl_info_nformats() argument
703 return (MIN(ci->nci_ns.id_nlbaf + 1, NVME_MAX_LBAF)); in nvme_ctrl_info_nformats()
707 nvme_ctrl_info_nns(nvme_ctrl_info_t *ci) in nvme_ctrl_info_nns() argument
709 return (ci->nci_info.id_nn); in nvme_ctrl_info_nns()
713 nvme_ctrl_info_format(nvme_ctrl_info_t *ci, uint32_t idx, in nvme_ctrl_info_format() argument
716 const uint32_t max = nvme_ctrl_info_nformats(ci); in nvme_ctrl_info_format()
718 return (nvme_info_error(ci, NVME_INFO_ERR_BAD_FMT, 0, in nvme_ctrl_info_format()
723 if (!ci->nci_lbaf_valid[idx]) { in nvme_ctrl_info_format()
724 uint8_t lbads = ci->nci_ns.id_lbaf[idx].lbaf_lbads; in nvme_ctrl_info_format()
727 return (nvme_info_error(ci, NVME_INFO_ERR_BAD_FMT, 0, in nvme_ctrl_info_format()
734 return (nvme_info_error(ci, NVME_INFO_ERR_BAD_FMT_DATA, in nvme_ctrl_info_format()
741 return (nvme_info_error(ci, NVME_INFO_ERR_BAD_FMT_DATA, in nvme_ctrl_info_format()
747 ci->nci_lbaf[idx].nnlf_id = idx; in nvme_ctrl_info_format()
748 ci->nci_lbaf[idx].nnlf_ms = ci->nci_ns.id_lbaf[idx].lbaf_ms; in nvme_ctrl_info_format()
749 ci->nci_lbaf[idx].nnlf_lbasz = 1ULL << lbads; in nvme_ctrl_info_format()
750 ci->nci_lbaf[idx].nnlf_rel = ci->nci_ns.id_lbaf[idx].lbaf_rp; in nvme_ctrl_info_format()
751 ci->nci_lbaf_valid[idx] = true; in nvme_ctrl_info_format()
754 *outp = &ci->nci_lbaf[idx]; in nvme_ctrl_info_format()
755 return (nvme_info_success(ci)); in nvme_ctrl_info_format()