diff options
author | jimharris <jimharris@FreeBSD.org> | 2012-10-18 00:37:11 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2012-10-18 00:37:11 +0000 |
commit | 3d2744150b6626e65971d96f6cd57f799b0b55d2 (patch) | |
tree | c70cf24cbfa2dea6c2fe9f6a2d46f94ae0202254 /sys/dev/nvme/nvme_ns_cmd.c | |
parent | c070c3fe817d16552546a6954df85a4731b3e8be (diff) | |
download | FreeBSD-src-3d2744150b6626e65971d96f6cd57f799b0b55d2.zip FreeBSD-src-3d2744150b6626e65971d96f6cd57f799b0b55d2.tar.gz |
Merge struct nvme_prp_list into struct nvme_tracker.
This simplifies the driver significantly where it is constructing
commands to be submitted to hardware. By reducing the number of
PRPs (NVMe parlance for SGE) from 128 to 32, it ensures we do not
allocate too much memory for more common smaller I/O sizes, while
still supporting up to 128KB I/O sizes.
This also paves the way for pre-allocation of nvme_tracker objects
for each queue which will simplify the I/O path even further.
Sponsored by: Intel
Diffstat (limited to 'sys/dev/nvme/nvme_ns_cmd.c')
-rw-r--r-- | sys/dev/nvme/nvme_ns_cmd.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/nvme/nvme_ns_cmd.c b/sys/dev/nvme/nvme_ns_cmd.c index fe5cc28..cba9032 100644 --- a/sys/dev/nvme/nvme_ns_cmd.c +++ b/sys/dev/nvme/nvme_ns_cmd.c @@ -51,7 +51,7 @@ nvme_ns_cmd_read(struct nvme_namespace *ns, void *payload, uint64_t lba, *(uint64_t *)&cmd->cdw10 = lba; cmd->cdw12 = lba_count-1; - err = bus_dmamap_load(tr->qpair->dma_tag, tr->dma_map, payload, + err = bus_dmamap_load(tr->qpair->dma_tag, tr->payload_dma_map, payload, tr->payload_size, nvme_payload_map, tr, 0); KASSERT(err == 0, ("bus_dmamap_load returned non-zero!\n")); @@ -81,7 +81,7 @@ nvme_ns_cmd_write(struct nvme_namespace *ns, void *payload, uint64_t lba, *(uint64_t *)&cmd->cdw10 = lba; cmd->cdw12 = lba_count-1; - err = bus_dmamap_load(tr->qpair->dma_tag, tr->dma_map, payload, + err = bus_dmamap_load(tr->qpair->dma_tag, tr->payload_dma_map, payload, tr->payload_size, nvme_payload_map, tr, 0); KASSERT(err == 0, ("bus_dmamap_load returned non-zero!\n")); @@ -111,7 +111,7 @@ nvme_ns_cmd_deallocate(struct nvme_namespace *ns, void *payload, cmd->cdw10 = num_ranges; cmd->cdw11 = NVME_DSM_ATTR_DEALLOCATE; - err = bus_dmamap_load(tr->qpair->dma_tag, tr->dma_map, payload, + err = bus_dmamap_load(tr->qpair->dma_tag, tr->payload_dma_map, payload, tr->payload_size, nvme_payload_map, tr, 0); KASSERT(err == 0, ("bus_dmamap_load returned non-zero!\n")); |