[dpdk-dev] [PATCH 1/2] lib/cryptodev: add support to set session private data
Akhil Goyal
akhil.goyal at nxp.com
Tue Jan 16 08:26:21 CET 2018
Hi Abhinandan,
On 1/16/2018 12:35 PM, Gujjar, Abhinandan S wrote:
> Hi Akhil,
>
>> -----Original Message-----
>> From: Akhil Goyal [mailto:akhil.goyal at nxp.com]
>> Sent: Tuesday, January 16, 2018 11:55 AM
>> To: Gujjar, Abhinandan S <abhinandan.gujjar at intel.com>; Doherty, Declan
>> <declan.doherty at intel.com>
>> Cc: dev at dpdk.org; Vangati, Narender <narender.vangati at intel.com>; Rao,
>> Nikhil <nikhil.rao at intel.com>
>> Subject: Re: [PATCH 1/2] lib/cryptodev: add support to set session private data
>>
>> Hi Abhinandan,
>> On 1/16/2018 11:39 AM, Gujjar, Abhinandan S wrote:
>>>>> diff --git a/lib/librte_cryptodev/rte_crypto.h
>>>>> b/lib/librte_cryptodev/rte_crypto.h
>>>>> index bbc510d..3a98cbf 100644
>>>>> --- a/lib/librte_cryptodev/rte_crypto.h
>>>>> +++ b/lib/librte_cryptodev/rte_crypto.h
>>>>> @@ -62,6 +62,18 @@ enum rte_crypto_op_sess_type {
>>>>> RTE_CRYPTO_OP_SECURITY_SESSION /**< Security session crypto
>>>> operation */
>>>>> };
>>>>>
>>>>> +/** Private data types for cryptographic operation
>>>>> + * @see rte_crypto_op::private_data_type */ enum
>>>>> +rte_crypto_op_private_data_type {
>>>>> + RTE_CRYPTO_OP_PRIVATE_DATA_NONE,
>>>>> + /**< No private data */
>>>>> + RTE_CRYPTO_OP_PRIVATE_DATA_OP,
>>>>> + /**< Private data is part of rte_crypto_op and indicated by
>>>>> + * private_data_offset */
>>>>> + RTE_CRYPTO_OP_PRIVATE_DATA_SESSION
>>>>> + /**< Private data is available at session */ };
>>>>> +
>>>> We may get away with this enum. If private_data_offset is "0", then
>>>> we can check with the session if it has priv data or not.
>>> Right now, Application uses 'rte_crypto_op_private_data_type' to
>>> indicate rte_cryptodev_sym_session_set_private_data()
>>> was called to set the private data. Otherwise, how do you indicate there is a
>> private data associated with the session?
>>> Any suggestions?
>> For session based flows, the first choice to store the private data should be in
>> the session. So RTE_CRYPTO_OP_WITH_SESSION or
>> RTE_CRYPTO_OP_SECURITY_SESSION can be used to call
>> rte_cryptodev_sym_session_set_private_data or
>> rte_security_session_set_private_data.
> Case 1: private_data_offset is "0" and sess_type = RTE_CRYPTO_OP_WITH_SESSION -> usual case
> Case 2: private_data_offset is "0" and sess_type = RTE_CRYPTO_OP_WITH_SESSION + event case (access private data)
> Differentiating between case 1 & 2 will be done by checking
> rte_crypto_op_private_data_type == RTE_CRYPTO_OP_PRIVATE_DATA_SESSION.
Consider this:
if (sess_type == RTE_CRYPTO_OP_WITH_SESSION &&
rte_cryptodev_sym_session_get_private_data == NULL)
usual case.
else if (sess_type = RTE_CRYPTO_OP_WITH_SESSION &&
rte_cryptodev_sym_session_get_private_data != NULL)
event case.
else if (sess_type == RTE_CRYPTO_OP_SESSIONLESS &&
private_data_offset != 0)
event case for sessionless op.
I hope all cases can be handled in this way.
-Akhil
More information about the dev
mailing list