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: Long Li <longli@microsoft.com> Signed-off-by: Steve French <stfrench@microsoft.com> Acked-by: Pavel Shilovsky <pshilov@microsoft.com> Acked-by: Ronnie Sahlberg <lsahlber@redhat.com>
This commit is contained in:
parent
1d2a4f57ce
commit
7f46d23e1b
@ -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,
|
|||||||
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,
|
|||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user