Commit 3ed330d0 authored by Giovanni Cabiddu's avatar Giovanni Cabiddu Committed by Herbert Xu

crypto: qat - change bufferlist logic interface

The functions qat_alg_sgl_to_bufl() and qat_alg_free_bufl() take as
argument a qat_crypto_instance and a qat_crypto_request structure.
These two structures are used only to get a reference to the
adf_accel_dev and qat_crypto_request_buffs.

In order to reuse these functions for the compression service, change
the signature so that they take adf_accel_dev and
qat_crypto_request_buffs.
Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: default avatarWojciech Ziemba <wojciech.ziemba@intel.com>
Reviewed-by: default avatarAdam Guerin <adam.guerin@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent b0cd997f
...@@ -673,7 +673,7 @@ static void qat_aead_alg_callback(struct icp_qat_fw_la_resp *qat_resp, ...@@ -673,7 +673,7 @@ static void qat_aead_alg_callback(struct icp_qat_fw_la_resp *qat_resp,
u8 stat_filed = qat_resp->comn_resp.comn_status; u8 stat_filed = qat_resp->comn_resp.comn_status;
int res = 0, qat_res = ICP_QAT_FW_COMN_RESP_CRYPTO_STAT_GET(stat_filed); int res = 0, qat_res = ICP_QAT_FW_COMN_RESP_CRYPTO_STAT_GET(stat_filed);
qat_bl_free_bufl(inst, qat_req); qat_bl_free_bufl(inst->accel_dev, &qat_req->buf);
if (unlikely(qat_res != ICP_QAT_FW_COMN_STATUS_FLAG_OK)) if (unlikely(qat_res != ICP_QAT_FW_COMN_STATUS_FLAG_OK))
res = -EBADMSG; res = -EBADMSG;
areq->base.complete(&areq->base, res); areq->base.complete(&areq->base, res);
...@@ -743,7 +743,7 @@ static void qat_skcipher_alg_callback(struct icp_qat_fw_la_resp *qat_resp, ...@@ -743,7 +743,7 @@ static void qat_skcipher_alg_callback(struct icp_qat_fw_la_resp *qat_resp,
u8 stat_filed = qat_resp->comn_resp.comn_status; u8 stat_filed = qat_resp->comn_resp.comn_status;
int res = 0, qat_res = ICP_QAT_FW_COMN_RESP_CRYPTO_STAT_GET(stat_filed); int res = 0, qat_res = ICP_QAT_FW_COMN_RESP_CRYPTO_STAT_GET(stat_filed);
qat_bl_free_bufl(inst, qat_req); qat_bl_free_bufl(inst->accel_dev, &qat_req->buf);
if (unlikely(qat_res != ICP_QAT_FW_COMN_STATUS_FLAG_OK)) if (unlikely(qat_res != ICP_QAT_FW_COMN_STATUS_FLAG_OK))
res = -EINVAL; res = -EINVAL;
...@@ -799,7 +799,8 @@ static int qat_alg_aead_dec(struct aead_request *areq) ...@@ -799,7 +799,8 @@ static int qat_alg_aead_dec(struct aead_request *areq)
if (cipher_len % AES_BLOCK_SIZE != 0) if (cipher_len % AES_BLOCK_SIZE != 0)
return -EINVAL; return -EINVAL;
ret = qat_bl_sgl_to_bufl(ctx->inst, areq->src, areq->dst, qat_req, f); ret = qat_bl_sgl_to_bufl(ctx->inst->accel_dev, areq->src, areq->dst,
&qat_req->buf, f);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
...@@ -821,7 +822,7 @@ static int qat_alg_aead_dec(struct aead_request *areq) ...@@ -821,7 +822,7 @@ static int qat_alg_aead_dec(struct aead_request *areq)
ret = qat_alg_send_sym_message(qat_req, ctx->inst, &areq->base); ret = qat_alg_send_sym_message(qat_req, ctx->inst, &areq->base);
if (ret == -ENOSPC) if (ret == -ENOSPC)
qat_bl_free_bufl(ctx->inst, qat_req); qat_bl_free_bufl(ctx->inst->accel_dev, &qat_req->buf);
return ret; return ret;
} }
...@@ -842,7 +843,8 @@ static int qat_alg_aead_enc(struct aead_request *areq) ...@@ -842,7 +843,8 @@ static int qat_alg_aead_enc(struct aead_request *areq)
if (areq->cryptlen % AES_BLOCK_SIZE != 0) if (areq->cryptlen % AES_BLOCK_SIZE != 0)
return -EINVAL; return -EINVAL;
ret = qat_bl_sgl_to_bufl(ctx->inst, areq->src, areq->dst, qat_req, f); ret = qat_bl_sgl_to_bufl(ctx->inst->accel_dev, areq->src, areq->dst,
&qat_req->buf, f);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
...@@ -866,7 +868,7 @@ static int qat_alg_aead_enc(struct aead_request *areq) ...@@ -866,7 +868,7 @@ static int qat_alg_aead_enc(struct aead_request *areq)
ret = qat_alg_send_sym_message(qat_req, ctx->inst, &areq->base); ret = qat_alg_send_sym_message(qat_req, ctx->inst, &areq->base);
if (ret == -ENOSPC) if (ret == -ENOSPC)
qat_bl_free_bufl(ctx->inst, qat_req); qat_bl_free_bufl(ctx->inst->accel_dev, &qat_req->buf);
return ret; return ret;
} }
...@@ -1027,7 +1029,8 @@ static int qat_alg_skcipher_encrypt(struct skcipher_request *req) ...@@ -1027,7 +1029,8 @@ static int qat_alg_skcipher_encrypt(struct skcipher_request *req)
if (req->cryptlen == 0) if (req->cryptlen == 0)
return 0; return 0;
ret = qat_bl_sgl_to_bufl(ctx->inst, req->src, req->dst, qat_req, f); ret = qat_bl_sgl_to_bufl(ctx->inst->accel_dev, req->src, req->dst,
&qat_req->buf, f);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
...@@ -1048,7 +1051,7 @@ static int qat_alg_skcipher_encrypt(struct skcipher_request *req) ...@@ -1048,7 +1051,7 @@ static int qat_alg_skcipher_encrypt(struct skcipher_request *req)
ret = qat_alg_send_sym_message(qat_req, ctx->inst, &req->base); ret = qat_alg_send_sym_message(qat_req, ctx->inst, &req->base);
if (ret == -ENOSPC) if (ret == -ENOSPC)
qat_bl_free_bufl(ctx->inst, qat_req); qat_bl_free_bufl(ctx->inst->accel_dev, &qat_req->buf);
return ret; return ret;
} }
...@@ -1093,7 +1096,8 @@ static int qat_alg_skcipher_decrypt(struct skcipher_request *req) ...@@ -1093,7 +1096,8 @@ static int qat_alg_skcipher_decrypt(struct skcipher_request *req)
if (req->cryptlen == 0) if (req->cryptlen == 0)
return 0; return 0;
ret = qat_bl_sgl_to_bufl(ctx->inst, req->src, req->dst, qat_req, f); ret = qat_bl_sgl_to_bufl(ctx->inst->accel_dev, req->src, req->dst,
&qat_req->buf, f);
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
...@@ -1115,7 +1119,7 @@ static int qat_alg_skcipher_decrypt(struct skcipher_request *req) ...@@ -1115,7 +1119,7 @@ static int qat_alg_skcipher_decrypt(struct skcipher_request *req)
ret = qat_alg_send_sym_message(qat_req, ctx->inst, &req->base); ret = qat_alg_send_sym_message(qat_req, ctx->inst, &req->base);
if (ret == -ENOSPC) if (ret == -ENOSPC)
qat_bl_free_bufl(ctx->inst, qat_req); qat_bl_free_bufl(ctx->inst->accel_dev, &qat_req->buf);
return ret; return ret;
} }
......
...@@ -10,16 +10,16 @@ ...@@ -10,16 +10,16 @@
#include "qat_bl.h" #include "qat_bl.h"
#include "qat_crypto.h" #include "qat_crypto.h"
void qat_bl_free_bufl(struct qat_crypto_instance *inst, void qat_bl_free_bufl(struct adf_accel_dev *accel_dev,
struct qat_crypto_request *qat_req) struct qat_crypto_request_buffs *buf)
{ {
struct device *dev = &GET_DEV(inst->accel_dev); struct device *dev = &GET_DEV(accel_dev);
struct qat_alg_buf_list *bl = qat_req->buf.bl; struct qat_alg_buf_list *bl = buf->bl;
struct qat_alg_buf_list *blout = qat_req->buf.blout; struct qat_alg_buf_list *blout = buf->blout;
dma_addr_t blp = qat_req->buf.blp; dma_addr_t blp = buf->blp;
dma_addr_t blpout = qat_req->buf.bloutp; dma_addr_t blpout = buf->bloutp;
size_t sz = qat_req->buf.sz; size_t sz = buf->sz;
size_t sz_out = qat_req->buf.sz_out; size_t sz_out = buf->sz_out;
int bl_dma_dir; int bl_dma_dir;
int i; int i;
...@@ -31,7 +31,7 @@ void qat_bl_free_bufl(struct qat_crypto_instance *inst, ...@@ -31,7 +31,7 @@ void qat_bl_free_bufl(struct qat_crypto_instance *inst,
dma_unmap_single(dev, blp, sz, DMA_TO_DEVICE); dma_unmap_single(dev, blp, sz, DMA_TO_DEVICE);
if (!qat_req->buf.sgl_src_valid) if (!buf->sgl_src_valid)
kfree(bl); kfree(bl);
if (blp != blpout) { if (blp != blpout) {
...@@ -45,18 +45,18 @@ void qat_bl_free_bufl(struct qat_crypto_instance *inst, ...@@ -45,18 +45,18 @@ void qat_bl_free_bufl(struct qat_crypto_instance *inst,
} }
dma_unmap_single(dev, blpout, sz_out, DMA_TO_DEVICE); dma_unmap_single(dev, blpout, sz_out, DMA_TO_DEVICE);
if (!qat_req->buf.sgl_dst_valid) if (!buf->sgl_dst_valid)
kfree(blout); kfree(blout);
} }
} }
int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst, int qat_bl_sgl_to_bufl(struct adf_accel_dev *accel_dev,
struct scatterlist *sgl, struct scatterlist *sgl,
struct scatterlist *sglout, struct scatterlist *sglout,
struct qat_crypto_request *qat_req, struct qat_crypto_request_buffs *buf,
gfp_t flags) gfp_t flags)
{ {
struct device *dev = &GET_DEV(inst->accel_dev); struct device *dev = &GET_DEV(accel_dev);
int i, sg_nctr = 0; int i, sg_nctr = 0;
int n = sg_nents(sgl); int n = sg_nents(sgl);
struct qat_alg_buf_list *bufl; struct qat_alg_buf_list *bufl;
...@@ -65,23 +65,23 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst, ...@@ -65,23 +65,23 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst,
dma_addr_t bloutp = DMA_MAPPING_ERROR; dma_addr_t bloutp = DMA_MAPPING_ERROR;
struct scatterlist *sg; struct scatterlist *sg;
size_t sz_out, sz = struct_size(bufl, bufers, n); size_t sz_out, sz = struct_size(bufl, bufers, n);
int node = dev_to_node(&GET_DEV(inst->accel_dev)); int node = dev_to_node(&GET_DEV(accel_dev));
int bufl_dma_dir; int bufl_dma_dir;
if (unlikely(!n)) if (unlikely(!n))
return -EINVAL; return -EINVAL;
qat_req->buf.sgl_src_valid = false; buf->sgl_src_valid = false;
qat_req->buf.sgl_dst_valid = false; buf->sgl_dst_valid = false;
if (n > QAT_MAX_BUFF_DESC) { if (n > QAT_MAX_BUFF_DESC) {
bufl = kzalloc_node(sz, flags, node); bufl = kzalloc_node(sz, flags, node);
if (unlikely(!bufl)) if (unlikely(!bufl))
return -ENOMEM; return -ENOMEM;
} else { } else {
bufl = &qat_req->buf.sgl_src.sgl_hdr; bufl = &buf->sgl_src.sgl_hdr;
memset(bufl, 0, sizeof(struct qat_alg_buf_list)); memset(bufl, 0, sizeof(struct qat_alg_buf_list));
qat_req->buf.sgl_src_valid = true; buf->sgl_src_valid = true;
} }
bufl_dma_dir = sgl != sglout ? DMA_TO_DEVICE : DMA_BIDIRECTIONAL; bufl_dma_dir = sgl != sglout ? DMA_TO_DEVICE : DMA_BIDIRECTIONAL;
...@@ -107,9 +107,9 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst, ...@@ -107,9 +107,9 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst,
blp = dma_map_single(dev, bufl, sz, DMA_TO_DEVICE); blp = dma_map_single(dev, bufl, sz, DMA_TO_DEVICE);
if (unlikely(dma_mapping_error(dev, blp))) if (unlikely(dma_mapping_error(dev, blp)))
goto err_in; goto err_in;
qat_req->buf.bl = bufl; buf->bl = bufl;
qat_req->buf.blp = blp; buf->blp = blp;
qat_req->buf.sz = sz; buf->sz = sz;
/* Handle out of place operation */ /* Handle out of place operation */
if (sgl != sglout) { if (sgl != sglout) {
struct qat_alg_buf *bufers; struct qat_alg_buf *bufers;
...@@ -123,9 +123,9 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst, ...@@ -123,9 +123,9 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst,
if (unlikely(!buflout)) if (unlikely(!buflout))
goto err_in; goto err_in;
} else { } else {
buflout = &qat_req->buf.sgl_dst.sgl_hdr; buflout = &buf->sgl_dst.sgl_hdr;
memset(buflout, 0, sizeof(struct qat_alg_buf_list)); memset(buflout, 0, sizeof(struct qat_alg_buf_list));
qat_req->buf.sgl_dst_valid = true; buf->sgl_dst_valid = true;
} }
bufers = buflout->bufers; bufers = buflout->bufers;
...@@ -151,13 +151,13 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst, ...@@ -151,13 +151,13 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst,
bloutp = dma_map_single(dev, buflout, sz_out, DMA_TO_DEVICE); bloutp = dma_map_single(dev, buflout, sz_out, DMA_TO_DEVICE);
if (unlikely(dma_mapping_error(dev, bloutp))) if (unlikely(dma_mapping_error(dev, bloutp)))
goto err_out; goto err_out;
qat_req->buf.blout = buflout; buf->blout = buflout;
qat_req->buf.bloutp = bloutp; buf->bloutp = bloutp;
qat_req->buf.sz_out = sz_out; buf->sz_out = sz_out;
} else { } else {
/* Otherwise set the src and dst to the same address */ /* Otherwise set the src and dst to the same address */
qat_req->buf.bloutp = qat_req->buf.blp; buf->bloutp = buf->blp;
qat_req->buf.sz_out = 0; buf->sz_out = 0;
} }
return 0; return 0;
...@@ -172,7 +172,7 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst, ...@@ -172,7 +172,7 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst,
buflout->bufers[i].len, buflout->bufers[i].len,
DMA_FROM_DEVICE); DMA_FROM_DEVICE);
if (!qat_req->buf.sgl_dst_valid) if (!buf->sgl_dst_valid)
kfree(buflout); kfree(buflout);
err_in: err_in:
...@@ -186,7 +186,7 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst, ...@@ -186,7 +186,7 @@ int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst,
bufl->bufers[i].len, bufl->bufers[i].len,
bufl_dma_dir); bufl_dma_dir);
if (!qat_req->buf.sgl_src_valid) if (!buf->sgl_src_valid)
kfree(bufl); kfree(bufl);
dev_err(dev, "Failed to map buf for dma\n"); dev_err(dev, "Failed to map buf for dma\n");
......
...@@ -6,12 +6,12 @@ ...@@ -6,12 +6,12 @@
#include <linux/types.h> #include <linux/types.h>
#include "qat_crypto.h" #include "qat_crypto.h"
void qat_bl_free_bufl(struct qat_crypto_instance *inst, void qat_bl_free_bufl(struct adf_accel_dev *accel_dev,
struct qat_crypto_request *qat_req); struct qat_crypto_request_buffs *buf);
int qat_bl_sgl_to_bufl(struct qat_crypto_instance *inst, int qat_bl_sgl_to_bufl(struct adf_accel_dev *accel_dev,
struct scatterlist *sgl, struct scatterlist *sgl,
struct scatterlist *sglout, struct scatterlist *sglout,
struct qat_crypto_request *qat_req, struct qat_crypto_request_buffs *buf,
gfp_t flags); gfp_t flags);
#endif #endif
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