mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
crypto: hisilicon/sec2 - Add new create qp process
Combine found device and created qp into one operation instead of found device and create qp both are independent operations. when execute multiple tasks, the different threads may find same device at the same time, but the number of queues is insufficient on the device. causing one of threads fail to create a qp. Now fix this, First find device then create qp, if result failure. the current thread will find next device. Signed-off-by: Kai Ye <yekai13@huawei.com> Signed-off-by: Shukun Tan <tanshukun1@huawei.com> Reviewed-by: Zhou Wang <wangzhou1@hisilicon.com> Reviewed-by: Zaibo Xu <xuzaibo@huawei.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
@@ -119,6 +119,7 @@ struct sec_ctx {
|
||||
struct sec_qp_ctx *qp_ctx;
|
||||
struct sec_dev *sec;
|
||||
const struct sec_req_op *req_op;
|
||||
struct hisi_qp **qps;
|
||||
|
||||
/* Half queues for encipher, and half for decipher */
|
||||
u32 hlf_q_num;
|
||||
@@ -168,7 +169,6 @@ struct sec_debug {
|
||||
|
||||
struct sec_dev {
|
||||
struct hisi_qm qm;
|
||||
struct list_head list;
|
||||
struct sec_debug debug;
|
||||
u32 ctx_q_num;
|
||||
bool iommu_used;
|
||||
@@ -176,7 +176,8 @@ struct sec_dev {
|
||||
unsigned long status;
|
||||
};
|
||||
|
||||
struct sec_dev *sec_find_device(int node);
|
||||
void sec_destroy_qps(struct hisi_qp **qps, int qp_num);
|
||||
struct hisi_qp **sec_create_qps(void);
|
||||
int sec_register_to_crypto(void);
|
||||
void sec_unregister_from_crypto(void);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user