提交 ceb26569 编写于 作者: S Sebastian Sanchez 提交者: Doug Ledford

IB/hfi1: Remove unnecessary initialization from tx request

The tx request is unnecessarily initialized in the hot
code path with memset(), however, there's no need to do
this as most fields are initialized later on. this
initialization shows to be costly in the profile.
Remove unnecessary initialization from tx request and make
sure all variables are initialized properly.
Reviewed-by: NMike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: NSebastian Sanchez <sebastian.sanchez@intel.com>
Signed-off-by: NDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: NDoug Ledford <dledford@redhat.com>
上级 8c32c4f2
...@@ -607,12 +607,19 @@ int hfi1_user_sdma_process_request(struct hfi1_filedata *fd, ...@@ -607,12 +607,19 @@ int hfi1_user_sdma_process_request(struct hfi1_filedata *fd,
hfi1_cdbg(SDMA, "[%u:%u:%u] Using req/comp entry %u\n", dd->unit, hfi1_cdbg(SDMA, "[%u:%u:%u] Using req/comp entry %u\n", dd->unit,
uctxt->ctxt, fd->subctxt, info.comp_idx); uctxt->ctxt, fd->subctxt, info.comp_idx);
req = pq->reqs + info.comp_idx; req = pq->reqs + info.comp_idx;
memset(req, 0, sizeof(*req));
req->data_iovs = req_iovcnt(info.ctrl) - 1; /* subtract header vector */ req->data_iovs = req_iovcnt(info.ctrl) - 1; /* subtract header vector */
req->data_len = 0;
req->pq = pq; req->pq = pq;
req->cq = cq; req->cq = cq;
req->status = -1; req->status = -1;
req->ahg_idx = -1; req->ahg_idx = -1;
req->iov_idx = 0;
req->sent = 0;
req->seqnum = 0;
req->seqcomp = 0;
req->seqsubmitted = 0;
req->flags = 0;
req->tids = NULL;
INIT_LIST_HEAD(&req->txps); INIT_LIST_HEAD(&req->txps);
memcpy(&req->info, &info, sizeof(info)); memcpy(&req->info, &info, sizeof(info));
...@@ -701,12 +708,14 @@ int hfi1_user_sdma_process_request(struct hfi1_filedata *fd, ...@@ -701,12 +708,14 @@ int hfi1_user_sdma_process_request(struct hfi1_filedata *fd,
/* Save all the IO vector structures */ /* Save all the IO vector structures */
for (i = 0; i < req->data_iovs; i++) { for (i = 0; i < req->data_iovs; i++) {
req->iovs[i].offset = 0;
INIT_LIST_HEAD(&req->iovs[i].list); INIT_LIST_HEAD(&req->iovs[i].list);
memcpy(&req->iovs[i].iov, memcpy(&req->iovs[i].iov,
iovec + idx++, iovec + idx++,
sizeof(req->iovs[i].iov)); sizeof(req->iovs[i].iov));
ret = pin_vector_pages(req, &req->iovs[i]); ret = pin_vector_pages(req, &req->iovs[i]);
if (ret) { if (ret) {
req->data_iovs = i;
req->status = ret; req->status = ret;
goto free_req; goto free_req;
} }
...@@ -749,6 +758,7 @@ int hfi1_user_sdma_process_request(struct hfi1_filedata *fd, ...@@ -749,6 +758,7 @@ int hfi1_user_sdma_process_request(struct hfi1_filedata *fd,
} }
req->tids = tmp; req->tids = tmp;
req->n_tids = ntids; req->n_tids = ntids;
req->tididx = 0;
idx++; idx++;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册