<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:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 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=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<base href="https://bugs.dpdk.org/"><!--[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:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
@font-face
{font-family:Aptos;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:12.0pt;
font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0cm;
font-size:10.0pt;
font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
font-size:12.0pt;
font-family:"Aptos",sans-serif;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
span.EmailStyle22
{mso-style-type:personal-reply;
font-family:"Aptos",sans-serif;
color:windowtext;
font-weight:normal;
font-style:normal;}
.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;}
/* List Definitions */
@list l0
{mso-list-id:221723304;
mso-list-template-ids:-394254814;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:710881490;
mso-list-template-ids:1082264834;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2
{mso-list-id:1660229197;
mso-list-type:hybrid;
mso-list-template-ids:-668015970 536870927 536870937 536870939 536870927 536870937 536870939 536870927 536870937 536870939;}
@list l2:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></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-IL" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US">Hello<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US">Mlx5 pmd supports only these two modes:<o:p></o:p></span></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoListParagraph" style="margin-left:0cm;mso-list:l2 level1 lfo3"><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US">fragment_offset=0x0000 with mask 0xffff means MF is 0 and frag-offset is 0.</span><span lang="en-IL" style="font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US"></span><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US"><br>
This is an unfragmented packet.</span><span lang="en-IL" style="font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US"></span><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p></o:p></span></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l2 level1 lfo3"><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US">fragment_offset spec 0x0001 and last 0x3fff with mask 0xffff, means MF and/or frag-offset is not 0.</span><span lang="en-IL" style="font-size:11.0pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-US"></span><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US"><br>
This is a fragmented packet.<o:p></o:p></span></li></ol>
<p class="MsoNormal"><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US">To answer your questions, mlx5 doesn’t support match on head fragment and to match on non-head fragment, try mode 2 above.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Asaf Penso<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span lang="en-IL" style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> bugzilla@dpdk.org <bugzilla@dpdk.org>
<br>
<b>Sent:</b> Tuesday, 2 July 2024 17:21<br>
<b>To:</b> dev@dpdk.org<br>
<b>Subject:</b> [DPDK/testpmd Bug 1479] mlx5: Not able to create rte_flows to match head fragments and sub fragments<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Bug ID<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal"><a href="https://bugs.dpdk.org/show_bug.cgi?id=1479" title="UNCONFIRMED - mlx5: Not able to create rte_flows to match head fragments and sub fragments">1479</a>
<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Summary<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">mlx5: Not able to create rte_flows to match head fragments and sub fragments
<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Product<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">DPDK <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Version<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">21.11 <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Hardware<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">All <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>OS<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">All <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Status<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">UNCONFIRMED <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Severity<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">major <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Priority<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">Normal <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Component<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">testpmd <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Assignee<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal"><a href="mailto:dev@dpdk.org">dev@dpdk.org</a> <o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Reporter<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal"><a href="mailto:pingtosiva@gmail.com">pingtosiva@gmail.com</a>
<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal" align="center" style="text-align:center"><b>Target Milestone<o:p></o:p></b></p>
</td>
<td style="padding:6.0pt 6.0pt 6.0pt 6.0pt">
<p class="MsoNormal">--- <o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<div>
<pre>I am trying to create an RTE flow rule to match head and non-head fragments to<o:p></o:p></pre>
<pre>compute NIC RSS based on 5tuple/3tuple respectively on connectX-6 DX NIC and<o:p></o:p></pre>
<pre>mlx5 driver. <o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>As part of it when trying to install RTE flow rule using testpmd on dpdk<o:p></o:p></pre>
<pre>21.11/23.07 version, the following errors are thrown.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Flow rule to match head fragment<o:p></o:p></pre>
<pre>=================================<o:p></o:p></pre>
<pre>testpmd> flow create 0 ingress pattern eth / ipv4 fragment_offset spec 0x2000<o:p></o:p></pre>
<pre>fragment_offset mask 0x3fff / end actions drop / count / end<o:p></o:p></pre>
<pre>port_flow_complain(): Caught PMD error type 13 (specific pattern item): cause:<o:p></o:p></pre>
<pre>0x7ffd1954c548, match on first fragment not supported: Operation not supported<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Flow rule to match non-head fragments<o:p></o:p></pre>
<pre>======================================<o:p></o:p></pre>
<pre>testpmd> flow validate 0 ingress pattern eth / ipv4 fragment_offset is 0x2001<o:p></o:p></pre>
<pre>fragment_offset last 0x1fff / end actions drop / end<o:p></o:p></pre>
<pre>port_flow_complain(): Caught PMD error type 11 (item specification range):<o:p></o:p></pre>
<pre>cause: 0x7ffc6f629534, specified range not supported: Operation not supported<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>When I browsed mlx5_flow_dv.c driver file, there are set of conditions<o:p></o:p></pre>
<pre>implemented to block this configurations.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Could you kindly help is there a way to compute different RSS hash for<o:p></o:p></pre>
<pre>fragments and non-fragments using RTE flow rules on mellanox?<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Thanks! in advance.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre> /*<o:p></o:p></pre>
<pre> * Match on fragment_offset 0x2000 means MF is 1 and frag-offset is 0,<o:p></o:p></pre>
<pre> * indicating this is 1st fragment of fragmented packet.<o:p></o:p></pre>
<pre> * This is not yet supported in MLX5, return appropriate error message.<o:p></o:p></pre>
<pre> */<o:p></o:p></pre>
<pre> if (fragment_offset_spec == RTE_BE16(RTE_IPV4_HDR_MF_FLAG))<o:p></o:p></pre>
<pre> return rte_flow_error_set(error, ENOTSUP,<o:p></o:p></pre>
<pre> RTE_FLOW_ERROR_TYPE_ITEM, item,<o:p></o:p></pre>
<pre> "match on first fragment not "<o:p></o:p></pre>
<pre> "supported");<o:p></o:p></pre>
<pre> if (fragment_offset_spec && !last)<o:p></o:p></pre>
<pre> return rte_flow_error_set(error, ENOTSUP,<o:p></o:p></pre>
<pre> RTE_FLOW_ERROR_TYPE_ITEM, item,<o:p></o:p></pre>
<pre> "specified value not supported");<o:p></o:p></pre>
<pre> /*<o:p></o:p></pre>
<pre> * Match on fragment_offset spec 0x2001 and last 0x3fff<o:p></o:p></pre>
<pre> * means MF is 1 and frag-offset is > 0.<o:p></o:p></pre>
<pre> * This packet is fragment 2nd and onward, excluding last.<o:p></o:p></pre>
<pre> * This is not yet supported in MLX5, return appropriate<o:p></o:p></pre>
<pre> * error message.<o:p></o:p></pre>
<pre> */<o:p></o:p></pre>
<pre> if (fragment_offset_spec == RTE_BE16(RTE_IPV4_HDR_MF_FLAG + 1) &&<o:p></o:p></pre>
<pre> fragment_offset_last == RTE_BE16(MLX5_IPV4_FRAG_OFFSET_MASK))<o:p></o:p></pre>
<pre> return rte_flow_error_set(error, ENOTSUP,<o:p></o:p></pre>
<pre> RTE_FLOW_ERROR_TYPE_ITEM_LAST,<o:p></o:p></pre>
<pre> last, "match on following "<o:p></o:p></pre>
<pre> "fragments not supported");<o:p></o:p></pre>
<pre> /*<o:p></o:p></pre>
<pre> * Match on fragment_offset spec 0x0001 and last 0x1fff<o:p></o:p></pre>
<pre> * means MF is 0 and frag-offset is > 0.<o:p></o:p></pre>
<pre> * This packet is last fragment of fragmented packet.<o:p></o:p></pre>
<pre> * This is not yet supported in MLX5, return appropriate<o:p></o:p></pre>
<pre> * error message.<o:p></o:p></pre>
<pre> */<o:p></o:p></pre>
<pre> if (fragment_offset_spec == RTE_BE16(1) &&<o:p></o:p></pre>
<pre> fragment_offset_last == RTE_BE16(RTE_IPV4_HDR_OFFSET_MASK))<o:p></o:p></pre>
<pre> return rte_flow_error_set(error, ENOTSUP,<o:p></o:p></pre>
<pre> RTE_FLOW_ERROR_TYPE_ITEM_LAST,<o:p></o:p></pre>
<pre> last, "match on last "<o:p></o:p></pre>
<pre> "fragment not supported");<o:p></o:p></pre>
<pre> <o:p></o:p></pre>
</div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="100%" align="center">
</div>
<p class="MsoNormal">You are receiving this mail because: <o:p></o:p></p>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
You are the assignee for the bug.<o:p></o:p></li></ul>
</div>
</div>
</body>
</html>