From owner-svn-src-all@FreeBSD.ORG Thu Oct 18 00:43:26 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 07B433E4; Thu, 18 Oct 2012 00:43:26 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E12138FC0A; Thu, 18 Oct 2012 00:43:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q9I0hPNm001771; Thu, 18 Oct 2012 00:43:25 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q9I0hPhZ001767; Thu, 18 Oct 2012 00:43:25 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201210180043.q9I0hPhZ001767@svn.freebsd.org> From: Jim Harris Date: Thu, 18 Oct 2012 00:43:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r241663 - head/sys/dev/nvme X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Oct 2012 00:43:26 -0000 Author: jimharris Date: Thu Oct 18 00:43:25 2012 New Revision: 241663 URL: http://svn.freebsd.org/changeset/base/241663 Log: Create nvme_qpair_submit_request() which eliminates all of the code duplication between the admin and io controller-level submit functions. Sponsored by: Intel Modified: head/sys/dev/nvme/nvme_ctrlr.c head/sys/dev/nvme/nvme_private.h head/sys/dev/nvme/nvme_qpair.c Modified: head/sys/dev/nvme/nvme_ctrlr.c ============================================================================== --- head/sys/dev/nvme/nvme_ctrlr.c Thu Oct 18 00:41:31 2012 (r241662) +++ head/sys/dev/nvme/nvme_ctrlr.c Thu Oct 18 00:43:25 2012 (r241663) @@ -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 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); } Modified: head/sys/dev/nvme/nvme_private.h ============================================================================== --- head/sys/dev/nvme/nvme_private.h Thu Oct 18 00:41:31 2012 (r241662) +++ head/sys/dev/nvme/nvme_private.h Thu Oct 18 00:43:25 2012 (r241663) @@ -354,6 +354,8 @@ void nvme_qpair_submit_cmd(struct nvme_q struct nvme_tracker *tr); void nvme_qpair_process_completions(struct nvme_qpair *qpair); struct nvme_tracker * nvme_qpair_allocate_tracker(struct nvme_qpair *qpair); +void nvme_qpair_submit_request(struct nvme_qpair *qpair, + struct nvme_request *req); void nvme_admin_qpair_destroy(struct nvme_qpair *qpair); Modified: head/sys/dev/nvme/nvme_qpair.c ============================================================================== --- head/sys/dev/nvme/nvme_qpair.c Thu Oct 18 00:41:31 2012 (r241662) +++ head/sys/dev/nvme/nvme_qpair.c Thu Oct 18 00:43:25 2012 (r241663) @@ -406,3 +406,35 @@ nvme_qpair_submit_cmd(struct nvme_qpair qpair->num_cmds++; } + +void +nvme_qpair_submit_request(struct nvme_qpair *qpair, struct nvme_request *req) +{ + struct nvme_tracker *tr; + int err; + + 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); +}