<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>