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,
|
DMA_BUFF_TYPE = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct buff_mgr_handle {
|
|
||||||
struct dma_pool *mlli_buffs_pool;
|
|
||||||
};
|
|
||||||
|
|
||||||
union buffer_array_entry {
|
union buffer_array_entry {
|
||||||
struct scatterlist *sgl;
|
struct scatterlist *sgl;
|
||||||
dma_addr_t buffer_dma;
|
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 cipher_req_ctx *req_ctx = (struct cipher_req_ctx *)ctx;
|
||||||
struct mlli_params *mlli_params = &req_ctx->mlli_params;
|
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 device *dev = drvdata_to_dev(drvdata);
|
||||||
struct buffer_array sg_data;
|
struct buffer_array sg_data;
|
||||||
u32 dummy = 0;
|
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) {
|
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);
|
rc = cc_generate_mlli(dev, &sg_data, mlli_params, flags);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto cipher_exit;
|
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 device *dev = drvdata_to_dev(drvdata);
|
||||||
struct buffer_array sg_data;
|
struct buffer_array sg_data;
|
||||||
unsigned int authsize = areq_ctx->req_authsize;
|
unsigned int authsize = areq_ctx->req_authsize;
|
||||||
struct buff_mgr_handle *buff_mgr = drvdata->buff_mgr_handle;
|
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
struct crypto_aead *tfm = crypto_aead_reqtfm(req);
|
struct crypto_aead *tfm = crypto_aead_reqtfm(req);
|
||||||
bool is_gcm4543 = areq_ctx->is_gcm4543;
|
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 ||
|
if (areq_ctx->assoc_buff_type == CC_DMA_BUF_MLLI ||
|
||||||
areq_ctx->data_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);
|
rc = cc_generate_mlli(dev, &sg_data, mlli_params, flags);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto aead_map_failure;
|
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);
|
u32 *curr_buff_cnt = cc_hash_buf_cnt(areq_ctx);
|
||||||
struct mlli_params *mlli_params = &areq_ctx->mlli_params;
|
struct mlli_params *mlli_params = &areq_ctx->mlli_params;
|
||||||
struct buffer_array sg_data;
|
struct buffer_array sg_data;
|
||||||
struct buff_mgr_handle *buff_mgr = drvdata->buff_mgr_handle;
|
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
u32 dummy = 0;
|
u32 dummy = 0;
|
||||||
u32 mapped_nents = 0;
|
u32 mapped_nents = 0;
|
||||||
@ -1255,7 +1248,7 @@ int cc_map_hash_request_final(struct cc_drvdata *drvdata, void *ctx,
|
|||||||
|
|
||||||
/*build mlli */
|
/*build mlli */
|
||||||
if (areq_ctx->data_dma_buf_type == CC_DMA_BUF_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 */
|
/* add the src data to the sg_data */
|
||||||
cc_add_sg_entry(dev, &sg_data, areq_ctx->in_nents, src, nbytes,
|
cc_add_sg_entry(dev, &sg_data, areq_ctx->in_nents, src, nbytes,
|
||||||
0, true, &areq_ctx->mlli_nents);
|
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;
|
unsigned int update_data_len;
|
||||||
u32 total_in_len = nbytes + *curr_buff_cnt;
|
u32 total_in_len = nbytes + *curr_buff_cnt;
|
||||||
struct buffer_array sg_data;
|
struct buffer_array sg_data;
|
||||||
struct buff_mgr_handle *buff_mgr = drvdata->buff_mgr_handle;
|
|
||||||
unsigned int swap_index = 0;
|
unsigned int swap_index = 0;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
u32 dummy = 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) {
|
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 */
|
/* add the src data to the sg_data */
|
||||||
cc_add_sg_entry(dev, &sg_data, areq_ctx->in_nents, src,
|
cc_add_sg_entry(dev, &sg_data, areq_ctx->in_nents, src,
|
||||||
(update_data_len - *curr_buff_cnt), 0, true,
|
(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)
|
int cc_buffer_mgr_init(struct cc_drvdata *drvdata)
|
||||||
{
|
{
|
||||||
struct buff_mgr_handle *buff_mgr_handle;
|
|
||||||
struct device *dev = drvdata_to_dev(drvdata);
|
struct device *dev = drvdata_to_dev(drvdata);
|
||||||
|
|
||||||
buff_mgr_handle = kmalloc(sizeof(*buff_mgr_handle), GFP_KERNEL);
|
drvdata->mlli_buffs_pool =
|
||||||
if (!buff_mgr_handle)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
drvdata->buff_mgr_handle = buff_mgr_handle;
|
|
||||||
|
|
||||||
buff_mgr_handle->mlli_buffs_pool =
|
|
||||||
dma_pool_create("dx_single_mlli_tables", dev,
|
dma_pool_create("dx_single_mlli_tables", dev,
|
||||||
MAX_NUM_OF_TOTAL_MLLI_ENTRIES *
|
MAX_NUM_OF_TOTAL_MLLI_ENTRIES *
|
||||||
LLI_ENTRY_BYTE_SIZE,
|
LLI_ENTRY_BYTE_SIZE,
|
||||||
MLLI_TABLE_MIN_ALIGNMENT, 0);
|
MLLI_TABLE_MIN_ALIGNMENT, 0);
|
||||||
|
|
||||||
if (!buff_mgr_handle->mlli_buffs_pool)
|
if (!drvdata->mlli_buffs_pool)
|
||||||
goto error;
|
return -ENOMEM;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
|
||||||
cc_buffer_mgr_fini(drvdata);
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int cc_buffer_mgr_fini(struct cc_drvdata *drvdata)
|
int cc_buffer_mgr_fini(struct cc_drvdata *drvdata)
|
||||||
{
|
{
|
||||||
struct buff_mgr_handle *buff_mgr_handle = drvdata->buff_mgr_handle;
|
dma_pool_destroy(drvdata->mlli_buffs_pool);
|
||||||
|
|
||||||
if (buff_mgr_handle) {
|
|
||||||
dma_pool_destroy(buff_mgr_handle->mlli_buffs_pool);
|
|
||||||
kfree(drvdata->buff_mgr_handle);
|
|
||||||
drvdata->buff_mgr_handle = NULL;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ struct cc_drvdata {
|
|||||||
struct completion hw_queue_avail; /* wait for HW queue availability */
|
struct completion hw_queue_avail; /* wait for HW queue availability */
|
||||||
struct platform_device *plat_dev;
|
struct platform_device *plat_dev;
|
||||||
u32 mlli_sram_addr;
|
u32 mlli_sram_addr;
|
||||||
void *buff_mgr_handle;
|
struct dma_pool *mlli_buffs_pool;
|
||||||
void *cipher_handle;
|
void *cipher_handle;
|
||||||
void *hash_handle;
|
void *hash_handle;
|
||||||
void *aead_handle;
|
void *aead_handle;
|
||||||
|
Loading…
Reference in New Issue
Block a user