<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=utf-8">
<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:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:-apple-system;}
@font-face
        {font-family:"var\(--ff-mono\)";}
@font-face
        {font-family:inherit;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
span.EmailStyle19
        {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:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
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 Yaron,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I can see some possible issues with your code, please see below.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></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 style="mso-ligatures:none">From:</span></b><span style="mso-ligatures:none"> Yaron Illouz <yaroni@radcom.com>
<br>
<b>Sent:</b> Saturday, February 3, 2024 7:03 PM<br>
<b>To:</b> dev@dpdk.org; 'users@dpdk.org' <users@dpdk.org><br>
<b>Subject:</b> rss calculation as the nic<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:inherit;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">[Snip]<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000"><o:p> </o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">static inline uint32_t<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">do_softrss(struct rte_mbuf *m)<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">{<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    uint32_t input_len;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    struct rte_ipv4_tuple ipv4_tuple;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">   
<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    char * pRawPacket = static_cast<char*>(rte_pktmbuf_mtod(pi_mbuf,
 void* ));<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    IpHeader * pIpHeader = (IpHeader *)(pRawPacket
 + offsetOfIp);<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    if(pIpHeader->GetVersion()==4)<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    {<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        ipv4_tuple.src_addr = rte_be_to_cpu_32(pIpHeader->dwSrcAddressBigEndian);<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        ipv4_tuple.dst_addr = rte_be_to_cpu_32(pIpHeader->dwDstAddressBigEndian);<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="color:#002060;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">[Ori] here you are converting BE to CPU
<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        ipv4_tuple.sport = *(uint16_t*)(pRawPacket
 + transportLayerOffset);<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        ipv4_tuple.dport = *(uint16_t*)(pRawPacket
 + transportLayerOffset+2);<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="color:#002060;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">[Ori] here you keep the values as BE<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        input_len = RTE_THASH_V4_L3_LEN;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        return rte_softrss_be((uint32_t
 *)&ipv4_tuple, input_len, rss_key_be);<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:inherit;color:#002060;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">[Ori] the above function expects to get everything in
 BE and  you should also call rte_convert_rss_key before the use of the above function.<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    }<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    return 0;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">}<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">new_rss = do_softrss(mbuf_pointer);<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">std::cout<< std::hex << mbuf_pointer->hash.rss
 << " -> " << new_rss << std::dec << std::endl;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-bottom:13.2pt;background:white;vertical-align:baseline">
<span lang="en-IL" style="font-size:11.5pt;font-family:-apple-system;color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000">And i get a different value than the mbuf_pointer->hash.rss<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">5ed28a5c -> 33eb33eb<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">974c1896 -> 24e224e2<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">1edf1638 -> 21752175<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">8a54c19 -> 80638063<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">459a6f76 -> 1b351b35<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">1cdf1d1c -> e53be53b<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000"><o:p> </o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-bottom:13.2pt;background:white;vertical-align:baseline">
<span lang="en-IL" style="font-size:11.5pt;font-family:-apple-system;color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000">****  I understand it is possible to do it, but i don't get the same value  ***<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">ethtool -i ens5f0<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">driver: mlx5_core<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">version: 5.8-3.0.7<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">firmware-version: 22.32.2004 (MT_0000000437)<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">expansion-rom-version:<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">bus-info: 0000:83:00.0<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">supports-statistics: yes<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">supports-test: yes<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">supports-eeprom-access: no<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">supports-register-dump: no<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span lang="en-IL" style="font-size:10.0pt;font-family:inherit;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">supports-priv-flags: yes</span><span lang="en-IL" style="font-size:10.0pt;font-family:"var\(--ff-mono\)";color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="en-IL"><o:p> </o:p></span></p>
</div>
</div>
</body>
</html>