€•…§Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ./translations/zh_CN/networking/multi-pf-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/zh_TW/networking/multi-pf-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/it_IT/networking/multi-pf-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ja_JP/networking/multi-pf-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ko_KR/networking/multi-pf-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/pt_BR/networking/multi-pf-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/sp_SP/networking/multi-pf-netdev”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒH/var/lib/git/docbuild/linux/Documentation/networking/multi-pf-netdev.rst”h´Kubh¶)�”}”(hŒ4This data file has been placed in the public domain.”h]”hŒ4This data file has been placed in the public domain.”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³Œo/srv/docbuild/lib/venvs/build-kernel-docs/lib64/python3.9/site-packages/docutils/parsers/rst/include/isonum.txt”h´Kubh¶)�”}”(hŒ¸Derived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .”h]”hŒ¸Derived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .”…”�”}”hh×sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÖh´KubhŒsubstitution_definition”“”)�”}”(hŒ*.. |amp| unicode:: U+00026 .. AMPERSAND”h]”hŒ&”…”�”}”hhçsbah}”(h]”h ]”h"]”Œamp”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ+.. |apos| unicode:: U+00027 .. APOSTROPHE”h]”hŒ'”…”�”}”hhösbah}”(h]”h ]”h"]”Œapos”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ).. |ast| unicode:: U+0002A .. ASTERISK”h]”hŒ*”…”�”}”hjsbah}”(h]”h ]”h"]”Œast”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ+.. |brvbar| unicode:: U+000A6 .. BROKEN BAR”h]”hŒ¦”…”�”}”hjsbah}”(h]”h ]”h"]”Œbrvbar”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ0.. |bsol| unicode:: U+0005C .. REVERSE SOLIDUS”h]”hŒ\”…”�”}”hj#sbah}”(h]”h ]”h"]”Œbsol”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ*.. |cent| unicode:: U+000A2 .. CENT SIGN”h]”hŒ¢”…”�”}”hj2sbah}”(h]”h ]”h"]”Œcent”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ&.. |colon| unicode:: U+0003A .. COLON”h]”hŒ:”…”�”}”hjAsbah}”(h]”h ]”h"]”Œcolon”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ&.. |comma| unicode:: U+0002C .. COMMA”h]”hŒ,”…”�”}”hjPsbah}”(h]”h ]”h"]”Œcomma”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |commat| unicode:: U+00040 .. COMMERCIAL AT”h]”hŒ@”…”�”}”hj_sbah}”(h]”h ]”h"]”Œcommat”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN”h]”hŒ©”…”�”}”hjnsbah}”(h]”h ]”h"]”Œcopy”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |curren| unicode:: U+000A4 .. CURRENCY SIGN”h]”hŒ¤”…”�”}”hj}sbah}”(h]”h ]”h"]”Œcurren”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROW”h]”hŒ↓”…”�”}”hjŒsbah}”(h]”h ]”h"]”Œdarr”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |deg| unicode:: U+000B0 .. DEGREE SIGN”h]”hŒ°”…”�”}”hj›sbah}”(h]”h ]”h"]”Œdeg”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ... |divide| unicode:: U+000F7 .. DIVISION SIGN”h]”hŒ÷”…”�”}”hjªsbah}”(h]”h ]”h"]”Œdivide”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |dollar| unicode:: U+00024 .. DOLLAR SIGN”h]”hŒ$”…”�”}”hj¹sbah}”(h]”h ]”h"]”Œdollar”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ,.. |equals| unicode:: U+0003D .. EQUALS SIGN”h]”hŒ=”…”�”}”hjÈsbah}”(h]”h ]”h"]”Œequals”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ1.. |excl| unicode:: U+00021 .. EXCLAMATION MARK”h]”hŒ!”…”�”}”hj×sbah}”(h]”h ]”h"]”Œexcl”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ9.. |frac12| unicode:: U+000BD .. VULGAR FRACTION ONE HALF”h]”hŒ½”…”�”}”hjæsbah}”(h]”h ]”h"]”Œfrac12”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ<.. |frac14| unicode:: U+000BC .. VULGAR FRACTION ONE QUARTER”h]”hŒ¼”…”�”}”hjõsbah}”(h]”h ]”h"]”Œfrac14”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ;.. |frac18| unicode:: U+0215B .. VULGAR FRACTION ONE EIGHTH”h]”hŒâ…›”…”�”}”hjsbah}”(h]”h ]”h"]”Œfrac18”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ?.. |frac34| unicode:: U+000BE .. VULGAR FRACTION THREE QUARTERS”h]”hŒ¾”…”�”}”hjsbah}”(h]”h ]”h"]”Œfrac34”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ>.. |frac38| unicode:: U+0215C .. VULGAR FRACTION THREE EIGHTHS”h]”hŒâ…œ”…”�”}”hj"sbah}”(h]”h ]”h"]”Œfrac38”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHS”h]”hŒâ…�”…”�”}”hj1sbah}”(h]”h ]”h"]”Œfrac58”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ>.. |frac78| unicode:: U+0215E .. VULGAR FRACTION SEVEN EIGHTHS”h]”hŒâ…ž”…”�”}”hj@sbah}”(h]”h ]”h"]”Œfrac78”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ2.. |gt| unicode:: U+0003E .. GREATER-THAN SIGN”h]”hŒ>”…”�”}”hjOsbah}”(h]”h ]”h"]”Œgt”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALF”h]”hŒ½”…”�”}”hj^sbah}”(h]”h ]”h"]”Œhalf”ah$]”h&]”uh1håh³hÖh´K hhh²hubhæ)�”}”(hŒ/.. |horbar| unicode:: U+02015 .. HORIZONTAL BAR”h]”hŒ―”…”�”}”hjmsbah}”(h]”h ]”h"]”Œhorbar”ah$]”h&]”uh1håh³hÖh´K!hhh²hubhæ)�”}”(hŒ'.. |hyphen| unicode:: U+02010 .. HYPHEN”h]”hŒâ€�”…”�”}”hj|sbah}”(h]”h ]”h"]”Œhyphen”ah$]”h&]”uh1håh³hÖh´K"hhh²hubhæ)�”}”(hŒ:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARK”h]”hŒ¡”…”�”}”hj‹sbah}”(h]”h ]”h"]”Œiexcl”ah$]”h&]”uh1håh³hÖh´K#hhh²hubhæ)�”}”(hŒ7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARK”h]”hŒ¿”…”�”}”hjšsbah}”(h]”h ]”h"]”Œiquest”ah$]”h&]”uh1håh³hÖh´K$hhh²hubhæ)�”}”(hŒJ.. |laquo| unicode:: U+000AB .. LEFT-POINTING DOUBLE ANGLE QUOTATION MARK”h]”hŒ«”…”�”}”hj©sbah}”(h]”h ]”h"]”Œlaquo”ah$]”h&]”uh1håh³hÖh´K%hhh²hubhæ)�”}”(hŒ0.. |larr| unicode:: U+02190 .. LEFTWARDS ARROW”h]”hŒâ†�”…”�”}”hj¸sbah}”(h]”h ]”h"]”Œlarr”ah$]”h&]”uh1håh³hÖh´K&hhh²hubhæ)�”}”(hŒ3.. |lcub| unicode:: U+0007B .. LEFT CURLY BRACKET”h]”hŒ{”…”�”}”hjÇsbah}”(h]”h ]”h"]”Œlcub”ah$]”h&]”uh1håh³hÖh´K'hhh²hubhæ)�”}”(hŒ;.. |ldquo| unicode:: U+0201C .. LEFT DOUBLE QUOTATION MARK”h]”hŒ“”…”�”}”hjÖsbah}”(h]”h ]”h"]”Œldquo”ah$]”h&]”uh1håh³hÖh´K(hhh²hubhæ)�”}”(hŒ).. |lowbar| unicode:: U+0005F .. LOW LINE”h]”hŒ_”…”�”}”hjåsbah}”(h]”h ]”h"]”Œlowbar”ah$]”h&]”uh1håh³hÖh´K)hhh²hubhæ)�”}”(hŒ1.. |lpar| unicode:: U+00028 .. LEFT PARENTHESIS”h]”hŒ(”…”�”}”hjôsbah}”(h]”h ]”h"]”Œlpar”ah$]”h&]”uh1håh³hÖh´K*hhh²hubhæ)�”}”(hŒ4.. |lsqb| unicode:: U+0005B .. LEFT SQUARE BRACKET”h]”hŒ[”…”�”}”hjsbah}”(h]”h ]”h"]”Œlsqb”ah$]”h&]”uh1håh³hÖh´K+hhh²hubhæ)�”}”(hŒ;.. |lsquo| unicode:: U+02018 .. LEFT SINGLE QUOTATION MARK”h]”hŒ‘”…”�”}”hjsbah}”(h]”h ]”h"]”Œlsquo”ah$]”h&]”uh1håh³hÖh´K,hhh²hubhæ)�”}”(hŒ/.. |lt| unicode:: U+0003C .. LESS-THAN SIGN”h]”hŒ<”…”�”}”hj!sbah}”(h]”h ]”h"]”Œlt”ah$]”h&]”uh1håh³hÖh´K-hhh²hubhæ)�”}”(hŒ+.. |micro| unicode:: U+000B5 .. MICRO SIGN”h]”hŒµ”…”�”}”hj0sbah}”(h]”h ]”h"]”Œmicro”ah$]”h&]”uh1håh³hÖh´K.hhh²hubhæ)�”}”(hŒ+.. |middot| unicode:: U+000B7 .. MIDDLE DOT”h]”hŒ·”…”�”}”hj?sbah}”(h]”h ]”h"]”Œmiddot”ah$]”h&]”uh1håh³hÖh´K/hhh²hubhæ)�”}”(hŒ/.. |nbsp| unicode:: U+000A0 .. NO-BREAK SPACE”h]”hŒ ”…”�”}”hjNsbah}”(h]”h ]”h"]”Œnbsp”ah$]”h&]”uh1håh³hÖh´K0hhh²hubhæ)�”}”(hŒ).. |not| unicode:: U+000AC .. NOT SIGN”h]”hŒ¬”…”�”}”hj]sbah}”(h]”h ]”h"]”Œnot”ah$]”h&]”uh1håh³hÖh´K1hhh²hubhæ)�”}”(hŒ,.. |num| unicode:: U+00023 .. NUMBER SIGN”h]”hŒ#”…”�”}”hjlsbah}”(h]”h ]”h"]”Œnum”ah$]”h&]”uh1håh³hÖh´K2hhh²hubhæ)�”}”(hŒ).. |ohm| unicode:: U+02126 .. OHM SIGN”h]”hŒΩ”…”�”}”hj{sbah}”(h]”h ]”h"]”Œohm”ah$]”h&]”uh1håh³hÖh´K3hhh²hubhæ)�”}”(hŒ;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATOR”h]”hŒª”…”�”}”hjŠsbah}”(h]”h ]”h"]”Œordf”ah$]”h&]”uh1håh³hÖh´K4hhh²hubhæ)�”}”(hŒ<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATOR”h]”hŒº”…”�”}”hj™sbah}”(h]”h ]”h"]”Œordm”ah$]”h&]”uh1håh³hÖh´K5hhh²hubhæ)�”}”(hŒ-.. |para| unicode:: U+000B6 .. PILCROW SIGN”h]”hŒ¶”…”�”}”hj¨sbah}”(h]”h ]”h"]”Œpara”ah$]”h&]”uh1håh³hÖh´K6hhh²hubhæ)�”}”(hŒ-.. |percnt| unicode:: U+00025 .. PERCENT SIGN”h]”hŒ%”…”�”}”hj·sbah}”(h]”h ]”h"]”Œpercnt”ah$]”h&]”uh1håh³hÖh´K7hhh²hubhæ)�”}”(hŒ*.. |period| unicode:: U+0002E .. FULL STOP”h]”hŒ.”…”�”}”hjÆsbah}”(h]”h ]”h"]”Œperiod”ah$]”h&]”uh1håh³hÖh´K8hhh²hubhæ)�”}”(hŒ*.. |plus| unicode:: U+0002B .. PLUS SIGN”h]”hŒ+”…”�”}”hjÕsbah}”(h]”h ]”h"]”Œplus”ah$]”h&]”uh1håh³hÖh´K9hhh²hubhæ)�”}”(hŒ0.. |plusmn| unicode:: U+000B1 .. PLUS-MINUS SIGN”h]”hŒ±”…”�”}”hjäsbah}”(h]”h ]”h"]”Œplusmn”ah$]”h&]”uh1håh³hÖh´K:hhh²hubhæ)�”}”(hŒ+.. |pound| unicode:: U+000A3 .. POUND SIGN”h]”hŒ£”…”�”}”hjósbah}”(h]”h ]”h"]”Œpound”ah$]”h&]”uh1håh³hÖh´K;hhh²hubhæ)�”}”(hŒ... |quest| unicode:: U+0003F .. QUESTION MARK”h]”hŒ?”…”�”}”hjsbah}”(h]”h ]”h"]”Œquest”ah$]”h&]”uh1håh³hÖh´Khhh²hubhæ)�”}”(hŒ1.. |rarr| unicode:: U+02192 .. RIGHTWARDS ARROW”h]”hŒ→”…”�”}”hj/sbah}”(h]”h ]”h"]”Œrarr”ah$]”h&]”uh1håh³hÖh´K?hhh²hubhæ)�”}”(hŒ4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKET”h]”hŒ}”…”�”}”hj>sbah}”(h]”h ]”h"]”Œrcub”ah$]”h&]”uh1håh³hÖh´K@hhh²hubhæ)�”}”(hŒ<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARK”h]”hŒâ€�”…”�”}”hjMsbah}”(h]”h ]”h"]”Œrdquo”ah$]”h&]”uh1håh³hÖh´KAhhh²hubhæ)�”}”(hŒ0.. |reg| unicode:: U+000AE .. REGISTERED SIGN”h]”hŒ®”…”�”}”hj\sbah}”(h]”h ]”h"]”Œreg”ah$]”h&]”uh1håh³hÖh´KBhhh²hubhæ)�”}”(hŒ2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESIS”h]”hŒ)”…”�”}”hjksbah}”(h]”h ]”h"]”Œrpar”ah$]”h&]”uh1håh³hÖh´KChhh²hubhæ)�”}”(hŒ5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKET”h]”hŒ]”…”�”}”hjzsbah}”(h]”h ]”h"]”Œrsqb”ah$]”h&]”uh1håh³hÖh´KDhhh²hubhæ)�”}”(hŒ<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARK”h]”hŒ’”…”�”}”hj‰sbah}”(h]”h ]”h"]”Œrsquo”ah$]”h&]”uh1håh³hÖh´KEhhh²hubhæ)�”}”(hŒ-.. |sect| unicode:: U+000A7 .. SECTION SIGN”h]”hŒ§”…”�”}”hj˜sbah}”(h]”h ]”h"]”Œsect”ah$]”h&]”uh1håh³hÖh´KFhhh²hubhæ)�”}”(hŒ*.. |semi| unicode:: U+0003B .. SEMICOLON”h]”hŒ;”…”�”}”hj§sbah}”(h]”h ]”h"]”Œsemi”ah$]”h&]”uh1håh³hÖh´KGhhh²hubhæ)�”}”(hŒ,.. |shy| unicode:: U+000AD .. SOFT HYPHEN”h]”hŒ­”…”�”}”hj¶sbah}”(h]”h ]”h"]”Œshy”ah$]”h&]”uh1håh³hÖh´KHhhh²hubhæ)�”}”(hŒ(.. |sol| unicode:: U+0002F .. SOLIDUS”h]”hŒ/”…”�”}”hjÅsbah}”(h]”h ]”h"]”Œsol”ah$]”h&]”uh1håh³hÖh´KIhhh²hubhæ)�”}”(hŒ,.. |sung| unicode:: U+0266A .. EIGHTH NOTE”h]”hŒ♪”…”�”}”hjÔsbah}”(h]”h ]”h"]”Œsung”ah$]”h&]”uh1håh³hÖh´KJhhh²hubhæ)�”}”(hŒ0.. |sup1| unicode:: U+000B9 .. SUPERSCRIPT ONE”h]”hŒ¹”…”�”}”hjãsbah}”(h]”h ]”h"]”Œsup1”ah$]”h&]”uh1håh³hÖh´KKhhh²hubhæ)�”}”(hŒ0.. |sup2| unicode:: U+000B2 .. SUPERSCRIPT TWO”h]”hŒ²”…”�”}”hjòsbah}”(h]”h ]”h"]”Œsup2”ah$]”h&]”uh1håh³hÖh´KLhhh²hubhæ)�”}”(hŒ2.. |sup3| unicode:: U+000B3 .. SUPERSCRIPT THREE”h]”hŒ³”…”�”}”hjsbah}”(h]”h ]”h"]”Œsup3”ah$]”h&]”uh1håh³hÖh´KMhhh²hubhæ)�”}”(hŒ4.. |times| unicode:: U+000D7 .. MULTIPLICATION SIGN”h]”hŒ×”…”�”}”hjsbah}”(h]”h ]”h"]”Œtimes”ah$]”h&]”uh1håh³hÖh´KNhhh²hubhæ)�”}”(hŒ0.. |trade| unicode:: U+02122 .. TRADE MARK SIGN”h]”hŒâ„¢”…”�”}”hjsbah}”(h]”h ]”h"]”Œtrade”ah$]”h&]”uh1håh³hÖh´KOhhh²hubhæ)�”}”(hŒ... |uarr| unicode:: U+02191 .. UPWARDS ARROW”h]”hŒ↑”…”�”}”hj.sbah}”(h]”h ]”h"]”Œuarr”ah$]”h&]”uh1håh³hÖh´KPhhh²hubhæ)�”}”(hŒ... |verbar| unicode:: U+0007C .. VERTICAL LINE”h]”hŒ|”…”�”}”hj=sbah}”(h]”h ]”h"]”Œverbar”ah$]”h&]”uh1håh³hÖh´KQhhh²hubhæ)�”}”(hŒ*.. |yen| unicode:: U+000A5 .. YEN SIGN ”h]”hŒÂ¥”…”�”}”hjLsbah}”(h]”h ]”h"]”Œyen”ah$]”h&]”uh1håh³hÖh´KRhhh²hubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒMulti-PF Netdev”h]”hŒMulti-PF Netdev”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj]h²hh³hÇh´Kubj\)�”}”(hhh]”(ja)�”}”(hŒContents”h]”hŒContents”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjph²hh³hÇh´K ubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ `Background`_”h]”hŒ paragraph”“”)�”}”(hjŠh]”hŒ reference”“”)�”}”(hjŠh]”hŒ Background”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ Background”Œrefid”Œ background”uh1j‘hjŽŒresolved”Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjƒh²hh³hÇh´Nubj‡)�”}”(hŒ `Overview`_”h]”j�)�”}”(hj³h]”j’)�”}”(hj³h]”hŒOverview”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒOverview”j¢Œoverview”uh1j‘hjµj¤Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjƒh²hh³hÇh´Nubj‡)�”}”(hŒ`mlx5 implementation`_”h]”j�)�”}”(hjÖh]”j’)�”}”(hjÖh]”hŒmlx5 implementation”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œmlx5 implementation”j¢Œmlx5-implementation”uh1j‘hjØj¤Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjƒh²hh³hÇh´Nubj‡)�”}”(hŒ`Channels distribution`_”h]”j�)�”}”(hjùh]”j’)�”}”(hjùh]”hŒChannels distribution”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒChannels distribution”j¢Œchannels-distribution”uh1j‘hjûj¤Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Khj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjƒh²hh³hÇh´Nubj‡)�”}”(hŒ`Observability`_”h]”j�)�”}”(hjh]”j’)�”}”(hjh]”hŒ Observability”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ Observability”j¢Œ observability”uh1j‘hjj¤Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjƒh²hh³hÇh´Nubj‡)�”}”(hŒ `Steering`_”h]”j�)�”}”(hj?h]”j’)�”}”(hj?h]”hŒSteering”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒSteering”j¢Œsteering”uh1j‘hjAj¤Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Khj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjƒh²hh³hÇh´Nubj‡)�”}”(hŒ`Mutually exclusive features`_ ”h]”j�)�”}”(hŒ`Mutually exclusive features`_”h]”j’)�”}”(hjfh]”hŒMutually exclusive features”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒMutually exclusive features”j¢Œmutually-exclusive-features”uh1j‘hjdj¤Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Khj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjƒh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j�h³hÇh´K hjph²hubeh}”(h]”Œcontents”ah ]”h"]”Œcontents”ah$]”h&]”uh1j[hj]h²hh³hÇh´K ubj\)�”}”(hhh]”(ja)�”}”(hŒ Background”h]”hŒ Background”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj”h²hh³hÇh´Kubj�)�”}”(hXThe Multi-PF NIC technology enables several CPUs within a multi-socket server to connect directly to the network, each through its own dedicated PCIe interface. Through either a connection harness that splits the PCIe lanes between two cards or by bifurcating a PCIe slot for a single card. This results in eliminating the network traffic traversing over the internal bus between the sockets, significantly reducing overhead and latency, in addition to reducing CPU utilization and increasing network throughput.”h]”hXThe Multi-PF NIC technology enables several CPUs within a multi-socket server to connect directly to the network, each through its own dedicated PCIe interface. Through either a connection harness that splits the PCIe lanes between two cards or by bifurcating a PCIe slot for a single card. This results in eliminating the network traffic traversing over the internal bus between the sockets, significantly reducing overhead and latency, in addition to reducing CPU utilization and increasing network throughput.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Khj”h²hubeh}”(h]”j£ah ]”h"]”Œ background”ah$]”h&]”uh1j[hj]h²hh³hÇh´KŒ referenced”Kubj\)�”}”(hhh]”(ja)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj»h²hh³hÇh´Kubj�)�”}”(hXëThe feature adds support for combining multiple PFs of the same port in a Multi-PF environment under one netdev instance. It is implemented in the netdev layer. Lower-layer instances like pci func, sysfs entry, and devlink are kept separate. Passing traffic through different devices belonging to different NUMA sockets saves cross-NUMA traffic and allows apps running on the same netdev from different NUMAs to still feel a sense of proximity to the device and achieve improved performance.”h]”hXëThe feature adds support for combining multiple PFs of the same port in a Multi-PF environment under one netdev instance. It is implemented in the netdev layer. Lower-layer instances like pci func, sysfs entry, and devlink are kept separate. Passing traffic through different devices belonging to different NUMA sockets saves cross-NUMA traffic and allows apps running on the same netdev from different NUMAs to still feel a sense of proximity to the device and achieve improved performance.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K hj»h²hubeh}”(h]”jÇah ]”h"]”Œoverview”ah$]”h&]”uh1j[hj]h²hh³hÇh´KjºKubj\)�”}”(hhh]”(ja)�”}”(hŒmlx5 implementation”h]”hŒmlx5 implementation”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjáh²hh³hÇh´K(ubj�)�”}”(hX%Multi-PF or Socket-direct in mlx5 is achieved by grouping PFs together which belong to the same NIC and has the socket-direct property enabled, once all PFs are probed, we create a single netdev to represent all of them, symmetrically, we destroy the netdev whenever any of the PFs is removed.”h]”hX%Multi-PF or Socket-direct in mlx5 is achieved by grouping PFs together which belong to the same NIC and has the socket-direct property enabled, once all PFs are probed, we create a single netdev to represent all of them, symmetrically, we destroy the netdev whenever any of the PFs is removed.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K*hjáh²hubj�)�”}”(hŒ¤The netdev network channels are distributed between all devices, a proper configuration would utilize the correct close NUMA node when working on a certain app/CPU.”h]”hŒ¤The netdev network channels are distributed between all devices, a proper configuration would utilize the correct close NUMA node when working on a certain app/CPU.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K.hjáh²hubj�)�”}”(hX›We pick one PF to be a primary (leader), and it fills a special role. The other devices (secondaries) are disconnected from the network at the chip level (set to silent mode). In silent mode, no south <-> north traffic flowing directly through a secondary PF. It needs the assistance of the leader PF (east <-> west traffic) to function. All Rx/Tx traffic is steered through the primary to/from the secondaries.”h]”hX›We pick one PF to be a primary (leader), and it fills a special role. The other devices (secondaries) are disconnected from the network at the chip level (set to silent mode). In silent mode, no south <-> north traffic flowing directly through a secondary PF. It needs the assistance of the leader PF (east <-> west traffic) to function. All Rx/Tx traffic is steered through the primary to/from the secondaries.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K1hjáh²hubj�)�”}”(hŒICurrently, we limit the support to PFs only, and up to two PFs (sockets).”h]”hŒICurrently, we limit the support to PFs only, and up to two PFs (sockets).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K7hjáh²hubeh}”(h]”jêah ]”h"]”Œmlx5 implementation”ah$]”h&]”uh1j[hj]h²hh³hÇh´K(jºKubj\)�”}”(hhh]”(ja)�”}”(hŒChannels distribution”h]”hŒChannels distribution”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj1h²hh³hÇh´K:ubj�)�”}”(hŒsWe distribute the channels between the different PFs to achieve local NUMA node performance on multiple NUMA nodes.”h]”hŒsWe distribute the channels between the different PFs to achieve local NUMA node performance on multiple NUMA nodes.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Kmdev".”h]”hŒ–This is achieved by using the correct core device instance (mdev) in each channel, instead of them all using the same instance under “priv->mdevâ€�.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´KUhj1h²hubeh}”(h]”j ah ]”h"]”Œchannels distribution”ah$]”h&]”uh1j[hj]h²hh³hÇh´K:jºKubj\)�”}”(hhh]”(ja)�”}”(hŒ Observability”h]”hŒ Observability”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj‘h²hh³hÇh´KYubj�)�”}”(hŒPThe relation between PF, irq, napi, and queue can be observed via netlink spec::”h]”hŒOThe relation between PF, irq, napi, and queue can be observed via netlink spec:”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´KZhj‘h²hubj_)�”}”(hXñ$ ./tools/net/ynl/pyynl/cli.py --spec Documentation/netlink/specs/netdev.yaml --dump queue-get --json='{"ifindex": 13}' [{'id': 0, 'ifindex': 13, 'napi-id': 539, 'type': 'rx'}, {'id': 1, 'ifindex': 13, 'napi-id': 540, 'type': 'rx'}, {'id': 2, 'ifindex': 13, 'napi-id': 541, 'type': 'rx'}, {'id': 3, 'ifindex': 13, 'napi-id': 542, 'type': 'rx'}, {'id': 4, 'ifindex': 13, 'napi-id': 543, 'type': 'rx'}, {'id': 0, 'ifindex': 13, 'napi-id': 539, 'type': 'tx'}, {'id': 1, 'ifindex': 13, 'napi-id': 540, 'type': 'tx'}, {'id': 2, 'ifindex': 13, 'napi-id': 541, 'type': 'tx'}, {'id': 3, 'ifindex': 13, 'napi-id': 542, 'type': 'tx'}, {'id': 4, 'ifindex': 13, 'napi-id': 543, 'type': 'tx'}] $ ./tools/net/ynl/pyynl/cli.py --spec Documentation/netlink/specs/netdev.yaml --dump napi-get --json='{"ifindex": 13}' [{'id': 543, 'ifindex': 13, 'irq': 42}, {'id': 542, 'ifindex': 13, 'irq': 41}, {'id': 541, 'ifindex': 13, 'irq': 40}, {'id': 540, 'ifindex': 13, 'irq': 39}, {'id': 539, 'ifindex': 13, 'irq': 36}]”h]”hXñ$ ./tools/net/ynl/pyynl/cli.py --spec Documentation/netlink/specs/netdev.yaml --dump queue-get --json='{"ifindex": 13}' [{'id': 0, 'ifindex': 13, 'napi-id': 539, 'type': 'rx'}, {'id': 1, 'ifindex': 13, 'napi-id': 540, 'type': 'rx'}, {'id': 2, 'ifindex': 13, 'napi-id': 541, 'type': 'rx'}, {'id': 3, 'ifindex': 13, 'napi-id': 542, 'type': 'rx'}, {'id': 4, 'ifindex': 13, 'napi-id': 543, 'type': 'rx'}, {'id': 0, 'ifindex': 13, 'napi-id': 539, 'type': 'tx'}, {'id': 1, 'ifindex': 13, 'napi-id': 540, 'type': 'tx'}, {'id': 2, 'ifindex': 13, 'napi-id': 541, 'type': 'tx'}, {'id': 3, 'ifindex': 13, 'napi-id': 542, 'type': 'tx'}, {'id': 4, 'ifindex': 13, 'napi-id': 543, 'type': 'tx'}] $ ./tools/net/ynl/pyynl/cli.py --spec Documentation/netlink/specs/netdev.yaml --dump napi-get --json='{"ifindex": 13}' [{'id': 543, 'ifindex': 13, 'irq': 42}, {'id': 542, 'ifindex': 13, 'irq': 41}, {'id': 541, 'ifindex': 13, 'irq': 40}, {'id': 540, 'ifindex': 13, 'irq': 39}, {'id': 539, 'ifindex': 13, 'irq': 36}]”…”�”}”hj°sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j^h³hÇh´K\hj‘h²hubj�)�”}”(hŒ?Here you can clearly observe our channels distribution policy::”h]”hŒ>Here you can clearly observe our channels distribution policy:”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Kohj‘h²hubj_)�”}”(hŒø$ ls /proc/irq/{36,39,40,41,42}/mlx5* -d -1 /proc/irq/36/mlx5_comp0@pci:0000:08:00.0 /proc/irq/39/mlx5_comp0@pci:0000:09:00.0 /proc/irq/40/mlx5_comp1@pci:0000:08:00.0 /proc/irq/41/mlx5_comp1@pci:0000:09:00.0 /proc/irq/42/mlx5_comp2@pci:0000:08:00.0”h]”hŒø$ ls /proc/irq/{36,39,40,41,42}/mlx5* -d -1 /proc/irq/36/mlx5_comp0@pci:0000:08:00.0 /proc/irq/39/mlx5_comp0@pci:0000:09:00.0 /proc/irq/40/mlx5_comp1@pci:0000:08:00.0 /proc/irq/41/mlx5_comp1@pci:0000:09:00.0 /proc/irq/42/mlx5_comp2@pci:0000:08:00.0”…”�”}”hjÌsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j^h³hÇh´Kqhj‘h²hubeh}”(h]”j0ah ]”h"]”Œ observability”ah$]”h&]”uh1j[hj]h²hh³hÇh´KYjºKubj\)�”}”(hhh]”(ja)�”}”(hŒSteering”h]”hŒSteering”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hjáh²hh³hÇh´Kyubj�)�”}”(hŒWSecondary PFs are set to "silent" mode, meaning they are disconnected from the network.”h]”hŒ[Secondary PFs are set to “silentâ€� mode, meaning they are disconnected from the network.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Kzhjáh²hubj�)�”}”(hXIn Rx, the steering tables belong to the primary PF only, and it is its role to distribute incoming traffic to other PFs, via cross-vhca steering capabilities. Still maintain a single default RSS table, that is capable of pointing to the receive queues of a different PF.”h]”hXIn Rx, the steering tables belong to the primary PF only, and it is its role to distribute incoming traffic to other PFs, via cross-vhca steering capabilities. Still maintain a single default RSS table, that is capable of pointing to the receive queues of a different PF.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K|hjáh²hubj�)�”}”(hŒ…In Tx, the primary PF creates a new Tx flow table, which is aliased by the secondaries, so they can go out to the network through it.”h]”hŒ…In Tx, the primary PF creates a new Tx flow table, which is aliased by the secondaries, so they can go out to the network through it.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K€hjáh²hubj�)�”}”(hŒ„In addition, we set default XPS configuration that, based on the CPU, selects an SQ belonging to the PF on the same node as the CPU.”h]”hŒ„In addition, we set default XPS configuration that, based on the CPU, selects an SQ belonging to the PF on the same node as the CPU.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Kƒhjáh²hubj�)�”}”(hŒXPS default config example:”h]”hŒXPS default config example:”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K†hjáh²hubj�)�”}”(hŒQNUMA node(s): 2 NUMA node0 CPU(s): 0-11 NUMA node1 CPU(s): 12-23”h]”hŒQNUMA node(s): 2 NUMA node0 CPU(s): 0-11 NUMA node1 CPU(s): 12-23”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Kˆhjáh²hubj�)�”}”(hŒPF0 on node0, PF1 on node1.”h]”hŒPF0 on node0, PF1 on node1.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´KŒhjáh²hubj‚)�”}”(hhh]”(j‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-0/xps_cpus:000001”h]”j�)�”}”(hjYh]”hŒ//sys/class/net/eth2/queues/tx-0/xps_cpus:000001”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´KŽhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-1/xps_cpus:001000”h]”j�)�”}”(hjph]”hŒ//sys/class/net/eth2/queues/tx-1/xps_cpus:001000”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K�hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-2/xps_cpus:000002”h]”j�)�”}”(hj‡h]”hŒ//sys/class/net/eth2/queues/tx-2/xps_cpus:000002”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K�hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-3/xps_cpus:002000”h]”j�)�”}”(hjžh]”hŒ//sys/class/net/eth2/queues/tx-3/xps_cpus:002000”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K‘hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-4/xps_cpus:000004”h]”j�)�”}”(hjµh]”hŒ//sys/class/net/eth2/queues/tx-4/xps_cpus:000004”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K’hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-5/xps_cpus:004000”h]”j�)�”}”(hjÌh]”hŒ//sys/class/net/eth2/queues/tx-5/xps_cpus:004000”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K“hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-6/xps_cpus:000008”h]”j�)�”}”(hjãh]”hŒ//sys/class/net/eth2/queues/tx-6/xps_cpus:000008”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K”hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-7/xps_cpus:008000”h]”j�)�”}”(hjúh]”hŒ//sys/class/net/eth2/queues/tx-7/xps_cpus:008000”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K•hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-8/xps_cpus:000010”h]”j�)�”}”(hj h]”hŒ//sys/class/net/eth2/queues/tx-8/xps_cpus:000010”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K–hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ//sys/class/net/eth2/queues/tx-9/xps_cpus:010000”h]”j�)�”}”(hj( h]”hŒ//sys/class/net/eth2/queues/tx-9/xps_cpus:010000”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K—hj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-10/xps_cpus:000020”h]”j�)�”}”(hj? h]”hŒ0/sys/class/net/eth2/queues/tx-10/xps_cpus:000020”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K˜hj= ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-11/xps_cpus:020000”h]”j�)�”}”(hjV h]”hŒ0/sys/class/net/eth2/queues/tx-11/xps_cpus:020000”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K™hjT ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-12/xps_cpus:000040”h]”j�)�”}”(hjm h]”hŒ0/sys/class/net/eth2/queues/tx-12/xps_cpus:000040”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Kšhjk ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-13/xps_cpus:040000”h]”j�)�”}”(hj„ h]”hŒ0/sys/class/net/eth2/queues/tx-13/xps_cpus:040000”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K›hj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-14/xps_cpus:000080”h]”j�)�”}”(hj› h]”hŒ0/sys/class/net/eth2/queues/tx-14/xps_cpus:000080”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Kœhj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-15/xps_cpus:080000”h]”j�)�”}”(hj² h]”hŒ0/sys/class/net/eth2/queues/tx-15/xps_cpus:080000”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K�hj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-16/xps_cpus:000100”h]”j�)�”}”(hjÉ h]”hŒ0/sys/class/net/eth2/queues/tx-16/xps_cpus:000100”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´KžhjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-17/xps_cpus:100000”h]”j�)�”}”(hjà h]”hŒ0/sys/class/net/eth2/queues/tx-17/xps_cpus:100000”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´KŸhjÞ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-18/xps_cpus:000200”h]”j�)�”}”(hj÷ h]”hŒ0/sys/class/net/eth2/queues/tx-18/xps_cpus:000200”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K hjõ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-19/xps_cpus:200000”h]”j�)�”}”(hj h]”hŒ0/sys/class/net/eth2/queues/tx-19/xps_cpus:200000”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K¡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-20/xps_cpus:000400”h]”j�)�”}”(hj% h]”hŒ0/sys/class/net/eth2/queues/tx-20/xps_cpus:000400”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K¢hj# ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-21/xps_cpus:400000”h]”j�)�”}”(hj< h]”hŒ0/sys/class/net/eth2/queues/tx-21/xps_cpus:400000”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K£hj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ0/sys/class/net/eth2/queues/tx-22/xps_cpus:000800”h]”j�)�”}”(hjS h]”hŒ0/sys/class/net/eth2/queues/tx-22/xps_cpus:000800”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K¤hjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubj‡)�”}”(hŒ1/sys/class/net/eth2/queues/tx-23/xps_cpus:800000 ”h]”j�)�”}”(hŒ0/sys/class/net/eth2/queues/tx-23/xps_cpus:800000”h]”hŒ0/sys/class/net/eth2/queues/tx-23/xps_cpus:800000”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´K¥hjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjTh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jŠj‹uh1j�h³hÇh´KŽhjáh²hubeh}”(h]”jSah ]”h"]”Œsteering”ah$]”h&]”uh1j[hj]h²hh³hÇh´KyjºKubj\)�”}”(hhh]”(ja)�”}”(hŒMutually exclusive features”h]”hŒMutually exclusive features”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`hj� h²hh³hÇh´K¨ubj�)�”}”(hX†The nature of Multi-PF, where different channels work with different PFs, conflicts with stateful features where the state is maintained in one of the PFs. For example, in the TLS device-offload feature, special context objects are created per connection and maintained in the PF. Transitioning between different RQs/SQs would break the feature. Hence, we disable this combination for now.”h]”hX†The nature of Multi-PF, where different channels work with different PFs, conflicts with stateful features where the state is maintained in one of the PFs. For example, in the TLS device-offload feature, special context objects are created per connection and maintained in the PF. Transitioning between different RQs/SQs would break the feature. Hence, we disable this combination for now.”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÇh´Kªhj� h²hubeh}”(h]”jwah ]”h"]”Œmutually exclusive features”ah$]”h&]”uh1j[hj]h²hh³hÇh´K¨jºKubeh}”(h]”Œmulti-pf-netdev”ah ]”h"]”Œmulti-pf netdev”ah$]”h&]”uh1j[hhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(j`NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÞ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”(hóhçjhöjjj jj/j#j>j2jMjAj\jPjkj_jzjnj‰j}j˜jŒj§j›j¶jªjÅj¹jÔjÈjãj×jòjæjjõjjjjj.j"j=j1jLj@j[jOjjj^jyjmjˆj|j—j‹j¦jšjµj©jÄj¸jÓjÇjâjÖjñjåjjôjjjjj-j!j<j0jKj?jZjNjij]jxjlj‡j{j–jŠj¥j™j´j¨jÃj·jÒjÆjájÕjðjäjÿjójjjjj,j j;j/jJj>jYjMjhj\jwjkj†jzj•j‰j¤j˜j³j§jÂj¶jÑjÅjàjÔjïjãjþjòj jjjj+jj:j.jIj=jXjLuŒsubstitution_names”}”(Œamp”hóŒapos”jŒast”jŒbrvbar”j Œbsol”j/Œcent”j>Œcolon”jMŒcomma”j\Œcommat”jkŒcopy”jzŒcurren”j‰Œdarr”j˜Œdeg”j§Œdivide”j¶Œdollar”jÅŒequals”jÔŒexcl”jãŒfrac12”jòŒfrac14”jŒfrac18”jŒfrac34”jŒfrac38”j.Œfrac58”j=Œfrac78”jLŒgt”j[Œhalf”jjŒhorbar”jyŒhyphen”jˆŒiexcl”j—Œiquest”j¦Œlaquo”jµŒlarr”jÄŒlcub”jÓŒldquo”jâŒlowbar”jñŒlpar”jŒlsqb”jŒlsquo”jŒlt”j-Œmicro”j<Œmiddot”jKŒnbsp”jZŒnot”jiŒnum”jxŒohm”j‡Œordf”j–Œordm”j¥Œpara”j´Œpercnt”jÃŒperiod”jÒŒplus”jáŒplusmn”jðŒpound”jÿŒquest”jŒquot”jŒraquo”j,Œrarr”j;Œrcub”jJŒrdquo”jYŒreg”jhŒrpar”jwŒrsqb”j†Œrsquo”j•Œsect”j¤Œsemi”j³Œshy”jÂŒsol”jÑŒsung”jàŒsup1”jïŒsup2”jþŒsup3”j Œtimes”jŒtrade”j+Œuarr”j:Œverbar”jIŒyen”jXuŒrefnames”}”(Œ background”]”j“aŒoverview”]”j¸aŒmlx5 implementation”]”jÛaŒchannels distribution”]”jþaŒ observability”]”j!aŒsteering”]”jDaŒmutually exclusive features”]”jhauŒrefids”}”Œnameids”}”(j¸ jµ j‘jŽj·j£jÞjÇj.jêjŽj jÞj0jŠ jSj° jwuŒ nametypes”}”(j¸ ‰j‘‰j·‰jÞ‰j.‰jމjÞ‰jŠ ‰j° ‰uh}”(jµ j]jŽjpj£j”jÇj»jêjáj j1j0j‘jSjájwj� uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ,Documentation/networking/multi-pf-netdev.rst”(NNNNt”†”aŒ decoration”Nh²hub.