summaryrefslogtreecommitdiffstats
path: root/sys/dev/nvme/nvme_private.h
diff options
context:
space:
mode:
authorjimharris <jimharris@FreeBSD.org>2013-03-26 18:45:16 +0000
committerjimharris <jimharris@FreeBSD.org>2013-03-26 18:45:16 +0000
commit5220c76da822d03f6c1e6e5848d8d6227d6f0ba3 (patch)
tree3df9f4b11d944ca9fffed237af1791ef45ea28db /sys/dev/nvme/nvme_private.h
parenta3af497c87192d7864d33b58a637530aaac4d1dc (diff)
downloadFreeBSD-src-5220c76da822d03f6c1e6e5848d8d6227d6f0ba3.zip
FreeBSD-src-5220c76da822d03f6c1e6e5848d8d6227d6f0ba3.tar.gz
Keep a doubly-linked list of outstanding trackers.
This enables in-order re-submission of I/O after a controller reset. Sponsored by: Intel
Diffstat (limited to 'sys/dev/nvme/nvme_private.h')
-rw-r--r--sys/dev/nvme/nvme_private.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h
index 97a936e..4876bd5 100644
--- a/sys/dev/nvme/nvme_private.h
+++ b/sys/dev/nvme/nvme_private.h
@@ -127,7 +127,7 @@ struct nvme_async_event_request {
struct nvme_tracker {
- SLIST_ENTRY(nvme_tracker) slist;
+ TAILQ_ENTRY(nvme_tracker) tailq;
struct nvme_request *req;
struct nvme_qpair *qpair;
struct callout timer;
@@ -174,7 +174,8 @@ struct nvme_qpair {
bus_dmamap_t cpl_dma_map;
uint64_t cpl_bus_addr;
- SLIST_HEAD(, nvme_tracker) free_tr;
+ TAILQ_HEAD(, nvme_tracker) free_tr;
+ TAILQ_HEAD(, nvme_tracker) outstanding_tr;
STAILQ_HEAD(, nvme_request) queued_req;
struct nvme_tracker **act_tr;
OpenPOWER on IntegriCloud