<html 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=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<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:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Aptos",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="en-PS" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<p class="MsoNormal"><b><span lang="EN-US">> </span></b><span style="font-size:11.0pt">Hi All,<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">I wonder whether it would be possible to implement HW accelerated GTP<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">encapsulation (as a first step) functionality using a Bluefield 2 NIC<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">and the rte_flow API?<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">yes should be supported.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">The encapsulation would need to work between different ports using<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">hairpin queues.<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">Let's say I already have the rules in dpdk-testpmd that remove the<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">original ETH header using raw_decap, and add the new ETH/IP/UDP/GTP<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">using raw_encap.<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">Now I would need to update some header fields (payload length for<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">pv4, udp, gtp). I would use "modify_field op add", but I found no way<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">I can access the payload length field for UDP and GTP.</span><span lang="EN-US" style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">These are usually calculated by the NIC on ecnap so you don't need to set these fields or modify them.</span><span style="font-size:11.0pt"><br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">For example, when I try to access the UDP payload length field by using<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">"dst_type udp_port_src dst_offset 32" in the "modify_field" action,<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">I get a "destination offset is too big: Invalid argument" error.<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">In general and in MLX5 we don’t support changing the length field of the packet<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">This seems to be caused by a check in the mlx5 driver, which is a bit<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">surprising as the documentation in rte_flow.rst (DPDK version 24.03)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">says that:<br>
<br>
   </span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">``offset`` allows going past the specified packet field boundary to<br>
   </span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">copy a field to an arbitrary place in a packet,<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">Is this just a driver limitation or an HW limitation? Or could a flex<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">item solve this?<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">Thanks, Laszlo</span><span lang="EN-US" style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Kindest regards<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Raslan Darawsheh<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</body>
</html>