<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\)";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:inherit;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;
        mso-fareast-language:EN-US;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@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-IL" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal" style="margin-bottom:13.2pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:-apple-system;color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000">I am using mellanox Connectx6, dpdk 22<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:13.2pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:-apple-system;color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000">'MT2892 Family [ConnectX-6 Dx] 101d' if=ens5f1 drv=mlx5_core unused=igb_uio<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:13.2pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:-apple-system;color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000">I configure port with multiqueue and split traffic according to ip+port<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:13.2pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:-apple-system;color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000">I want to calculate the hash as the nic do, to be able to load balance traffic ( from another card ) - the information is inside the packet
 and not in in ip and transport layer. For this purpose i need to be able to calculate the hash value as the nic do for the first nic.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:13.2pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:-apple-system;color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000">Here is the code i use to split traffic to rx queues<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        /*rte flow*/<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        const int MAX_PATTERN_IN_FLOW = 10;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        const int MAX_ACTIONS_IN_FLOW = 10;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        struct rte_flow_attr attr;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        struct rte_flow_item pattern[MAX_PATTERN_IN_FLOW];<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        struct rte_flow_action actions[MAX_ACTIONS_IN_FLOW];<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        struct rte_flow *flow;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        struct rte_flow_error error;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        memset(pattern, 0, sizeof(pattern));<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        memset(actions, 0, sizeof(actions));<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        /* Set the rule attribute, only ingress
 packets will be checked. 8< */<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        memset(&attr, 0, sizeof(struct rte_flow_attr));<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        attr.ingress = 1;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[0].type = RTE_FLOW_ITEM_TYPE_ETH;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[0].spec = NULL;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[1].type = RTE_FLOW_ITEM_TYPE_IPV4;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[1].spec = NULL;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[2].type = RTE_FLOW_ITEM_TYPE_GRE;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[2].spec = NULL;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[3].type = RTE_FLOW_ITEM_TYPE_ETH;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[3].spec = NULL;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[4].type = RTE_FLOW_ITEM_TYPE_IPV4;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[4].spec = NULL;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[5].type = RTE_FLOW_ITEM_TYPE_UDP;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[5].spec = NULL;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        // end the pattern array
<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        pattern[6].type = RTE_FLOW_ITEM_TYPE_END;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        struct rte_flow_action_rss rss_conf;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        uint16_t queues[pi_nNumRxQueues];<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        rss_conf.func = RTE_ETH_HASH_FUNCTION_DEFAULT;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        uint64_t hf = RTE_ETH_RSS_IP | RTE_ETH_RSS_TCP
 | RTE_ETH_RSS_UDP | RTE_ETH_RSS_SCTP;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        hf &= pi_devInfo.flow_type_rss_offloads;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        rss_conf.types = hf;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        rss_conf.queue_num = pi_nNumRxQueues;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        for (int nqQueueIndex= 0; nqQueueIndex
 < pi_nNumRxQueues; nqQueueIndex++)<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">                queues[nqQueueIndex] = nqQueueIndex;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        rss_conf.queue = queues;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        rss_conf.key_len = 0;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        rss_conf.key = NULL;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        rss_conf.level = 2;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        // create the drop action
<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        actions[0].type = RTE_FLOW_ACTION_TYPE_RSS;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        actions[0].conf = &rss_conf;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        actions[1].type = RTE_FLOW_ACTION_TYPE_END;<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        // validate and create the flow rule
<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        if (rte_flow_validate(pi_nPort, &attr,
 pattern, actions, &error)==0)<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">            flow = rte_flow_create(pi_nPort,
 &attr, pattern, actions, &error);<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">            if(flow){//success}<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">            else{//error}<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">        else {error}<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:11.5pt;font-family:-apple-system;color:#0C0D0E;mso-ligatures:none;mso-fareast-language:#2000">And this is how i tried to get the hash value saved in the mbuf, but failed<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">uint8_t rss_hash_default_key[] = {<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0x2c, 0xc6, 0x81, 0xd1,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0x5b, 0xdb, 0xf4, 0xf7,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0xfc, 0xa2, 0x83, 0x19,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0xdb, 0x1a, 0x3e, 0x94,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0x6b, 0x9e, 0x38, 0xd9,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0x2c, 0x9c, 0x03, 0xd1,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0xad, 0x99, 0x44, 0xa7,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0xd9, 0x56, 0x3d, 0x59,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0x06, 0x3c, 0x25, 0xf3,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">    0xfc, 0x1f, 0xdc, 0x2a,<o:p></o:p></span></p>
<p class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;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 style="font-size:10.0pt;font-family:"inherit",serif;color:#0C0D0E;border:none windowtext 1.0pt;padding:0cm;mso-ligatures:none;mso-fareast-language:#2000">supports-priv-flags: yes</span><span style="font-size:10.0pt;font-family:"var(--ff-mono)",serif;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>
</body>
</html>