<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;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.EmailStyle20
        {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">Is it not possible to use rte_event_crypto_adapter_enqueue<o:p></o:p></p>
<p class="MsoNormal">if you want to send the event context to cryptodev?<o:p></o:p></p>
<p class="MsoNormal">While using rte_cryptodev_enqueue() all previous stage event context is meant to be lost and
<o:p></o:p></p>
<p class="MsoNormal">It would send a new crypto request to cryptodev and is not supposed to be aware of event context.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">P.S. Please fix your mail client to reply in plain text on mailing list.<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 12, 2024 1:22 PM<br>
<b>To:</b> Kundapura, Ganapati <ganapati.kundapura@intel.com>; Akhil Goyal <gakhil@marvell.com>; dpdk-dev <dev@dpdk.org>; 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] RE: 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,<o:p></o:p></p>
<p class="MsoNormal">   Any comments on this proposal?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Ganapati<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 <<a href="mailto:ganapati.kundapura@intel.com">ganapati.kundapura@intel.com</a>>
<br>
<b>Sent:</b> Wednesday, March 6, 2024 10:27 AM<br>
<b>To:</b> Akhil Goyal <<a href="mailto:gakhil@marvell.com">gakhil@marvell.com</a>>; dpdk-dev <<a href="mailto:dev@dpdk.org">dev@dpdk.org</a>>;
<a href="mailto:fanzhang.oss@gmail.com">fanzhang.oss@gmail.com</a>; Ji, Kai <<a href="mailto:kai.ji@intel.com">kai.ji@intel.com</a>>; Power, Ciara <<a href="mailto:ciara.power@intel.com">ciara.power@intel.com</a>>; Kusztal, ArkadiuszX <<a href="mailto:arkadiuszx.kusztal@intel.com">arkadiuszx.kusztal@intel.com</a>>;
 Gujjar, Abhinandan S <<a href="mailto:abhinandan.gujjar@intel.com">abhinandan.gujjar@intel.com</a>>; Jayatheerthan, Jay <<a href="mailto:jay.jayatheerthan@intel.com">jay.jayatheerthan@intel.com</a>>; Jerin Jacob <<a href="mailto:jerinjacobk@gmail.com">jerinjacobk@gmail.com</a>><br>
<b>Subject:</b> RE: 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">Hi Akhil,<o:p></o:p></p>
<p class="MsoNormal">    No changes in sequence of API’s by adding ‘uint8_t impl_opaque’ to ‘struct rte_crypto_op’.<o:p></o:p></p>
<p class="MsoNormal">It’s required in case application/event dispatcher passes some implementation specific value in rte_event::impl_opaque, to restore the value
<o:p></o:p></p>
<p class="MsoNormal">back on to rte_event::impl_opaque after enqueue to and dequeue from cryptodev.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is the pseudocode for one of the use case<o:p></o:p></p>
<p class="MsoNormal">Application/event dispatcher passes implementation specific value in rte_event::impl_opaque.<o:p></o:p></p>
<p class="MsoNormal">struct rte_event ev;<o:p></o:p></p>
<p class="MsoNormal">rte_event_dequeue_burst(…, &ev, …)<o:p></o:p></p>
<p class="MsoNormal">struct rte_crypto_op *crypto_op = ev.event_ptr;   // ev.impl_opaque some implementation specific value<o:p></o:p></p>
<p class="MsoNormal">rte_cryptodev_enqueue_burst(…, crypto_op, …) ; // ev.impl_opaque is not passed to crypto_op<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">With rte_crypto_op::impl_opaque field which is unchanged in library/driver<o:p></o:p></p>
<p class="MsoNormal">crypto_op->impl_opaque = ev.impl_opaque;<o:p></o:p></p>
<p class="MsoNormal">rte_cryptodev_enqueue_burst(…, crypto_op, …) ; <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">…<o:p></o:p></p>
<p class="MsoNormal">rte_crypto_dequeue_burst(…, crypto_op, …)<o:p></o:p></p>
<p class="MsoNormal">ev.event_ptr = crypto_op;  <o:p></o:p></p>
<p class="MsoNormal">…<o:p></o:p></p>
<p class="MsoNormal">rte_event_enqueue_burst(…, &ev, …);  // ev::impl_opaque value is lost<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">with rte_crypto_op::impl_opaque field<o:p></o:p></p>
<p class="MsoNormal">ev.event_ptr = crypto_op;<o:p></o:p></p>
<p class="MsoNormal">ev.impl_opaque = crypto_op->impl_opaque; // implementation specific value in rte_event::impl_opaque restored back<o:p></o:p></p>
<p class="MsoNormal">rte_event_enqueue_burst(…, &ev, …); <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Ganapati<o:p></o:p></p>
<p class="MsoNormal"><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"> Akhil Goyal <<a href="mailto:gakhil@marvell.com">gakhil@marvell.com</a>>
<br>
<b>Sent:</b> Tuesday, March 5, 2024 10:18 PM<br>
<b>To:</b> Kundapura, Ganapati <<a href="mailto:ganapati.kundapura@intel.com">ganapati.kundapura@intel.com</a>>; dpdk-dev <<a href="mailto:dev@dpdk.org">dev@dpdk.org</a>>;
<a href="mailto:fanzhang.oss@gmail.com">fanzhang.oss@gmail.com</a>; Ji, Kai <<a href="mailto:kai.ji@intel.com">kai.ji@intel.com</a>>; Power, Ciara <<a href="mailto:ciara.power@intel.com">ciara.power@intel.com</a>>; Kusztal, ArkadiuszX <<a href="mailto:arkadiuszx.kusztal@intel.com">arkadiuszx.kusztal@intel.com</a>>;
 Gujjar, Abhinandan S <<a href="mailto:abhinandan.gujjar@intel.com">abhinandan.gujjar@intel.com</a>>; Jayatheerthan, Jay <<a href="mailto:jay.jayatheerthan@intel.com">jay.jayatheerthan@intel.com</a>>; Jerin Jacob <<a href="mailto:jerinjacobk@gmail.com">jerinjacobk@gmail.com</a>><br>
<b>Subject:</b> RE: 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">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 <<a href="mailto:ganapati.kundapura@intel.com">ganapati.kundapura@intel.com</a>>
<br>
<b>Sent:</b> Tuesday, March 5, 2024 12:44 PM<br>
<b>To:</b> dpdk-dev <<a href="mailto:dev@dpdk.org">dev@dpdk.org</a>>; Akhil Goyal <<a href="mailto:gakhil@marvell.com">gakhil@marvell.com</a>>;
<a href="mailto:fanzhang.oss@gmail.com">fanzhang.oss@gmail.com</a>; Ji, Kai <<a href="mailto:kai.ji@intel.com">kai.ji@intel.com</a>>; Power, Ciara <<a href="mailto:ciara.power@intel.com">ciara.power@intel.com</a>>; Kusztal, ArkadiuszX <<a href="mailto:arkadiuszx.kusztal@intel.com">arkadiuszx.kusztal@intel.com</a>>;
 Gujjar, Abhinandan S <<a href="mailto:abhinandan.gujjar@intel.com">abhinandan.gujjar@intel.com</a>>; Jayatheerthan, Jay <<a href="mailto:jay.jayatheerthan@intel.com">jay.jayatheerthan@intel.com</a>>; Jerin Jacob <<a href="mailto:jerinjacobk@gmail.com">jerinjacobk@gmail.com</a>><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>
</div>
</div>
</div>
</body>
</html>