Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/nvme/nvme_private.h
Show First 20 Lines • Show All 153 Lines • ▼ Show 20 Lines | struct nvme_async_event_request { | ||||
uint32_t log_page_size; | uint32_t log_page_size; | ||||
uint8_t log_page_buffer[NVME_MAX_AER_LOG_SIZE]; | uint8_t log_page_buffer[NVME_MAX_AER_LOG_SIZE]; | ||||
}; | }; | ||||
struct nvme_tracker { | struct nvme_tracker { | ||||
TAILQ_ENTRY(nvme_tracker) tailq; | TAILQ_ENTRY(nvme_tracker) tailq; | ||||
struct nvme_request *req; | struct nvme_request *req; | ||||
struct nvme_qpair *qpair; | struct nvme_qpair *qpair; | ||||
struct callout timer; | sbintime_t deadline; | ||||
bus_dmamap_t payload_dma_map; | bus_dmamap_t payload_dma_map; | ||||
uint16_t cid; | uint16_t cid; | ||||
uint64_t *prp; | uint64_t *prp; | ||||
bus_addr_t prp_bus_addr; | bus_addr_t prp_bus_addr; | ||||
}; | }; | ||||
enum nvme_recovery { | |||||
rpokala: `nvme_recovery_state` would be clearer, IMHO. | |||||
RECOVERY_NONE = 0, /* Normal operations */ | |||||
RECOVERY_START, /* Deadline has passed, start recovering */ | |||||
RECOVERY_RESET, /* This pass, initiate reset of controller */ | |||||
rpokalaUnsubmitted Not Done Inline Actions/* This phase of recovery, initiate controller reset */ scans better to me. rpokala: `/* This phase of recovery, initiate controller reset */` scans better to me. | |||||
RECOVERY_WAITING, /* waiting for the reset to complete */ | |||||
}; | |||||
struct nvme_qpair { | struct nvme_qpair { | ||||
struct nvme_controller *ctrlr; | struct nvme_controller *ctrlr; | ||||
uint32_t id; | uint32_t id; | ||||
int domain; | int domain; | ||||
int cpu; | int cpu; | ||||
uint16_t vector; | uint16_t vector; | ||||
int rid; | int rid; | ||||
struct resource *res; | struct resource *res; | ||||
void *tag; | void *tag; | ||||
struct callout timer; | |||||
sbintime_t deadline; | |||||
bool timer_armed; | |||||
enum nvme_recovery recovery_state; | |||||
int ticks; | |||||
uint32_t num_entries; | uint32_t num_entries; | ||||
uint32_t num_trackers; | uint32_t num_trackers; | ||||
uint32_t sq_tdbl_off; | uint32_t sq_tdbl_off; | ||||
uint32_t cq_hdbl_off; | uint32_t cq_hdbl_off; | ||||
uint32_t phase; | uint32_t phase; | ||||
uint32_t sq_head; | uint32_t sq_head; | ||||
uint32_t sq_tail; | uint32_t sq_tail; | ||||
Show All 14 Lines | struct nvme_qpair { | ||||
uint64_t cmd_bus_addr; | uint64_t cmd_bus_addr; | ||||
uint64_t cpl_bus_addr; | uint64_t cpl_bus_addr; | ||||
TAILQ_HEAD(, nvme_tracker) free_tr; | TAILQ_HEAD(, nvme_tracker) free_tr; | ||||
TAILQ_HEAD(, nvme_tracker) outstanding_tr; | TAILQ_HEAD(, nvme_tracker) outstanding_tr; | ||||
STAILQ_HEAD(, nvme_request) queued_req; | STAILQ_HEAD(, nvme_request) queued_req; | ||||
struct nvme_tracker **act_tr; | struct nvme_tracker **act_tr; | ||||
bool is_enabled; | |||||
struct mtx lock __aligned(CACHE_LINE_SIZE); | struct mtx lock __aligned(CACHE_LINE_SIZE); | ||||
} __aligned(CACHE_LINE_SIZE); | } __aligned(CACHE_LINE_SIZE); | ||||
struct nvme_namespace { | struct nvme_namespace { | ||||
struct nvme_controller *ctrlr; | struct nvme_controller *ctrlr; | ||||
struct nvme_namespace_data data; | struct nvme_namespace_data data; | ||||
▲ Show 20 Lines • Show All 350 Lines • Show Last 20 Lines |
nvme_recovery_state would be clearer, IMHO.