mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-18 06:33:43 -04:00
crypto: hisilicon - merge sgl support to hisi_qm module
As HW SGL can be seen as a data format of QM's sqe, we merge sgl code into qm module and rename it as hisi_qm, which reduces the number of module and make the name less generic. This patch also modify the interface of SGL: - Create/free hisi_acc_sgl_pool inside. - Let user to pass the SGE number in one SGL when creating sgl pool, which is better than a unified module parameter for sgl module before. - Modify zip driver according to sgl interface change. Signed-off-by: Zhou Wang <wangzhou1@hisilicon.com> Signed-off-by: Shukun Tan <tanshukun1@huawei.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#define HZIP_CTX_Q_NUM 2
|
||||
#define HZIP_GZIP_HEAD_BUF 256
|
||||
#define HZIP_ALG_PRIORITY 300
|
||||
#define HZIP_SGL_SGE_NR 10
|
||||
|
||||
static const u8 zlib_head[HZIP_ZLIB_HEAD_SIZE] = {0x78, 0x9c};
|
||||
static const u8 gzip_head[HZIP_GZIP_HEAD_SIZE] = {0x1f, 0x8b, 0x08, 0x0, 0x0,
|
||||
@@ -67,7 +68,7 @@ struct hisi_zip_qp_ctx {
|
||||
struct hisi_qp *qp;
|
||||
struct hisi_zip_sqe zip_sqe;
|
||||
struct hisi_zip_req_q req_q;
|
||||
struct hisi_acc_sgl_pool sgl_pool;
|
||||
struct hisi_acc_sgl_pool *sgl_pool;
|
||||
struct hisi_zip *zip_dev;
|
||||
struct hisi_zip_ctx *ctx;
|
||||
};
|
||||
@@ -265,14 +266,15 @@ static void hisi_zip_release_req_q(struct hisi_zip_ctx *ctx)
|
||||
static int hisi_zip_create_sgl_pool(struct hisi_zip_ctx *ctx)
|
||||
{
|
||||
struct hisi_zip_qp_ctx *tmp;
|
||||
int i, ret;
|
||||
struct device *dev;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < HZIP_CTX_Q_NUM; i++) {
|
||||
tmp = &ctx->qp_ctx[i];
|
||||
ret = hisi_acc_create_sgl_pool(&tmp->qp->qm->pdev->dev,
|
||||
&tmp->sgl_pool,
|
||||
QM_Q_DEPTH << 1);
|
||||
if (ret < 0) {
|
||||
dev = &tmp->qp->qm->pdev->dev;
|
||||
tmp->sgl_pool = hisi_acc_create_sgl_pool(dev, QM_Q_DEPTH << 1,
|
||||
HZIP_SGL_SGE_NR);
|
||||
if (IS_ERR(tmp->sgl_pool)) {
|
||||
if (i == 1)
|
||||
goto err_free_sgl_pool0;
|
||||
return -ENOMEM;
|
||||
@@ -283,7 +285,7 @@ static int hisi_zip_create_sgl_pool(struct hisi_zip_ctx *ctx)
|
||||
|
||||
err_free_sgl_pool0:
|
||||
hisi_acc_free_sgl_pool(&ctx->qp_ctx[QPC_COMP].qp->qm->pdev->dev,
|
||||
&ctx->qp_ctx[QPC_COMP].sgl_pool);
|
||||
ctx->qp_ctx[QPC_COMP].sgl_pool);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -293,7 +295,7 @@ static void hisi_zip_release_sgl_pool(struct hisi_zip_ctx *ctx)
|
||||
|
||||
for (i = 0; i < HZIP_CTX_Q_NUM; i++)
|
||||
hisi_acc_free_sgl_pool(&ctx->qp_ctx[i].qp->qm->pdev->dev,
|
||||
&ctx->qp_ctx[i].sgl_pool);
|
||||
ctx->qp_ctx[i].sgl_pool);
|
||||
}
|
||||
|
||||
static void hisi_zip_remove_req(struct hisi_zip_qp_ctx *qp_ctx,
|
||||
@@ -512,7 +514,7 @@ static int hisi_zip_do_work(struct hisi_zip_req *req,
|
||||
struct hisi_zip_sqe *zip_sqe = &qp_ctx->zip_sqe;
|
||||
struct hisi_qp *qp = qp_ctx->qp;
|
||||
struct device *dev = &qp->qm->pdev->dev;
|
||||
struct hisi_acc_sgl_pool *pool = &qp_ctx->sgl_pool;
|
||||
struct hisi_acc_sgl_pool *pool = qp_ctx->sgl_pool;
|
||||
dma_addr_t input;
|
||||
dma_addr_t output;
|
||||
int ret;
|
||||
|
||||
Reference in New Issue
Block a user