Hi dpdk-dev,

   Can 'uint8_t reserved[1]' of 'struct rte_crypto_op' be renamed

to 'uint8_t impl_opaque' for implementation specific?

 

An implementation may use this field to hold implementation specific

value to share value between dequeue and enqueue operation and crypto library/driver

can also use this field to share implementation specfic value to event crypto adapter/application.

 

'struct rte_event' has 'uint8_t impl_opaque' member

struct rte_event {

                ...

                uint8_t impl_opaque;

                /**< Implementation specific opaque value.

                * An implementation may use this field to hold

                * implementation specific value to share between

                * dequeue and enqueue operation.

                * The application should not modify this field.

                */

                ...

};

 

Event crypto adapter, on dequeuing the event, enqueues rte_event::event_ptr

to cryptodev as rte_crypto_op and converts the dequeued crypto op to rte_event

without restoring the implementation specific opaque value.

 

By having the 'uint8_t impl_opaque' member in 'struct rte_crypto_op' as

diff --git a/lib/cryptodev/rte_crypto.h b/lib/cryptodev/rte_crypto.h

index dbc2700..af46ec9 100644

--- a/lib/cryptodev/rte_crypto.h

+++ b/lib/cryptodev/rte_crypto.h

@@ -146,10 +146,13 @@ struct rte_crypto_op {

                                /**< TLS record */

                        } param1;

                        /**< Additional per operation parameter 1. */

-                       uint8_t reserved[1];

-                       /**< Reserved bytes to fill 64 bits for

-                        * future additions

+                       uint8_t impl_opaque;

+                       /**< Implementation specific opaque value.

+                        * An implementation may use this field to hold

+                        * implementation specific value to share between

+                        * dequeue and enqueue operation.

                         */

+

 

which is untouched in library/driver and rte_event::impl_opaque field can be restored

while enqueuing the event back to eventdev.

 

Also crypto library/driver can use rte_crypto_op::impl_opaque field to

share implementation specific opaque value to the event crypto adapter/application.

 

I look forward to feedback on this proposal. Patch will be submitted

for review once the initial feedback is received.

 

Thank you,

Ganapati