Commit 7f46d23e authored by Long Li's avatar Long Li Committed by Steve French

cifs:smbd Use the correct DMA direction when sending data

When sending data, use the DMA_TO_DEVICE to map buffers. Also log the number
of requests in a compounding request from upper layer.
Signed-off-by: default avatarLong Li <longli@microsoft.com>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
Acked-by: default avatarPavel Shilovsky <pshilov@microsoft.com>
Acked-by: default avatarRonnie Sahlberg <lsahlber@redhat.com>
parent 1d2a4f57
...@@ -903,7 +903,7 @@ static int smbd_create_header(struct smbd_connection *info, ...@@ -903,7 +903,7 @@ static int smbd_create_header(struct smbd_connection *info,
request->sge[0].addr = ib_dma_map_single(info->id->device, request->sge[0].addr = ib_dma_map_single(info->id->device,
(void *)packet, (void *)packet,
header_length, header_length,
DMA_BIDIRECTIONAL); DMA_TO_DEVICE);
if (ib_dma_mapping_error(info->id->device, request->sge[0].addr)) { if (ib_dma_mapping_error(info->id->device, request->sge[0].addr)) {
mempool_free(request, info->request_mempool); mempool_free(request, info->request_mempool);
rc = -EIO; rc = -EIO;
...@@ -1005,7 +1005,7 @@ static int smbd_post_send_sgl(struct smbd_connection *info, ...@@ -1005,7 +1005,7 @@ static int smbd_post_send_sgl(struct smbd_connection *info,
for_each_sg(sgl, sg, num_sgs, i) { for_each_sg(sgl, sg, num_sgs, i) {
request->sge[i+1].addr = request->sge[i+1].addr =
ib_dma_map_page(info->id->device, sg_page(sg), ib_dma_map_page(info->id->device, sg_page(sg),
sg->offset, sg->length, DMA_BIDIRECTIONAL); sg->offset, sg->length, DMA_TO_DEVICE);
if (ib_dma_mapping_error( if (ib_dma_mapping_error(
info->id->device, request->sge[i+1].addr)) { info->id->device, request->sge[i+1].addr)) {
rc = -EIO; rc = -EIO;
...@@ -2110,8 +2110,10 @@ int smbd_send(struct TCP_Server_Info *server, ...@@ -2110,8 +2110,10 @@ int smbd_send(struct TCP_Server_Info *server,
goto done; goto done;
} }
rqst_idx = 0; log_write(INFO, "num_rqst=%d total length=%u\n",
num_rqst, remaining_data_length);
rqst_idx = 0;
next_rqst: next_rqst:
rqst = &rqst_array[rqst_idx]; rqst = &rqst_array[rqst_idx];
iov = rqst->rq_iov; iov = rqst->rq_iov;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment