diff options
author | jimharris <jimharris@FreeBSD.org> | 2012-10-18 00:43:25 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2012-10-18 00:43:25 +0000 |
commit | bca33a6688fc34f33afa47494cf922c6d21b99d3 (patch) | |
tree | 617cdc00f8a7a101571cab7fc7a999b2b403920f /sys/dev/nvme/nvme_ctrlr.c | |
parent | f52c8d1c53690af172d252522140d89c84fedb23 (diff) | |
download | FreeBSD-src-bca33a6688fc34f33afa47494cf922c6d21b99d3.zip FreeBSD-src-bca33a6688fc34f33afa47494cf922c6d21b99d3.tar.gz |
Create nvme_qpair_submit_request() which eliminates all of the code
duplication between the admin and io controller-level submit
functions.
Sponsored by: Intel
Diffstat (limited to 'sys/dev/nvme/nvme_ctrlr.c')
-rw-r--r-- | sys/dev/nvme/nvme_ctrlr.c | 50 |
1 files changed, 2 insertions, 48 deletions
diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c index 369df7f..adc34e9 100644 --- a/sys/dev/nvme/nvme_ctrlr.c +++ b/sys/dev/nvme/nvme_ctrlr.c @@ -796,28 +796,8 @@ void nvme_ctrlr_submit_admin_request(struct nvme_controller *ctrlr, struct nvme_request *req) { - struct nvme_qpair *qpair; - struct nvme_tracker *tr; - int err; - - qpair = &ctrlr->adminq; - - mtx_lock(&qpair->lock); - - tr = nvme_qpair_allocate_tracker(qpair); - - tr->req = req; - - if (req->payload_size > 0) { - err = bus_dmamap_load(tr->qpair->dma_tag, tr->payload_dma_map, - req->payload, req->payload_size, - nvme_payload_map, tr, 0); - if (err != 0) - panic("bus_dmamap_load returned non-zero!\n"); - } else - nvme_qpair_submit_cmd(tr->qpair, tr); - mtx_unlock(&qpair->lock); + nvme_qpair_submit_request(&ctrlr->adminq, req); } void @@ -825,37 +805,11 @@ nvme_ctrlr_submit_io_request(struct nvme_controller *ctrlr, struct nvme_request *req) { struct nvme_qpair *qpair; - struct nvme_tracker *tr; - int err; if (ctrlr->per_cpu_io_queues) qpair = &ctrlr->ioq[curcpu]; else qpair = &ctrlr->ioq[0]; - mtx_lock(&qpair->lock); - - tr = nvme_qpair_allocate_tracker(qpair); - - tr->req = req; - - if (req->uio == NULL) { - if (req->payload_size > 0) { - err = bus_dmamap_load(tr->qpair->dma_tag, - tr->payload_dma_map, req->payload, - req->payload_size, - nvme_payload_map, tr, 0); - if (err != 0) - panic("bus_dmamap_load returned non-zero!\n"); - } else - nvme_qpair_submit_cmd(tr->qpair, tr); - } else { - err = bus_dmamap_load_uio(tr->qpair->dma_tag, - tr->payload_dma_map, req->uio, - nvme_payload_map_uio, tr, 0); - if (err != 0) - panic("bus_dmamap_load returned non-zero!\n"); - } - - mtx_unlock(&qpair->lock); + nvme_qpair_submit_request(qpair, req); } |