<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=iso-8859-1">
<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:10.0pt;
font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
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="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<div id="mail-editor-reference-message-container">
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:36.0pt">
<span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> From: Raslan Darawsheh [<a href="mailto:rasland@nvidia.com">mailto:rasland@nvidia.com</a>]<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> Sent: Sunday, 23 March 2025 13.28<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> Updated the `get_ethertype_by_ptype` function to correctly parse VLAN<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> headers.<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> Fixes: 76730c7b9b5a ("app/testpmd: use packet type parsing API")<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> Cc: haijie1@huawei.com<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">>></span><span style="font-size:11.0pt">> Signed-off-by: Raslan Darawsheh <rasland@nvidia.com><br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> ---<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> app/test-pmd/csumonly.c | 8 +++++---<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> 1 file changed, 5 insertions(+), 3 deletions(-)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> index 5b906eaa53..302cc4cc66 100644<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> --- a/app/test-pmd/csumonly.c<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> +++ b/app/test-pmd/csumonly.c<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> @@ -468,6 +468,7 @@ get_ethertype_by_ptype(struct rte_ether_hdr<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> *eth_hdr, uint32_t ptype)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> {<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> struct rte_vlan_hdr *vlan_hdr;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> uint16_t ethertype;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> + uint32_t i = 0;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> switch (ptype) {<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> case RTE_PTYPE_L3_IPV4:<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> @@ -486,10 +487,11 @@ get_ethertype_by_ptype(struct rte_ether_hdr<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> *eth_hdr, uint32_t ptype)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> return _htons(RTE_ETHER_TYPE_IPV6);<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> default:<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> ethertype = eth_hdr->ether_type;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> - while (eth_hdr->ether_type == _htons(RTE_ETHER_TYPE_VLAN)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> ||<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> - eth_hdr->ether_type == _htons(RTE_ETHER_TYPE_QINQ)) {<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> + while (ethertype == _htons(RTE_ETHER_TYPE_VLAN) ||<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> + ethertype == _htons(RTE_ETHER_TYPE_QINQ)) {<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> vlan_hdr = (struct rte_vlan_hdr *)<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> - ((char *)eth_hdr + sizeof(*eth_hdr));<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> + ((char *)eth_hdr + sizeof(*eth_hdr) +<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> + (i * sizeof(struct rte_vlan_hdr)));<br>
<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">Doesn't work; "i" is not incremented, and remains 0.<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">Instead do this: Initialize (struct rte_vlan_hdr *)vlan_hdr=RTE_PTR_ADD(eth_hdr, offsetof(rte_ether_hdr, ether_type)) before the loop, and move vlan_hdr+=RTE_VLAN_HLEN
inside the loop.<br>
</span><span lang="EN-US" style="font-size:11.0pt">Yes you are correct I had a (i++ *) but must have slipped while rebasing will handle your way in v2
</span><span style="font-size:11.0pt"><br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> ethertype = vlan_hdr->eth_proto;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> }<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> return ethertype;<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> --<br>
</span><span lang="EN-US" style="font-size:11.0pt">></span><span style="font-size:11.0pt">> 2.39.5 (Apple Git-154)</span><span lang="EN-US" style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US" style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US" style="font-size:11.0pt">Kindest regards<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US" style="font-size:11.0pt">Raslan Darawsheh<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>