doc: add Toeplitz hash guide
authorVladimir Medvedkin <vladimir.medvedkin@intel.com>
Mon, 19 Apr 2021 15:59:54 +0000 (16:59 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 20 Apr 2021 21:12:47 +0000 (23:12 +0200)
Add documentation for the Toeplitz hash library.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Reviewed-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
MAINTAINERS
doc/guides/prog_guide/img/rss_queue_assign.svg [new file with mode: 0644]
doc/guides/prog_guide/index.rst
doc/guides/prog_guide/toeplitz_hash_lib.rst [new file with mode: 0644]

index 2550d95..aa4dbbc 100644 (file)
@@ -1432,6 +1432,7 @@ M: Sameh Gobriel <sameh.gobriel@intel.com>
 M: Bruce Richardson <bruce.richardson@intel.com>
 F: lib/librte_hash/
 F: doc/guides/prog_guide/hash_lib.rst
+F: doc/guides/prog_guide/toeplitz_hash_lib.rst
 F: app/test/test_*hash*
 F: app/test/test_func_reentrancy.c
 
diff --git a/doc/guides/prog_guide/img/rss_queue_assign.svg b/doc/guides/prog_guide/img/rss_queue_assign.svg
new file mode 100644 (file)
index 0000000..d0eef8c
--- /dev/null
@@ -0,0 +1,1454 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generated by Microsoft Visio, SVG Export rss_queue_assign.svg Page-6 -->
+
+<svg
+   xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="5.377346in"
+   height="5.1358395in"
+   viewBox="0 0 387.16901 369.78098"
+   xml:space="preserve"
+   class="st11"
+   version="1.1"
+   id="svg5938"
+   sodipodi:docname="rss_queue_assign.svg"
+   style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-rule:evenodd;stroke-linecap:square;stroke-miterlimit:3"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata
+   id="metadata5942"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1920"
+   inkscape:window-height="1017"
+   id="namedview5940"
+   showgrid="false"
+   inkscape:zoom="0.4204831"
+   inkscape:cx="684.49886"
+   inkscape:cy="109.29466"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg5938" />
+       <v:documentProperties
+   v:langID="6153"
+   v:metric="true"
+   v:viewMarkup="false">
+               <v:userDefs>
+                       <v:ud
+   v:nameU="msvNoAutoConnect"
+   v:val="VT0(1):26" />
+               </v:userDefs>
+       </v:documentProperties>
+
+       <style
+   type="text/css"
+   id="style5574">
+       <![CDATA[
+               .st1 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24;visibility:hidden}
+               .st2 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+               .st3 {fill:#000000;font-family:Calibri;font-size:0.666664em}
+               .st4 {fill:#c0c0c0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+               .st5 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+               .st6 {font-size:1em}
+               .st7 {fill:#000000;font-family:Calibri;font-size:0.833336em}
+               .st8 {fill:#bfbfbf;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+               .st9 {marker-end:url(#mrkr4-123);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.239976}
+               .st10 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.086948582161584}
+               .st11 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+       ]]>
+       </style>
+
+       <defs
+   id="Markers">
+               <g
+   id="lend4">
+                       <path
+   d="M 2,1 0,0 2,-1 v 2"
+   style="stroke:none"
+   id="path5576"
+   inkscape:connector-curvature="0" />
+               </g>
+               <marker
+   id="mrkr4-123"
+   class="st10"
+   v:arrowType="4"
+   v:arrowSize="2"
+   v:setback="23.0021"
+   refX="-23.0021"
+   orient="auto"
+   markerUnits="strokeWidth"
+   overflow="visible"
+   style="overflow:visible;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.08694858;stroke-opacity:1">
+                       <use
+   xlink:href="#lend4"
+   transform="scale(-11.50105)"
+   id="use5579"
+   x="0"
+   y="0"
+   width="100%"
+   height="100%" />
+               </marker>
+       </defs>
+       <g
+   v:mID="10"
+   v:index="6"
+   v:groupContext="foregroundPage"
+   id="g5936"
+   transform="translate(-58.840987,-97.651017)">
+               <title
+   id="title5583">Page-6</title>
+               <v:pageProperties
+   v:drawingScale="0.0393701"
+   v:pageScale="0.0393701"
+   v:drawingUnits="24"
+   v:shadowOffsetX="8.50394"
+   v:shadowOffsetY="-8.50394" />
+               <v:layer
+   v:name="Connector"
+   v:index="0" />
+               <g
+   id="group1000-1"
+   transform="translate(58.9606,-616.535)"
+   v:mID="1000"
+   v:groupContext="group">
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <title
+   id="title5585">Array.1000</title>
+                       <g
+   id="shape1001-2"
+   v:mID="1001"
+   v:groupContext="shape"
+   transform="translate(326.161)">
+                               <title
+   id="title5587">Sheet.1001</title>
+                               <rect
+   x="0"
+   y="827.71698"
+   width="46.594501"
+   height="14.1732"
+   class="st1"
+   id="rect5589"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1002-4"
+   v:mID="1002"
+   v:groupContext="shape"
+   transform="translate(279.567)">
+                               <title
+   id="title5592">Sheet.1002</title>
+                               <rect
+   x="0"
+   y="827.71698"
+   width="46.594501"
+   height="14.1732"
+   class="st1"
+   id="rect5594"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1003-6"
+   v:mID="1003"
+   v:groupContext="shape"
+   transform="translate(232.972)">
+                               <title
+   id="title5597">Sheet.1003</title>
+                               <rect
+   x="0"
+   y="827.71698"
+   width="46.594501"
+   height="14.1732"
+   class="st1"
+   id="rect5599"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1004-8"
+   v:mID="1004"
+   v:groupContext="shape"
+   transform="translate(186.378)">
+                               <title
+   id="title5602">Sheet.1004</title>
+                               <rect
+   x="0"
+   y="827.71698"
+   width="46.594501"
+   height="14.1732"
+   class="st1"
+   id="rect5604"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1005-10"
+   v:mID="1005"
+   v:groupContext="shape"
+   transform="translate(139.783)">
+                               <title
+   id="title5607">Sheet.1005</title>
+                               <rect
+   x="0"
+   y="827.71698"
+   width="46.594501"
+   height="14.1732"
+   class="st1"
+   id="rect5609"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1006-12"
+   v:mID="1006"
+   v:groupContext="shape"
+   transform="translate(93.189)">
+                               <title
+   id="title5612">Sheet.1006</title>
+                               <desc
+   id="desc5614">Src/Dst ports</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="23.2972"
+   cy="834.803"
+   width="46.6"
+   height="14.1732" />
+                               <rect
+   x="0"
+   y="827.71698"
+   width="46.594501"
+   height="14.1732"
+   class="st2"
+   id="rect5616"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="2.05"
+   y="837.20001"
+   class="st3"
+   v:langID="6153"
+   id="text5618"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Src/Dst ports</text>
+                       </g>
+                       <g
+   id="shape1007-15"
+   v:mID="1007"
+   v:groupContext="shape"
+   transform="translate(46.5945)">
+                               <title
+   id="title5621">Sheet.1007</title>
+                               <desc
+   id="desc5623">Dst_ip</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="23.2972"
+   cy="834.803"
+   width="46.6"
+   height="14.1732" />
+                               <rect
+   x="0"
+   y="827.71698"
+   width="46.594501"
+   height="14.1732"
+   class="st2"
+   id="rect5625"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="12.92"
+   y="837.20001"
+   class="st3"
+   v:langID="6153"
+   id="text5627"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Dst_ip</text>
+                       </g>
+                       <g
+   id="shape1008-18"
+   v:mID="1008"
+   v:groupContext="shape">
+                               <title
+   id="title5630">Sheet.1008</title>
+                               <desc
+   id="desc5632">Src_ip</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="23.2972"
+   cy="834.803"
+   width="46.6"
+   height="14.1732" />
+                               <rect
+   x="0"
+   y="827.71698"
+   width="46.594501"
+   height="14.1732"
+   class="st2"
+   id="rect5634"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="13.36"
+   y="837.20001"
+   class="st3"
+   v:langID="6153"
+   id="text5636"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Src_ip</text>
+                       </g>
+               </g>
+               <g
+   id="group1009-21"
+   transform="translate(58.9606,-704.359)"
+   v:mID="1009"
+   v:groupContext="group">
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <title
+   id="title5640">Data block.1009</title>
+                       <desc
+   id="desc5642">Received Packet Data</desc>
+                       <g
+   id="shape1010-22"
+   v:mID="1010"
+   v:groupContext="shape"
+   transform="translate(263.622)">
+                               <title
+   id="title5644">Sheet.1010</title>
+                               <path
+   d="M 0,841.89 11.41,830.48 V 802.13 L 0,813.54 Z"
+   class="st4"
+   id="path5646"
+   inkscape:connector-curvature="0"
+   style="fill:#c0c0c0;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1011-24"
+   v:mID="1011"
+   v:groupContext="shape"
+   transform="translate(0,-28.3465)">
+                               <title
+   id="title5649">Sheet.1011</title>
+                               <path
+   d="m 0,841.89 h 263.62 l 11.41,-11.41 H 11.41 Z"
+   class="st4"
+   id="path5651"
+   inkscape:connector-curvature="0"
+   style="fill:#c0c0c0;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1012-26"
+   v:mID="1012"
+   v:groupContext="shape">
+                               <title
+   id="title5654">Sheet.1012</title>
+                               <rect
+   x="0"
+   y="813.54303"
+   width="263.62201"
+   height="28.3465"
+   class="st2"
+   id="rect5656"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1009-28"
+   v:mID="1009"
+   v:groupContext="groupContent">
+                               <v:textBlock
+   v:margins="rect(0,0,0,0)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="131.811"
+   cy="827.717"
+   width="263.63"
+   height="28.3465" />
+                               <text
+   x="96.889999"
+   y="830.12"
+   class="st3"
+   v:langID="6153"
+   id="text5659"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Received Packet Data</text>
+                       </g>
+               </g>
+               <g
+   id="shape1013-30"
+   v:mID="1013"
+   v:groupContext="shape"
+   transform="rotate(-89.8898,-254.59128,465.04725)">
+                       <title
+   id="title5663">Simple Arrow.1013</title>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                               <v:ud
+   v:nameU="ArrowType"
+   v:prompt=""
+   v:val="VT0(2):26" />
+                       </v:userDefs>
+                       <path
+   d="m 0,841.89 12.6,-4.25 v 2.12 h 61.1 v 2.13 2.12 H 12.6 v 2.13 z"
+   class="st2"
+   id="path5665"
+   inkscape:connector-curvature="0"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+               </g>
+               <g
+   id="shape1014-32"
+   v:mID="1014"
+   v:groupContext="shape"
+   transform="translate(67.829,-663.024)">
+                       <title
+   id="title5668">Sheet.1014</title>
+                       <desc
+   id="desc5670">Parser extracts required fields</desc>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="28.3465"
+   cy="838.772"
+   width="56.7"
+   height="6.23622" />
+                       <rect
+   x="0"
+   y="835.65399"
+   width="56.692902"
+   height="6.2362199"
+   class="st5"
+   id="rect5672"
+   style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="4.1500001"
+   y="836.37"
+   class="st3"
+   v:langID="6153"
+   id="text5676"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Parser extracts <tspan
+   x="4.7399998"
+   dy="1.2em"
+   class="st6"
+   id="tspan5674"
+   style="font-size:7.99996805px">required fields</tspan></text>
+               </g>
+               <g
+   id="shape1015-36"
+   v:mID="1015"
+   v:groupContext="shape"
+   transform="translate(58.9606,-600.945)">
+                       <title
+   id="title5679">Sheet.1015</title>
+                       <desc
+   id="desc5681">tuple</desc>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="20.2835"
+   cy="834.803"
+   width="40.57"
+   height="14.1732" />
+                       <rect
+   x="0"
+   y="827.71698"
+   width="40.566898"
+   height="14.1732"
+   class="st5"
+   id="rect5683"
+   style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="11.83"
+   y="837.20001"
+   class="st3"
+   v:langID="6153"
+   id="text5685"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />tuple</text>
+               </g>
+               <g
+   id="shape1016-39"
+   v:mID="1016"
+   v:groupContext="shape"
+   transform="rotate(-89.8898,-210.64069,509.05539)">
+                       <title
+   id="title5688">Simple Arrow.1016</title>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                               <v:ud
+   v:nameU="ArrowType"
+   v:prompt=""
+   v:val="VT0(2):26" />
+                       </v:userDefs>
+                       <path
+   d="m 0,841.89 12.6,-4.25 v 2.12 h 61.1 v 2.13 2.12 H 12.6 v 2.13 z"
+   class="st2"
+   id="path5690"
+   inkscape:connector-curvature="0"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+               </g>
+               <g
+   id="shape1017-41"
+   v:mID="1017"
+   v:groupContext="shape"
+   transform="translate(77.3858,-518.74)">
+                       <title
+   id="title5693">Rectangle.1017</title>
+                       <desc
+   id="desc5695">Toeplitz hash function</desc>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="45.3543"
+   cy="830.551"
+   width="90.71"
+   height="22.6772" />
+                       <rect
+   x="0"
+   y="819.21301"
+   width="90.708702"
+   height="22.6772"
+   class="st2"
+   id="rect5697"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="18.49"
+   y="827.54999"
+   class="st7"
+   v:langID="6153"
+   id="text5701"
+   style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Toeplitz hash <tspan
+   x="28.370001"
+   dy="1.2em"
+   class="st6"
+   id="tspan5699"
+   style="font-size:10.00003242px">function</tspan></text>
+               </g>
+               <g
+   id="shape1018-45"
+   v:mID="1018"
+   v:groupContext="shape"
+   transform="rotate(-89.8898,-161.64905,557.95289)">
+                       <title
+   id="title5704">Simple Arrow.1018</title>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                               <v:ud
+   v:nameU="ArrowType"
+   v:prompt=""
+   v:val="VT0(2):26" />
+                       </v:userDefs>
+                       <path
+   d="m 0,841.89 12.6,-4.25 v 2.12 h 61.1 v 2.13 2.12 H 12.6 v 2.13 z"
+   class="st2"
+   id="path5706"
+   inkscape:connector-curvature="0"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+               </g>
+               <g
+   id="shape1019-47"
+   v:mID="1019"
+   v:groupContext="shape"
+   transform="translate(83.0551,-430.866)">
+                       <title
+   id="title5709">Byte or variable.1019</title>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <rect
+   x="0"
+   y="827.71698"
+   width="90.708702"
+   height="14.1732"
+   class="st2"
+   id="rect5711"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+               </g>
+               <g
+   id="shape1020-49"
+   v:mID="1020"
+   v:groupContext="shape"
+   transform="translate(145.417,-430.866)">
+                       <title
+   id="title5714">Byte or variable.1020</title>
+                       <desc
+   id="desc5716">LSB</desc>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="14.1732"
+   cy="834.803"
+   width="28.35"
+   height="14.1732" />
+                       <rect
+   x="0"
+   y="827.71698"
+   width="28.3465"
+   height="14.1732"
+   class="st8"
+   id="rect5718"
+   style="fill:#bfbfbf;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="8.4799995"
+   y="837.20001"
+   class="st3"
+   v:langID="6153"
+   id="text5720"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />LSB</text>
+               </g>
+               <g
+   id="shape1021-52"
+   v:mID="1021"
+   v:groupContext="shape"
+   transform="translate(92.6929,-419.528)">
+                       <title
+   id="title5723">Sheet.1021</title>
+                       <desc
+   id="desc5725">32-bit hash value</desc>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="35.7165"
+   cy="837.638"
+   width="71.44"
+   height="8.50394" />
+                       <rect
+   x="0"
+   y="833.38599"
+   width="71.433098"
+   height="8.5039396"
+   class="st5"
+   id="rect5727"
+   style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="7.8499999"
+   y="840.03998"
+   class="st3"
+   v:langID="6153"
+   id="text5729"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />32-bit hash value</text>
+               </g>
+               <g
+   id="shape1022-55"
+   v:mID="1022"
+   v:groupContext="shape"
+   transform="rotate(179.653,118.72832,623.08024)">
+                       <title
+   id="title5732">Simple Arrow.1022</title>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                               <v:ud
+   v:nameU="ArrowType"
+   v:prompt=""
+   v:val="VT0(2):26" />
+                       </v:userDefs>
+                       <path
+   d="m 0,841.89 12.6,-4.25 v 2.12 h 49.76 v 2.13 2.12 H 12.6 v 2.13 z"
+   class="st2"
+   id="path5734"
+   inkscape:connector-curvature="0"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+               </g>
+               <g
+   id="group1023-57"
+   transform="translate(240.378,-374.578)"
+   v:mID="1023"
+   v:groupContext="group">
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <title
+   id="title5737">Stack or heap.1023</title>
+                       <g
+   id="shape1024-58"
+   v:mID="1024"
+   v:groupContext="shape"
+   transform="translate(0,-270)">
+                               <title
+   id="title5739">Sheet.1024</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5741"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1025-60"
+   v:mID="1025"
+   v:groupContext="shape"
+   transform="translate(0,-252)">
+                               <title
+   id="title5744">Sheet.1025</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5746"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1026-62"
+   v:mID="1026"
+   v:groupContext="shape"
+   transform="translate(0,-234)">
+                               <title
+   id="title5749">Sheet.1026</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5751"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1027-64"
+   v:mID="1027"
+   v:groupContext="shape"
+   transform="translate(0,-216)">
+                               <title
+   id="title5754">Sheet.1027</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5756"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1028-66"
+   v:mID="1028"
+   v:groupContext="shape"
+   transform="translate(0,-198)">
+                               <title
+   id="title5759">Sheet.1028</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5761"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1029-68"
+   v:mID="1029"
+   v:groupContext="shape"
+   transform="translate(0,-180)">
+                               <title
+   id="title5764">Sheet.1029</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5766"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1030-70"
+   v:mID="1030"
+   v:groupContext="shape"
+   transform="translate(0,-162)">
+                               <title
+   id="title5769">Sheet.1030</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5771"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1031-72"
+   v:mID="1031"
+   v:groupContext="shape"
+   transform="translate(0,-144)">
+                               <title
+   id="title5774">Sheet.1031</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5776"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1032-74"
+   v:mID="1032"
+   v:groupContext="shape"
+   transform="translate(0,-126)">
+                               <title
+   id="title5779">Sheet.1032</title>
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st1"
+   id="rect5781"
+   style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       </g>
+                       <g
+   id="shape1033-76"
+   v:mID="1033"
+   v:groupContext="shape"
+   transform="translate(0,-108)">
+                               <title
+   id="title5784">Sheet.1033</title>
+                               <desc
+   id="desc5786">Q_idx_0</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="35.4331"
+   cy="832.89"
+   width="70.87"
+   height="18" />
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st2"
+   id="rect5788"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="21.98"
+   y="835.28998"
+   class="st3"
+   v:langID="6153"
+   id="text5790"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Q_idx_0</text>
+                       </g>
+                       <g
+   id="shape1034-79"
+   v:mID="1034"
+   v:groupContext="shape"
+   transform="translate(0,-90)">
+                               <title
+   id="title5793">Sheet.1034</title>
+                               <desc
+   id="desc5795">Q_idx_1</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="35.4331"
+   cy="832.89"
+   width="70.87"
+   height="18" />
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st2"
+   id="rect5797"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="21.98"
+   y="835.28998"
+   class="st3"
+   v:langID="6153"
+   id="text5799"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Q_idx_1</text>
+                       </g>
+                       <g
+   id="shape1035-82"
+   v:mID="1035"
+   v:groupContext="shape"
+   transform="translate(0,-72)">
+                               <title
+   id="title5802">Sheet.1035</title>
+                               <desc
+   id="desc5804">Q_idx_2</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="35.4331"
+   cy="832.89"
+   width="70.87"
+   height="18" />
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st2"
+   id="rect5806"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="21.98"
+   y="835.28998"
+   class="st3"
+   v:langID="6153"
+   id="text5808"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Q_idx_2</text>
+                       </g>
+                       <g
+   id="shape1036-85"
+   v:mID="1036"
+   v:groupContext="shape"
+   transform="translate(0,-54)">
+                               <title
+   id="title5811">Sheet.1036</title>
+                               <desc
+   id="desc5813">Q_idx_3</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="35.4331"
+   cy="832.89"
+   width="70.87"
+   height="18" />
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st2"
+   id="rect5815"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="21.98"
+   y="835.28998"
+   class="st3"
+   v:langID="6153"
+   id="text5817"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Q_idx_3</text>
+                       </g>
+                       <g
+   id="shape1037-88"
+   v:mID="1037"
+   v:groupContext="shape"
+   transform="translate(0,-36)">
+                               <title
+   id="title5820">Sheet.1037</title>
+                               <desc
+   id="desc5822">...</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="35.4331"
+   cy="832.89"
+   width="70.87"
+   height="18" />
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st2"
+   id="rect5824"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="32.400002"
+   y="835.28998"
+   class="st3"
+   v:langID="6153"
+   id="text5826"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />...</text>
+                       </g>
+                       <g
+   id="shape1038-91"
+   v:mID="1038"
+   v:groupContext="shape"
+   transform="translate(0,-18)">
+                               <title
+   id="title5829">Sheet.1038</title>
+                               <desc
+   id="desc5831">...</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="35.4331"
+   cy="832.89"
+   width="70.87"
+   height="18" />
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st2"
+   id="rect5833"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="32.400002"
+   y="835.28998"
+   class="st3"
+   v:langID="6153"
+   id="text5835"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />...</text>
+                       </g>
+                       <g
+   id="shape1039-94"
+   v:mID="1039"
+   v:groupContext="shape">
+                               <title
+   id="title5838">Sheet.1039</title>
+                               <desc
+   id="desc5840">Q_idx_n</desc>
+                               <v:textBlock
+   v:margins="rect(1,1,1,1)"
+   v:tabSpace="42.5197" />
+                               <v:textRect
+   cx="35.4331"
+   cy="832.89"
+   width="70.87"
+   height="18" />
+                               <rect
+   x="0"
+   y="823.89001"
+   width="70.866096"
+   height="18"
+   class="st2"
+   id="rect5842"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                               <text
+   x="21.9"
+   y="835.28998"
+   class="st3"
+   v:langID="6153"
+   id="text5844"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Q_idx_n</text>
+                       </g>
+               </g>
+               <g
+   id="shape1040-97"
+   v:mID="1040"
+   v:groupContext="shape"
+   transform="translate(240.378,-504.668)">
+                       <title
+   id="title5848">Sheet.1040</title>
+                       <desc
+   id="desc5850">RSS Redirection Table</desc>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="35.4331"
+   cy="830.551"
+   width="70.87"
+   height="22.6772" />
+                       <rect
+   x="0"
+   y="819.21301"
+   width="70.866096"
+   height="22.6772"
+   class="st5"
+   id="rect5852"
+   style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="9.9499998"
+   y="828.15002"
+   class="st3"
+   v:langID="6153"
+   id="text5856"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />RSS Redirection <tspan
+   x="26.559999"
+   dy="1.2em"
+   class="st6"
+   id="tspan5854"
+   style="font-size:7.99996805px">Table</tspan></text>
+               </g>
+               <g
+   id="shape1041-101"
+   v:mID="1041"
+   v:groupContext="shape"
+   transform="translate(173.98,-445.189)">
+                       <title
+   id="title5859">Sheet.1041</title>
+                       <desc
+   id="desc5861">Hash LSB’s are used as an index in table</desc>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="28.2716"
+   cy="833.536"
+   width="56.55"
+   height="16.7079" />
+                       <rect
+   x="0"
+   y="825.18201"
+   width="56.543201"
+   height="16.707899"
+   class="st5"
+   id="rect5863"
+   style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="4.8299999"
+   y="826.34003"
+   class="st3"
+   v:langID="6153"
+   id="text5869"
+   style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />Hash LSB’s are <tspan
+   x="11.21"
+   dy="1.2em"
+   class="st6"
+   id="tspan5865"
+   style="font-size:7.99996805px">used as an </tspan><tspan
+   x="6.3299999"
+   dy="1.2em"
+   class="st6"
+   id="tspan5867"
+   style="font-size:7.99996805px">index in table</tspan></text>
+               </g>
+               <g
+   id="shape1043-106"
+   v:mID="1043"
+   v:groupContext="shape"
+   transform="translate(375.024,-707.826)">
+                       <title
+   id="title5872">Rectangle.1043</title>
+                       <desc
+   id="desc5874">CPU 0</desc>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="35.4331"
+   cy="824.965"
+   width="70.87"
+   height="33.8487" />
+                       <rect
+   x="0"
+   y="808.04102"
+   width="70.866096"
+   height="33.848701"
+   class="st2"
+   id="rect5876"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="23.309999"
+   y="827.96997"
+   class="st7"
+   v:langID="6153"
+   id="text5878"
+   style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />CPU 0</text>
+               </g>
+               <g
+   id="shape1044-109"
+   v:mID="1044"
+   v:groupContext="shape"
+   transform="translate(375.024,-659.804)">
+                       <title
+   id="title5881">Rectangle.1044</title>
+                       <desc
+   id="desc5883">CPU 1</desc>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="35.4331"
+   cy="824.965"
+   width="70.87"
+   height="33.8487" />
+                       <rect
+   x="0"
+   y="808.04102"
+   width="70.866096"
+   height="33.848701"
+   class="st2"
+   id="rect5885"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="23.309999"
+   y="827.96997"
+   class="st7"
+   v:langID="6153"
+   id="text5887"
+   style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />CPU 1</text>
+               </g>
+               <g
+   id="shape1045-112"
+   v:mID="1045"
+   v:groupContext="shape"
+   transform="translate(375.024,-604.696)">
+                       <title
+   id="title5890">Rectangle.1045</title>
+                       <desc
+   id="desc5892">CPU 2</desc>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="35.4331"
+   cy="824.965"
+   width="70.87"
+   height="33.8487" />
+                       <rect
+   x="0"
+   y="808.04102"
+   width="70.866096"
+   height="33.848701"
+   class="st2"
+   id="rect5894"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="23.309999"
+   y="827.96997"
+   class="st7"
+   v:langID="6153"
+   id="text5896"
+   style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />CPU 2</text>
+               </g>
+               <g
+   id="shape1046-115"
+   v:mID="1046"
+   v:groupContext="shape"
+   transform="translate(375.024,-549.587)">
+                       <title
+   id="title5899">Rectangle.1046</title>
+                       <desc
+   id="desc5901">CPU 3</desc>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="35.4331"
+   cy="824.965"
+   width="70.87"
+   height="33.8487" />
+                       <rect
+   x="0"
+   y="808.04102"
+   width="70.866096"
+   height="33.848701"
+   class="st2"
+   id="rect5903"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="23.309999"
+   y="827.96997"
+   class="st7"
+   v:langID="6153"
+   id="text5905"
+   style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />CPU 3</text>
+               </g>
+               <g
+   id="shape1047-118"
+   v:mID="1047"
+   v:groupContext="shape"
+   v:layerMember="0"
+   transform="translate(311.244,-437.578)">
+                       <title
+   id="title5908">Dynamic connector.1047</title>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <path
+   d="M 0,841.89 H 41.06 V 712.96 h 17.2"
+   class="st9"
+   id="path5910"
+   inkscape:connector-curvature="0"
+   style="stroke:#000000;stroke-width:0.239976;stroke-linecap:round;stroke-linejoin:round;marker-end:url(#mrkr4-123)" />
+               </g>
+               <g
+   id="shape1048-124"
+   v:mID="1048"
+   v:groupContext="shape"
+   transform="translate(375.024,-494.479)">
+                       <title
+   id="title5913">Rectangle.1048</title>
+                       <desc
+   id="desc5915">CPU 4</desc>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="35.4331"
+   cy="824.965"
+   width="70.87"
+   height="33.8487" />
+                       <rect
+   x="0"
+   y="808.04102"
+   width="70.866096"
+   height="33.848701"
+   class="st2"
+   id="rect5917"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="23.309999"
+   y="827.96997"
+   class="st7"
+   v:langID="6153"
+   id="text5919"
+   style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />CPU 4</text>
+               </g>
+               <g
+   id="shape1049-127"
+   v:mID="1049"
+   v:groupContext="shape"
+   transform="translate(375.024,-439.37)">
+                       <title
+   id="title5922">Rectangle.1049</title>
+                       <desc
+   id="desc5924">CPU 5</desc>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                       </v:userDefs>
+                       <v:textBlock
+   v:margins="rect(4,4,4,4)"
+   v:tabSpace="42.5197" />
+                       <v:textRect
+   cx="35.4331"
+   cy="824.965"
+   width="70.87"
+   height="33.8487" />
+                       <rect
+   x="0"
+   y="808.04102"
+   width="70.866096"
+   height="33.848701"
+   class="st2"
+   id="rect5926"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+                       <text
+   x="23.309999"
+   y="827.96997"
+   class="st7"
+   v:langID="6153"
+   id="text5928"
+   style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph
+   v:horizAlign="1" /><v:tabList />CPU 5</text>
+               </g>
+               <g
+   id="shape1050-130"
+   v:mID="1050"
+   v:groupContext="shape"
+   transform="rotate(-130.647,57.370743,472.48224)">
+                       <title
+   id="title5931">Simple Arrow.1050</title>
+                       <v:userDefs>
+                               <v:ud
+   v:nameU="visVersion"
+   v:val="VT0(15):26" />
+                               <v:ud
+   v:nameU="ArrowType"
+   v:prompt=""
+   v:val="VT0(2):26" />
+                       </v:userDefs>
+                       <path
+   d="m 0,841.89 12.6,-4.25 v 2.12 h 169.08 v 2.13 2.12 H 12.6 v 2.13 z"
+   class="st2"
+   id="path5933"
+   inkscape:connector-curvature="0"
+   style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" />
+               </g>
+       </g>
+</svg>
\ No newline at end of file
index 45c7dec..2dce507 100644 (file)
@@ -32,6 +32,7 @@ Programmer's Guide
     link_bonding_poll_mode_drv_lib
     timer_lib
     hash_lib
+    toeplitz_hash_lib
     efd_lib
     member_lib
     lpm_lib
diff --git a/doc/guides/prog_guide/toeplitz_hash_lib.rst b/doc/guides/prog_guide/toeplitz_hash_lib.rst
new file mode 100644 (file)
index 0000000..2480c55
--- /dev/null
@@ -0,0 +1,38 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2021 Intel Corporation.
+
+Toeplitz Hash Library
+=====================
+
+DPDK provides a Toeplitz Hash Library
+to calculate the Toeplitz hash function and to use its properties.
+The Toeplitz hash function is commonly used in a wide range of NICs
+to calculate the RSS hash sum to spread the traffic among the queues.
+
+.. _figure_rss_queue_assign:
+
+.. figure:: img/rss_queue_assign.*
+
+   RSS queue assignment example
+
+
+Toeplitz hash function API
+--------------------------
+
+There are two functions that provide calculation of the Toeplitz hash sum:
+
+* ``rte_softrss()``
+* ``rte_softrss_be()``
+
+Both of these functions take the parameters:
+
+* A pointer to the tuple, containing fields extracted from the packet.
+* A length of this tuple counted in double words.
+* A pointer to the RSS hash key corresponding to the one installed on the NIC.
+
+Both functions expect the tuple to be in "host" byte order
+and a multiple of 4 bytes in length.
+The ``rte_softrss()`` function expects the ``rss_key``
+to be exactly the same as the one installed on the NIC.
+The ``rte_softrss_be`` function is a faster implementation,
+but it expects ``rss_key`` to be converted to the host byte order.