<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Ganapati,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Can you please explain the flow with a sequence of APIs to be used.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Akhil<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="mso-ligatures:none">From:</span></b><span style="mso-ligatures:none"> Kundapura, Ganapati <ganapati.kundapura@intel.com>
<br>
<b>Sent:</b> Tuesday, March 5, 2024 12:44 PM<br>
<b>To:</b> dpdk-dev <dev@dpdk.org>; Akhil Goyal <gakhil@marvell.com>; fanzhang.oss@gmail.com; Ji, Kai <kai.ji@intel.com>; Power, Ciara <ciara.power@intel.com>; Kusztal, ArkadiuszX <arkadiuszx.kusztal@intel.com>; Gujjar, Abhinandan S <abhinandan.gujjar@intel.com>;
 Jayatheerthan, Jay <jay.jayatheerthan@intel.com>; Jerin Jacob <jerinjacobk@gmail.com><br>
<b>Subject:</b> [EXTERNAL] RFC: Using and renaming 8-bit reserved field of rte_crypto_op for implementation specific<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:red;mso-ligatures:none">Prioritize security for external emails: Confirm sender and content safety before clicking links or opening attachments</span><span style="mso-ligatures:none">
<o:p></o:p></span></p>
<div class="MsoNormal" align="center" style="text-align:center"><span style="mso-ligatures:none">
<hr size="2" width="100%" align="center">
</span></div>
<p class="MsoNormal">Hi dpdk-dev,<o:p></o:p></p>
<p class="MsoNormal">   Can 'uint8_t reserved[1]' of 'struct rte_crypto_op' be renamed
<o:p></o:p></p>
<p class="MsoNormal">to 'uint8_t impl_opaque' for implementation specific?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">An implementation may use this field to hold implementation specific<o:p></o:p></p>
<p class="MsoNormal">value to share value between dequeue and enqueue operation and crypto library/driver<o:p></o:p></p>
<p class="MsoNormal">can also use this field to share implementation specfic value to event crypto adapter/application.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">'struct rte_event' has 'uint8_t impl_opaque' member<o:p></o:p></p>
<p class="MsoNormal">struct rte_event {<o:p></o:p></p>
<p class="MsoNormal">                ...<o:p></o:p></p>
<p class="MsoNormal">                uint8_t impl_opaque;<o:p></o:p></p>
<p class="MsoNormal">                /**< Implementation specific opaque value.<o:p></o:p></p>
<p class="MsoNormal">                * An implementation may use this field to hold<o:p></o:p></p>
<p class="MsoNormal">                * implementation specific value to share between<o:p></o:p></p>
<p class="MsoNormal">                * dequeue and enqueue operation.<o:p></o:p></p>
<p class="MsoNormal">                * The application should not modify this field.<o:p></o:p></p>
<p class="MsoNormal">                */<o:p></o:p></p>
<p class="MsoNormal">                ...<o:p></o:p></p>
<p class="MsoNormal">};<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Event crypto adapter, on dequeuing the event, enqueues rte_event::event_ptr<o:p></o:p></p>
<p class="MsoNormal">to cryptodev as rte_crypto_op and converts the dequeued crypto op to rte_event<o:p></o:p></p>
<p class="MsoNormal">without restoring the implementation specific opaque value.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">By having the 'uint8_t impl_opaque' member in 'struct rte_crypto_op' as<o:p></o:p></p>
<p class="MsoNormal">diff --git a/lib/cryptodev/rte_crypto.h b/lib/cryptodev/rte_crypto.h<o:p></o:p></p>
<p class="MsoNormal">index dbc2700..af46ec9 100644<o:p></o:p></p>
<p class="MsoNormal">--- a/lib/cryptodev/rte_crypto.h<o:p></o:p></p>
<p class="MsoNormal">+++ b/lib/cryptodev/rte_crypto.h<o:p></o:p></p>
<p class="MsoNormal">@@ -146,10 +146,13 @@ struct rte_crypto_op {<o:p></o:p></p>
<p class="MsoNormal">                                /**< TLS record */<o:p></o:p></p>
<p class="MsoNormal">                        } param1;<o:p></o:p></p>
<p class="MsoNormal">                        /**< Additional per operation parameter 1. */<o:p></o:p></p>
<p class="MsoNormal">-                       uint8_t reserved[1];<o:p></o:p></p>
<p class="MsoNormal">-                       /**< Reserved bytes to fill 64 bits for<o:p></o:p></p>
<p class="MsoNormal">-                        * future additions<o:p></o:p></p>
<p class="MsoNormal">+                       uint8_t impl_opaque;<o:p></o:p></p>
<p class="MsoNormal">+                       /**< Implementation specific opaque value.<o:p></o:p></p>
<p class="MsoNormal">+                        * An implementation may use this field to hold<o:p></o:p></p>
<p class="MsoNormal">+                        * implementation specific value to share between<o:p></o:p></p>
<p class="MsoNormal">+                        * dequeue and enqueue operation.<o:p></o:p></p>
<p class="MsoNormal">                         */<o:p></o:p></p>
<p class="MsoNormal">+<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">which is untouched in library/driver and rte_event::impl_opaque field can be restored
<o:p></o:p></p>
<p class="MsoNormal">while enqueuing the event back to eventdev.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Also crypto library/driver can use rte_crypto_op::impl_opaque field to<o:p></o:p></p>
<p class="MsoNormal">share implementation specific opaque value to the event crypto adapter/application.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I look forward to feedback on this proposal. Patch will be submitted
<o:p></o:p></p>
<p class="MsoNormal">for review once the initial feedback is received.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you,<o:p></o:p></p>
<p class="MsoNormal">Ganapati<o:p></o:p></p>
</div>
</div>
</body>
</html>