[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