|
@@ -44,10 +44,8 @@ static void qce_ablkcipher_done(void *data)
|
|
|
error);
|
|
|
|
|
|
if (diff_dst)
|
|
|
- qce_unmapsg(qce->dev, rctx->src_sg, rctx->src_nents, dir_src,
|
|
|
- rctx->dst_chained);
|
|
|
- qce_unmapsg(qce->dev, rctx->dst_sg, rctx->dst_nents, dir_dst,
|
|
|
- rctx->dst_chained);
|
|
|
+ dma_unmap_sg(qce->dev, rctx->src_sg, rctx->src_nents, dir_src);
|
|
|
+ dma_unmap_sg(qce->dev, rctx->dst_sg, rctx->dst_nents, dir_dst);
|
|
|
|
|
|
sg_free_table(&rctx->dst_tbl);
|
|
|
|
|
@@ -80,15 +78,11 @@ qce_ablkcipher_async_req_handle(struct crypto_async_request *async_req)
|
|
|
dir_src = diff_dst ? DMA_TO_DEVICE : DMA_BIDIRECTIONAL;
|
|
|
dir_dst = diff_dst ? DMA_FROM_DEVICE : DMA_BIDIRECTIONAL;
|
|
|
|
|
|
- rctx->src_nents = qce_countsg(req->src, req->nbytes,
|
|
|
- &rctx->src_chained);
|
|
|
- if (diff_dst) {
|
|
|
- rctx->dst_nents = qce_countsg(req->dst, req->nbytes,
|
|
|
- &rctx->dst_chained);
|
|
|
- } else {
|
|
|
+ rctx->src_nents = sg_nents_for_len(req->src, req->nbytes);
|
|
|
+ if (diff_dst)
|
|
|
+ rctx->dst_nents = sg_nents_for_len(req->dst, req->nbytes);
|
|
|
+ else
|
|
|
rctx->dst_nents = rctx->src_nents;
|
|
|
- rctx->dst_chained = rctx->src_chained;
|
|
|
- }
|
|
|
|
|
|
rctx->dst_nents += 1;
|
|
|
|
|
@@ -116,14 +110,12 @@ qce_ablkcipher_async_req_handle(struct crypto_async_request *async_req)
|
|
|
sg_mark_end(sg);
|
|
|
rctx->dst_sg = rctx->dst_tbl.sgl;
|
|
|
|
|
|
- ret = qce_mapsg(qce->dev, rctx->dst_sg, rctx->dst_nents, dir_dst,
|
|
|
- rctx->dst_chained);
|
|
|
+ ret = dma_map_sg(qce->dev, rctx->dst_sg, rctx->dst_nents, dir_dst);
|
|
|
if (ret < 0)
|
|
|
goto error_free;
|
|
|
|
|
|
if (diff_dst) {
|
|
|
- ret = qce_mapsg(qce->dev, req->src, rctx->src_nents, dir_src,
|
|
|
- rctx->src_chained);
|
|
|
+ ret = dma_map_sg(qce->dev, req->src, rctx->src_nents, dir_src);
|
|
|
if (ret < 0)
|
|
|
goto error_unmap_dst;
|
|
|
rctx->src_sg = req->src;
|
|
@@ -149,11 +141,9 @@ error_terminate:
|
|
|
qce_dma_terminate_all(&qce->dma);
|
|
|
error_unmap_src:
|
|
|
if (diff_dst)
|
|
|
- qce_unmapsg(qce->dev, req->src, rctx->src_nents, dir_src,
|
|
|
- rctx->src_chained);
|
|
|
+ dma_unmap_sg(qce->dev, req->src, rctx->src_nents, dir_src);
|
|
|
error_unmap_dst:
|
|
|
- qce_unmapsg(qce->dev, rctx->dst_sg, rctx->dst_nents, dir_dst,
|
|
|
- rctx->dst_chained);
|
|
|
+ dma_unmap_sg(qce->dev, rctx->dst_sg, rctx->dst_nents, dir_dst);
|
|
|
error_free:
|
|
|
sg_free_table(&rctx->dst_tbl);
|
|
|
return ret;
|