<div dir="ltr"><div dir="ltr"><div>Hi Ivan,</div><div><br></div><div>Thanks for your comments, <span><span>please see my comments inline</span></span> below.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">сб, 30 авг. 2025 г. в 22:14, Ivan Malov <<a href="mailto:ivan.malov@arknetworks.am" target="_blank">ivan.malov@arknetworks.am</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Vladimir,<br>
<br>
On Sat, 30 Aug 2025, Vladimir Medvedkin wrote:<br>
<br>
> Hi all,<br>
><br>
> This series reworks the ethdev API related to advanced queueing configuration,<br>
> specifically Data Center Bridging (DCB) and Virtual Machine Device Queues<br>
> (VMDq). The existing API was designed years ago around ixgbe hardware<br>
> assumptions, which makes it difficult to properly support modern NICs and their<br>
> more flexible capabilities.<br>
><br>
<br>
I like this overall.<br>
<br>
The series seems to be a good rework, but the PMD changes are going to be vast.<br>
Also, given the fact it targets the same release cycle as some new drivers do,<br>
it can be problematic to apply 'rx_adv_conf.mq_mode' to, say, [1] on the go.<br>
<br>
[1] <a href="https://mails.dpdk.org/archives/dev/2025-August/323562.html" rel="noreferrer" target="_blank">https://mails.dpdk.org/archives/dev/2025-August/323562.html</a></blockquote><div><br></div><div>Yes, I see, some patches <span style="white-space:pre-wrap">in</span><span style="white-space:pre-wrap"> the </span><span style="white-space:pre-wrap">series</span><span style="white-space:pre-wrap"> may</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">be</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">postponed</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">for</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">later</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">if</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">necessary</span><span style="white-space:pre-wrap">.</span></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
<br>
Also, now we've touched on the topic of traffic classes and priorities, if I may<br>
be so bold as to ask an unrelated question about [2]. Does the priority value<br>
have to come specifically from VLAN header? Or can it come, say, from ToS of<br>
IPv4, or Traffic Class of IPv6, or from some vendor-specific header?<br>
<br>
[2] <a href="https://doc.dpdk.org/api-25.07/structrte__eth__pfc__conf.html#a0ad043071ccc7a261d79a759dc9c6f0c" rel="noreferrer" target="_blank">https://doc.dpdk.org/api-25.07/structrte__eth__pfc__conf.html#a0ad043071ccc7a261d79a759dc9c6f0c</a><br>
<br></blockquote><div><br></div><span style="white-space:pre-wrap">That</span><span style="white-space:pre-wrap">'s a </span><span style="white-space:pre-wrap">good</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">question</span><span style="white-space:pre-wrap">.</span><span style="white-space:pre-wrap"> The </span><span style="white-space:pre-wrap">short</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">answer</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">is</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">yes</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">at</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">the</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">moment</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">but</span><span style="white-space:pre-wrap"> it won</span><span style="white-space:pre-wrap">'t</span><span style="white-space:pre-wrap"> be </span><span style="white-space:pre-wrap">100</span><span style="white-space:pre-wrap">%</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">true</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">in</span><span style="white-space:pre-wrap"> the </span><span style="white-space:pre-wrap">future</span><span style="white-space:pre-wrap">.</span><div><span style="white-space:pre-wrap">For </span><span style="white-space:pre-wrap">example</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">Intel</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">E800</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">Series</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">network</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">adapters</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">can</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">operate</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">in</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">two</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">modes</span><span style="white-space:pre-wrap">, </span><span style="white-space:pre-wrap">depending</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">on</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">how</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">HW</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">classifies</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">incoming</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">packets</span><span style="white-space:pre-wrap"> into their </span><span style="white-space:pre-wrap">respective</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">traffic</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">classes</span><span style="white-space:pre-wrap">. </span><span style="white-space:pre-wrap"></span><span style="white-space:pre-wrap">One</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">of</span><span style="white-space:pre-wrap"> the </span><span style="white-space:pre-wrap">modes</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">uses</span><span style="white-space:pre-wrap"> a </span><span style="white-space:pre-wrap">3</span><span style="white-space:pre-wrap">-</span><span style="white-space:pre-wrap">bit</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">PCP</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">VLAN</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">field</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">and</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">this</span><span style="white-space:pre-wrap"> is the </span><span style="white-space:pre-wrap">default</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">mode</span><span style="white-space:pre-wrap">.</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">Another</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">mode</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">is</span><span style="white-space:pre-wrap"> to </span><span style="white-space:pre-wrap">use</span><span style="white-space:pre-wrap"> the </span><span style="white-space:pre-wrap">6</span><span style="white-space:pre-wrap">-</span><span style="white-space:pre-wrap">bit</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">DSCP</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">which</span><span style="white-space:pre-wrap"> is </span><span style="white-space:pre-wrap">supported</span><span style="white-space:pre-wrap"> by </span><span style="white-space:pre-wrap">E800 NICs</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">but</span><span style="white-space:pre-wrap"> is </span><span style="white-space:pre-wrap">not</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">currently</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">enabled</span><span style="white-space:pre-wrap">.</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap"></span><span style="white-space:pre-wrap">In</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">DSCP</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">mode</span><span style="white-space:pre-wrap">, </span><span style="white-space:pre-wrap">HW</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">maintains</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">one</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">additional</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">DSCP</span><span style="white-space:pre-wrap">-</span><span style="white-space:pre-wrap">to</span><span style="white-space:pre-wrap">-</span><span style="white-space:pre-wrap">UP</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">mapping</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">table</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">to</span><span style="white-space:pre-wrap"> translate</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">incoming</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">packets</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">to</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">intermediate</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">UP</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">and</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">then</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">uses</span><span style="white-space:pre-wrap"> a </span><span style="white-space:pre-wrap">usual</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">UP</span><span style="white-space:pre-wrap">-</span><span style="white-space:pre-wrap">to</span><span style="white-space:pre-wrap">-</span><span style="white-space:pre-wrap">TC</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">mapping</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">table </span><span style="white-space:pre-wrap">(ref. to the E810 datasheet </span>8.2.1.3.1.2 Packet CoS Classification Flow in “DSCP PFC” Mode<span style="white-space:pre-wrap">). Also please note that the PFC PAUSE frames carry per-priority pause quanta for 8 priorities, and those priorities usually correspond to VLAN PCP.</span></div><div><span style="white-space:pre-wrap">Regarding vendor-specific headers, </span><span style="white-space:pre-wrap">I</span><span style="white-space:pre-wrap">'m </span><span style="white-space:pre-wrap">not</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">aware</span><span style="white-space:pre-wrap"> of </span><span style="white-space:pre-wrap">any</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">vendor</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">that</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">supports</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">this</span><span style="white-space:pre-wrap">.</span> <span style="white-space:pre-wrap">Although</span><span style="white-space:pre-wrap"> this is </span><span style="white-space:pre-wrap">theoretically</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">possible</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">keep</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">in</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">mind</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">that</span><span style="white-space:pre-wrap"> the </span><span style="white-space:pre-wrap">HW</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">block</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">responsible</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">for</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">TC</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">classification</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">should</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">usually</span><span style="white-space:pre-wrap"> be </span><span style="white-space:pre-wrap">located</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">somewhere</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">at</span><span style="white-space:pre-wrap"> the </span><span style="white-space:pre-wrap">very</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">beginning</span><span style="white-space:pre-wrap"> of the </span><span style="white-space:pre-wrap">Rx</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">pipeline</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">there</span><span style="white-space:pre-wrap"> are </span><span style="white-space:pre-wrap">strict performance</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">limitations</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">for</span><span style="white-space:pre-wrap"> it</span><span style="white-space:pre-wrap">,</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">so</span><span style="white-space:pre-wrap"> most </span><span style="white-space:pre-wrap">likely</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">its</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">implementation</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">will</span><span style="white-space:pre-wrap"> be </span><span style="white-space:pre-wrap">as</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">simple</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">as</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">possible</span><span style="white-space:pre-wrap">.</span></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Thank you.<br>
</blockquote></div></div><div><br clear="all"></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Regards,<br></div>Vladimir<br></div></div>