mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
crypto: ccree - remove struct buff_mgr_handle
The buff_mgr_handle structure contains only a single member, and only one instance exists. Simplify the code and reduce memory consumption by moving this member to struct cc_drvdata. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
ec8f3a5519
commit
040187a0fa
@ -19,10 +19,6 @@ enum dma_buffer_type {
|
||||
DMA_BUFF_TYPE = 2,
|
||||
};
|
||||
|
||||
struct buff_mgr_handle {
|
||||
struct dma_pool *mlli_buffs_pool;
|
||||
};
|
||||
|
||||
union buffer_array_entry {
|
||||
struct scatterlist *sgl;
|
||||
dma_addr_t buffer_dma;
|
||||
@ -402,7 +398,6 @@ int cc_map_cipher_request(struct cc_drvdata *drvdata, void *ctx,
|
||||
{
|
||||
struct cipher_req_ctx *req_ctx = (struct cipher_req_ctx *)ctx;
|
||||
struct mlli_params *mlli_params = &req_ctx->mlli_params;
|
||||
struct buff_mgr_handle *buff_mgr = drvdata->buff_mgr_handle;
|
||||
struct device *dev = drvdata_to_dev(drvdata);
|
||||
struct buffer_array sg_data;
|
||||
u32 dummy = 0;
|
||||
@ -466,7 +461,7 @@ int cc_map_cipher_request(struct cc_drvdata *drvdata, void *ctx,
|
||||
}
|
||||
|
||||
if (req_ctx->dma_buf_type == CC_DMA_BUF_MLLI) {
|
||||
mlli_params->curr_pool = buff_mgr->mlli_buffs_pool;
|
||||
mlli_params->curr_pool = drvdata->mlli_buffs_pool;
|
||||
rc = cc_generate_mlli(dev, &sg_data, mlli_params, flags);
|
||||
if (rc)
|
||||
goto cipher_exit;
|
||||
@ -1007,7 +1002,6 @@ int cc_map_aead_request(struct cc_drvdata *drvdata, struct aead_request *req)
|
||||
struct device *dev = drvdata_to_dev(drvdata);
|
||||
struct buffer_array sg_data;
|
||||
unsigned int authsize = areq_ctx->req_authsize;
|
||||
struct buff_mgr_handle *buff_mgr = drvdata->buff_mgr_handle;
|
||||
int rc = 0;
|
||||
struct crypto_aead *tfm = crypto_aead_reqtfm(req);
|
||||
bool is_gcm4543 = areq_ctx->is_gcm4543;
|
||||
@ -1180,7 +1174,7 @@ int cc_map_aead_request(struct cc_drvdata *drvdata, struct aead_request *req)
|
||||
*/
|
||||
if (areq_ctx->assoc_buff_type == CC_DMA_BUF_MLLI ||
|
||||
areq_ctx->data_buff_type == CC_DMA_BUF_MLLI) {
|
||||
mlli_params->curr_pool = buff_mgr->mlli_buffs_pool;
|
||||
mlli_params->curr_pool = drvdata->mlli_buffs_pool;
|
||||
rc = cc_generate_mlli(dev, &sg_data, mlli_params, flags);
|
||||
if (rc)
|
||||
goto aead_map_failure;
|
||||
@ -1208,7 +1202,6 @@ int cc_map_hash_request_final(struct cc_drvdata *drvdata, void *ctx,
|
||||
u32 *curr_buff_cnt = cc_hash_buf_cnt(areq_ctx);
|
||||
struct mlli_params *mlli_params = &areq_ctx->mlli_params;
|
||||
struct buffer_array sg_data;
|
||||
struct buff_mgr_handle *buff_mgr = drvdata->buff_mgr_handle;
|
||||
int rc = 0;
|
||||
u32 dummy = 0;
|
||||
u32 mapped_nents = 0;
|
||||
@ -1255,7 +1248,7 @@ int cc_map_hash_request_final(struct cc_drvdata *drvdata, void *ctx,
|
||||
|
||||
/*build mlli */
|
||||
if (areq_ctx->data_dma_buf_type == CC_DMA_BUF_MLLI) {
|
||||
mlli_params->curr_pool = buff_mgr->mlli_buffs_pool;
|
||||
mlli_params->curr_pool = drvdata->mlli_buffs_pool;
|
||||
/* add the src data to the sg_data */
|
||||
cc_add_sg_entry(dev, &sg_data, areq_ctx->in_nents, src, nbytes,
|
||||
0, true, &areq_ctx->mlli_nents);
|
||||
@ -1293,7 +1286,6 @@ int cc_map_hash_request_update(struct cc_drvdata *drvdata, void *ctx,
|
||||
unsigned int update_data_len;
|
||||
u32 total_in_len = nbytes + *curr_buff_cnt;
|
||||
struct buffer_array sg_data;
|
||||
struct buff_mgr_handle *buff_mgr = drvdata->buff_mgr_handle;
|
||||
unsigned int swap_index = 0;
|
||||
int rc = 0;
|
||||
u32 dummy = 0;
|
||||
@ -1368,7 +1360,7 @@ int cc_map_hash_request_update(struct cc_drvdata *drvdata, void *ctx,
|
||||
}
|
||||
|
||||
if (areq_ctx->data_dma_buf_type == CC_DMA_BUF_MLLI) {
|
||||
mlli_params->curr_pool = buff_mgr->mlli_buffs_pool;
|
||||
mlli_params->curr_pool = drvdata->mlli_buffs_pool;
|
||||
/* add the src data to the sg_data */
|
||||
cc_add_sg_entry(dev, &sg_data, areq_ctx->in_nents, src,
|
||||
(update_data_len - *curr_buff_cnt), 0, true,
|
||||
@ -1435,39 +1427,22 @@ void cc_unmap_hash_request(struct device *dev, void *ctx,
|
||||
|
||||
int cc_buffer_mgr_init(struct cc_drvdata *drvdata)
|
||||
{
|
||||
struct buff_mgr_handle *buff_mgr_handle;
|
||||
struct device *dev = drvdata_to_dev(drvdata);
|
||||
|
||||
buff_mgr_handle = kmalloc(sizeof(*buff_mgr_handle), GFP_KERNEL);
|
||||
if (!buff_mgr_handle)
|
||||
return -ENOMEM;
|
||||
|
||||
drvdata->buff_mgr_handle = buff_mgr_handle;
|
||||
|
||||
buff_mgr_handle->mlli_buffs_pool =
|
||||
drvdata->mlli_buffs_pool =
|
||||
dma_pool_create("dx_single_mlli_tables", dev,
|
||||
MAX_NUM_OF_TOTAL_MLLI_ENTRIES *
|
||||
LLI_ENTRY_BYTE_SIZE,
|
||||
MLLI_TABLE_MIN_ALIGNMENT, 0);
|
||||
|
||||
if (!buff_mgr_handle->mlli_buffs_pool)
|
||||
goto error;
|
||||
if (!drvdata->mlli_buffs_pool)
|
||||
return -ENOMEM;
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
cc_buffer_mgr_fini(drvdata);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
int cc_buffer_mgr_fini(struct cc_drvdata *drvdata)
|
||||
{
|
||||
struct buff_mgr_handle *buff_mgr_handle = drvdata->buff_mgr_handle;
|
||||
|
||||
if (buff_mgr_handle) {
|
||||
dma_pool_destroy(buff_mgr_handle->mlli_buffs_pool);
|
||||
kfree(drvdata->buff_mgr_handle);
|
||||
drvdata->buff_mgr_handle = NULL;
|
||||
}
|
||||
dma_pool_destroy(drvdata->mlli_buffs_pool);
|
||||
return 0;
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ struct cc_drvdata {
|
||||
struct completion hw_queue_avail; /* wait for HW queue availability */
|
||||
struct platform_device *plat_dev;
|
||||
u32 mlli_sram_addr;
|
||||
void *buff_mgr_handle;
|
||||
struct dma_pool *mlli_buffs_pool;
|
||||
void *cipher_handle;
|
||||
void *hash_handle;
|
||||
void *aead_handle;
|
||||
|
Loading…
Reference in New Issue
Block a user