mirror of
https://github.com/opnsense/src.git
synced 2026-06-08 16:22:46 -04:00
Create a generic nvme_ctrlr_cmd_get_log_page function, and change the
health information log page function to use it. Sponsored by: Intel
This commit is contained in:
parent
99d99f7408
commit
5f1e251de6
2 changed files with 21 additions and 6 deletions
|
|
@ -713,6 +713,10 @@ void nvme_ctrlr_cmd_get_feature(struct nvme_controller *ctrlr,
|
|||
uint8_t feature, uint32_t cdw11,
|
||||
void *payload, uint32_t payload_size,
|
||||
nvme_cb_fn_t cb_fn, void *cb_arg);
|
||||
void nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr,
|
||||
uint8_t log_page, uint32_t nsid,
|
||||
void *payload, uint32_t payload_size,
|
||||
nvme_cb_fn_t cb_fn, void *cb_arg);
|
||||
|
||||
/* NVM I/O functions */
|
||||
int nvme_ns_cmd_write(struct nvme_namespace *ns, void *payload,
|
||||
|
|
|
|||
|
|
@ -249,24 +249,35 @@ nvme_ctrlr_cmd_set_interrupt_coalescing(struct nvme_controller *ctrlr,
|
|||
}
|
||||
|
||||
void
|
||||
nvme_ctrlr_cmd_get_health_information_page(struct nvme_controller *ctrlr,
|
||||
uint32_t nsid, struct nvme_health_information_page *payload,
|
||||
nvme_cb_fn_t cb_fn, void *cb_arg)
|
||||
nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, uint8_t log_page,
|
||||
uint32_t nsid, void *payload, uint32_t payload_size, nvme_cb_fn_t cb_fn,
|
||||
void *cb_arg)
|
||||
{
|
||||
struct nvme_request *req;
|
||||
struct nvme_command *cmd;
|
||||
|
||||
req = nvme_allocate_request(payload, sizeof(*payload), cb_fn, cb_arg);
|
||||
req = nvme_allocate_request(payload, payload_size, cb_fn, cb_arg);
|
||||
|
||||
cmd = &req->cmd;
|
||||
cmd->opc = NVME_OPC_GET_LOG_PAGE;
|
||||
cmd->nsid = nsid;
|
||||
cmd->cdw10 = ((sizeof(*payload)/sizeof(uint32_t)) - 1) << 16;
|
||||
cmd->cdw10 |= NVME_LOG_HEALTH_INFORMATION;
|
||||
cmd->cdw10 = ((payload_size/sizeof(uint32_t)) - 1) << 16;
|
||||
cmd->cdw10 |= log_page;
|
||||
|
||||
nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
nvme_ctrlr_cmd_get_health_information_page(struct nvme_controller *ctrlr,
|
||||
uint32_t nsid, struct nvme_health_information_page *payload,
|
||||
nvme_cb_fn_t cb_fn, void *cb_arg)
|
||||
{
|
||||
|
||||
nvme_ctrlr_cmd_get_log_page(ctrlr, NVME_LOG_HEALTH_INFORMATION,
|
||||
nsid, payload, sizeof(*payload), cb_fn, cb_arg);
|
||||
}
|
||||
|
||||
void
|
||||
nvme_ctrlr_cmd_abort(struct nvme_controller *ctrlr, uint16_t cid,
|
||||
uint16_t sqid, nvme_cb_fn_t cb_fn, void *cb_arg)
|
||||
|
|
|
|||
Loading…
Reference in a new issue