€•Œ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/devlink/ice”Œ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/devlink/ice”Œ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/devlink/ice”Œ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/devlink/ice”Œ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/devlink/ice”Œ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/devlink/ice”Œ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/devlink/ice”Œ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³ŒD/var/lib/git/docbuild/linux/Documentation/networking/devlink/ice.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒice devlink support”h]”hŒice devlink support”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒVThis document describes the devlink features implemented by the ``ice`` device driver.”h]”(hŒ@This document describes the devlink features implemented by the ”…”�”}”(hhßh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``ice``”h]”hŒice”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒ device driver.”…”�”}”(hhßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Parameters”h]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K ubhŒtable”“”)�”}”(hhh]”(hÎ)�”}”(hŒGeneric parameters implemented”h]”hŒGeneric parameters implemented”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÇh´K hjubhŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j*hj'ubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hj'ubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5KZuh1j*hj'ubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjOubjS)�”}”(hhh]”hÞ)�”}”(hŒMode”h]”hŒMode”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjOubjS)�”}”(hhh]”hÞ)�”}”(hŒNotes”h]”hŒNotes”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjJubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``enable_roce``”h]”hè)�”}”(hj§h]”hŒ enable_roce”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸubjS)�”}”(hhh]”hÞ)�”}”(hŒruntime”h]”hŒruntime”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸubjS)�”}”(hhh]”hÞ)�”}”(hŒ(mutually exclusive with ``enable_iwarp``”h]”(hŒmutually exclusive with ”…”�”}”(hjÜh²hh³Nh´Nubhè)�”}”(hŒ``enable_iwarp``”h]”hŒ enable_iwarp”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjJubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``enable_iwarp``”h]”hè)�”}”(hj h]”hŒ enable_iwarp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubjS)�”}”(hhh]”hÞ)�”}”(hŒruntime”h]”hŒruntime”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubjS)�”}”(hhh]”hÞ)�”}”(hŒ'mutually exclusive with ``enable_roce``”h]”(hŒmutually exclusive with ”…”�”}”(hjAh²hh³Nh´Nubhè)�”}”(hŒ``enable_roce``”h]”hŒ enable_roce”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjJubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``tx_scheduling_layers``”h]”hè)�”}”(hjqh]”hŒtx_scheduling_layers”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjiubjS)�”}”(hhh]”hÞ)�”}”(hŒ permanent”h]”hŒ permanent”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjiubjS)�”}”(hhh]”(hÞ)�”}”(hX÷The ice hardware uses hierarchical scheduling for Tx with a fixed number of layers in the scheduling tree. Each of them are decision points. Root node represents a port, while all the leaves represent the queues. This way of configuring the Tx scheduler allows features like DCB or devlink-rate (documented below) to configure how much bandwidth is given to any given queue or group of queues, enabling fine-grained control because scheduling parameters can be configured at any given layer of the tree.”h]”hX÷The ice hardware uses hierarchical scheduling for Tx with a fixed number of layers in the scheduling tree. Each of them are decision points. Root node represents a port, while all the leaves represent the queues. This way of configuring the Tx scheduler allows features like DCB or devlink-rate (documented below) to configure how much bandwidth is given to any given queue or group of queues, enabling fine-grained control because scheduling parameters can be configured at any given layer of the tree.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj£ubhÞ)�”}”(hXThe default 9-layer tree topology was deemed best for most workloads, as it gives an optimal ratio of performance to configurability. However, for some specific cases, this 9-layer topology might not be desired. One example would be sending traffic to queues that are not a multiple of 8. Because the maximum radix is limited to 8 in 9-layer topology, the 9th queue has a different parent than the rest, and it's given more bandwidth credits. This causes a problem when the system is sending traffic to 9 queues:”h]”hXThe default 9-layer tree topology was deemed best for most workloads, as it gives an optimal ratio of performance to configurability. However, for some specific cases, this 9-layer topology might not be desired. One example would be sending traffic to queues that are not a multiple of 8. Because the maximum radix is limited to 8 in 9-layer topology, the 9th queue has a different parent than the rest, and it’s given more bandwidth credits. This causes a problem when the system is sending traffic to 9 queues:”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K$hj£ubhŒ line_block”“”)�”}”(hhh]”(hh´“”)�”}”(hŒtx_queue_0_packets: 24163396”h]”hŒtx_queue_0_packets: 24163396”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´Œindent”KhjÄh³hÇh´KubjÇ)�”}”(hŒtx_queue_1_packets: 24164623”h]”hŒtx_queue_1_packets: 24164623”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´jÖKhjÄh³hÇh´KubjÇ)�”}”(hŒtx_queue_2_packets: 24163188”h]”hŒtx_queue_2_packets: 24163188”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´jÖKhjÄh³hÇh´KubjÇ)�”}”(hŒtx_queue_3_packets: 24163701”h]”hŒtx_queue_3_packets: 24163701”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´jÖKhjÄh³hÇh´KubjÇ)�”}”(hŒtx_queue_4_packets: 24163683”h]”hŒtx_queue_4_packets: 24163683”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´jÖKhjÄh³hÇh´KubjÇ)�”}”(hŒtx_queue_5_packets: 24164668”h]”hŒtx_queue_5_packets: 24164668”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´jÖKhjÄh³hÇh´KubjÇ)�”}”(hŒtx_queue_6_packets: 23327200”h]”hŒtx_queue_6_packets: 23327200”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´jÖKhjÄh³hÇh´KubjÇ)�”}”(hŒtx_queue_7_packets: 24163853”h]”hŒtx_queue_7_packets: 24163853”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´jÖKhjÄh³hÇh´KubjÇ)�”}”(hŒ@tx_queue_8_packets: 91101417 < Too much traffic is sent from 9th”h]”hŒ@tx_queue_8_packets: 91101417 < Too much traffic is sent from 9th”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h´jÖKhjÄh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÂhj£ubhÞ)�”}”(hX;To address this need, you can switch to a 5-layer topology, which changes the maximum topology radix to 512. With this enhancement, the performance characteristic is equal as all queues can be assigned to the same parent in the tree. The obvious drawback of this solution is a lower configuration depth of the tree.”h]”hX;To address this need, you can switch to a 5-layer topology, which changes the maximum topology radix to 512. With this enhancement, the performance characteristic is equal as all queues can be assigned to the same parent in the tree. The obvious drawback of this solution is a lower configuration depth of the tree.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K7hj£ubhÞ)�”}”(hX6Use the ``tx_scheduling_layer`` parameter with the devlink command to change the transmit scheduler topology. To use 5-layer topology, use a value of 5. For example: $ devlink dev param set pci/0000:16:00.0 name tx_scheduling_layers value 5 cmode permanent Use a value of 9 to set it back to the default value.”h]”(hŒUse the ”…”�”}”(hj[h²hh³Nh´Nubhè)�”}”(hŒ``tx_scheduling_layer``”h]”hŒtx_scheduling_layer”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj[ubhX parameter with the devlink command to change the transmit scheduler topology. To use 5-layer topology, use a value of 5. For example: $ devlink dev param set pci/0000:16:00.0 name tx_scheduling_layers value 5 cmode permanent Use a value of 9 to set it back to the default value.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K=hj£ubhÞ)�”}”(hŒIYou must do PCI slot powercycle for the selected topology to take effect.”h]”hŒIYou must do PCI slot powercycle for the selected topology to take effect.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KDhj£ubhÞ)�”}”(hŒfTo verify that value has been set: $ devlink dev param show pci/0000:16:00.0 name tx_scheduling_layers”h]”hŒfTo verify that value has been set: $ devlink dev param show pci/0000:16:00.0 name tx_scheduling_layers”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KFhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjJubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``msix_vec_per_pf_max``”h]”hè)�”}”(hj«h]”hŒmsix_vec_per_pf_max”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KHhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£ubjS)�”}”(hhh]”hÞ)�”}”(hŒ driverinit”h]”hŒ driverinit”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KIhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£ubjS)�”}”(hhh]”hÞ)�”}”(hŒ›Set the max MSI-X that can be used by the PF, rest can be utilized for SRIOV. The range is from min value set in msix_vec_per_pf_min to 2k/number of ports.”h]”hŒ›Set the max MSI-X that can be used by the PF, rest can be utilized for SRIOV. The range is from min value set in msix_vec_per_pf_min to 2k/number of ports.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjJubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``msix_vec_per_pf_min``”h]”hè)�”}”(hjh]”hŒmsix_vec_per_pf_min”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjúubjS)�”}”(hhh]”hÞ)�”}”(hŒ driverinit”h]”hŒ driverinit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KNhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjúubjS)�”}”(hhh]”hÞ)�”}”(hŒ¦Set the min MSI-X that will be used by the PF. This value inform how many MSI-X will be allocated statically. The range is from 2 to value set in msix_vec_per_pf_max.”h]”hŒ¦Set the min MSI-X that will be used by the PF. This value inform how many MSI-X will be allocated statically. The range is from 2 to value set in msix_vec_per_pf_max.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KOhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jHhj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j%hjubeh}”(h]”Œid1”ah ]”Œcolwidths-given”ah"]”h$]”h&]”uh1jhjh²hh³Nh´Nubj)�”}”(hhh]”(hÎ)�”}”(hŒ&Driver specific parameters implemented”h]”hŒ&Driver specific parameters implemented”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÇh´KShjfubj&)�”}”(hhh]”(j+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hjwubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hjwubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5KZuh1j*hjwubjI)�”}”(hhh]”(jN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜ubjS)�”}”(hhh]”hÞ)�”}”(hŒMode”h]”hŒMode”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KWhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜ubjS)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj•ubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``local_forwarding``”h]”hè)�”}”(hjîh]”hŒlocal_forwarding”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KYhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæubjS)�”}”(hhh]”hÞ)�”}”(hŒruntime”h]”hŒruntime”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KZhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæubjS)�”}”(hhh]”(hÞ)�”}”(hŒ–Controls loopback behavior by tuning scheduler bandwidth. It impacts all kinds of functions: physical, virtual and subfunctions. Supported values are:”h]”hŒ–Controls loopback behavior by tuning scheduler bandwidth. It impacts all kinds of functions: physical, virtual and subfunctions. Supported values are:”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K[hj ubhÞ)�”}”(hŒ1``enabled`` - loopback traffic is allowed on port”h]”(hè)�”}”(hŒ ``enabled``”h]”hŒenabled”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj1ubhŒ& - loopback traffic is allowed on port”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K`hj ubhÞ)�”}”(hŒ;``disabled`` - loopback traffic is not allowed on this port”h]”(hè)�”}”(hŒ ``disabled``”h]”hŒdisabled”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjMubhŒ/ - loopback traffic is not allowed on this port”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kbhj ubhÞ)�”}”(hŒ>``prioritized`` - loopback traffic is prioritized on this port”h]”(hè)�”}”(hŒ``prioritized``”h]”hŒ prioritized”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjiubhŒ/ - loopback traffic is prioritized on this port”…”�”}”(hjih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kdhj ubhÞ)�”}”(hX/Default value of ``local_forwarding`` parameter is ``enabled``. ``prioritized`` provides ability to adjust loopback traffic rate to increase one port capacity at cost of the another. User needs to disable local forwarding on one of the ports in order have increased capacity on the ``prioritized`` port.”h]”(hŒDefault value of ”…”�”}”(hj…h²hh³Nh´Nubhè)�”}”(hŒ``local_forwarding``”h]”hŒlocal_forwarding”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj…ubhŒ parameter is ”…”�”}”(hj…h²hh³Nh´Nubhè)�”}”(hŒ ``enabled``”h]”hŒenabled”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj…ubhŒ. ”…”�”}”(hj…h²hh³Nh´Nubhè)�”}”(hŒ``prioritized``”h]”hŒ prioritized”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj…ubhŒË provides ability to adjust loopback traffic rate to increase one port capacity at cost of the another. User needs to disable local forwarding on one of the ports in order have increased capacity on the ”…”�”}”(hj…h²hh³Nh´Nubhè)�”}”(hŒ``prioritized``”h]”hŒ prioritized”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj…ubhŒ port.”…”�”}”(hj…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kfhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jHhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j%hjfubeh}”(h]”Œid2”ah ]”jbah"]”h$]”h&]”uh1jhjh²hh³Nh´Nubeh}”(h]”Œ parameters”ah ]”h"]”Œ parameters”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Info versions”h]”hŒ Info versions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KmubhÞ)�”}”(hŒ1The ``ice`` driver reports the following versions”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ``ice``”h]”hŒice”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ& driver reports the following versions”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kohjh²hubj)�”}”(hhh]”(hÎ)�”}”(hŒ!devlink info versions implemented”h]”hŒ!devlink info versions implemented”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÇh´Kqhj4ubj&)�”}”(hhh]”(j+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hjEubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hjEubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hjEubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5KZuh1j*hjEubjI)�”}”(hhh]”(jN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kthjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoubjS)�”}”(hhh]”hÞ)�”}”(hŒType”h]”hŒType”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kuhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoubjS)�”}”(hhh]”hÞ)�”}”(hŒExample”h]”hŒExample”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kvhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoubjS)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kwhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjlubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ ``board.id``”h]”hè)�”}”(hjÜh]”hŒboard.id”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kxhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔubjS)�”}”(hhh]”hÞ)�”}”(hŒfixed”h]”hŒfixed”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kyhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔubjS)�”}”(hhh]”hÞ)�”}”(hŒ K65390-000”h]”hŒ K65390-000”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kzhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔubjS)�”}”(hhh]”hÞ)�”}”(hŒ9The Product Board Assembly (PBA) identifier of the board.”h]”hŒ9The Product Board Assembly (PBA) identifier of the board.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K{hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjlubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ ``cgu.id``”h]”hè)�”}”(hjJh]”hŒcgu.id”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K|hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBubjS)�”}”(hhh]”hÞ)�”}”(hŒfixed”h]”hŒfixed”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K}hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBubjS)�”}”(hhh]”hÞ)�”}”(hŒ36”h]”hŒ36”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K~hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBubjS)�”}”(hhh]”hÞ)�”}”(hŒ=The Clock Generation Unit (CGU) hardware revision identifier.”h]”hŒ=The Clock Generation Unit (CGU) hardware revision identifier.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjlubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ ``fw.mgmt``”h]”hè)�”}”(hj¸h]”hŒfw.mgmt”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K€hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°ubjS)�”}”(hhh]”hÞ)�”}”(hŒrunning”h]”hŒrunning”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°ubjS)�”}”(hhh]”hÞ)�”}”(hŒ2.1.7”h]”hŒ2.1.7”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‚hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°ubjS)�”}”(hhh]”hÞ)�”}”(hŒá3-digit version number of the management firmware running on the Embedded Management Processor of the device. It controls the PHY, link, access to device resources, etc. Intel documentation refers to this as the EMP firmware.”h]”hŒá3-digit version number of the management firmware running on the Embedded Management Processor of the device. It controls the PHY, link, access to device resources, etc. Intel documentation refers to this as the EMP firmware.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kƒhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjlubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``fw.mgmt.api``”h]”hè)�”}”(hj&h]”hŒ fw.mgmt.api”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‡hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubjS)�”}”(hhh]”hÞ)�”}”(hŒrunning”h]”hŒrunning”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KˆhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubjS)�”}”(hhh]”hÞ)�”}”(hŒ1.5.1”h]”hŒ1.5.1”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‰hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubjS)�”}”(hhh]”hÞ)�”}”(hŒÿ3-digit version number (major.minor.patch) of the API exported over the AdminQ by the management firmware. Used by the driver to identify what commands are supported. Historical versions of the kernel only displayed a 2-digit version number (major.minor).”h]”hŒÿ3-digit version number (major.minor.patch) of the API exported over the AdminQ by the management firmware. Used by the driver to identify what commands are supported. Historical versions of the kernel only displayed a 2-digit version number (major.minor).”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŠhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjlubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``fw.mgmt.build``”h]”hè)�”}”(hj”h]”hŒ fw.mgmt.build”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŽhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒubjS)�”}”(hhh]”hÞ)�”}”(hŒrunning”h]”hŒrunning”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒubjS)�”}”(hhh]”hÞ)�”}”(hŒ 0x305d955f”h]”hŒ 0x305d955f”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒubjS)�”}”(hhh]”hÞ)�”}”(hŒ...”h]”hŒjThe version of Clock Generation Unit (CGU). Format: ...”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÅhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jHhjEubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j%hj4ubeh}”(h]”Œid3”ah ]”jbah"]”h$]”h&]”uh1jhjh²hh³Nh´Nubeh}”(h]”Œ info-versions”ah ]”h"]”Œ info versions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KmubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Flash Update”h]”hŒ Flash Update”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´KÉubhÞ)�”}”(hŒëThe ``ice`` driver implements support for flash update using the ``devlink-flash`` interface. It supports updating the device flash using a combined flash image that contains the ``fw.mgmt``, ``fw.undi``, and ``fw.netlist`` components.”h]”(hŒThe ”…”�”}”(hj) h²hh³Nh´Nubhè)�”}”(hŒ``ice``”h]”hŒice”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj) ubhŒ6 driver implements support for flash update using the ”…”�”}”(hj) h²hh³Nh´Nubhè)�”}”(hŒ``devlink-flash``”h]”hŒ devlink-flash”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj) ubhŒa interface. It supports updating the device flash using a combined flash image that contains the ”…”�”}”(hj) h²hh³Nh´Nubhè)�”}”(hŒ ``fw.mgmt``”h]”hŒfw.mgmt”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj) ubhŒ, ”…”�”}”(hj) h²hh³Nh´Nubhè)�”}”(hŒ ``fw.undi``”h]”hŒfw.undi”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj) ubhŒ, and ”…”�”}”(hj) h²hh³Nh´Nubhè)�”}”(hŒ``fw.netlist``”h]”hŒ fw.netlist”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj) ubhŒ components.”…”�”}”(hj) h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhj h²hubj)�”}”(hhh]”(hÎ)�”}”(hŒ!List of supported overwrite modes”h]”hŒ!List of supported overwrite modes”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÇh´KÐhj‘ ubj&)�”}”(hhh]”(j+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hj¢ ubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5K_uh1j*hj¢ ubjI)�”}”(hhh]”(jN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒBits”h]”hŒBits”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÓhj½ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjº ubjS)�”}”(hhh]”hÞ)�”}”(hŒBehavior”h]”hŒBehavior”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÔhjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjº ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj· ubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ$``DEVLINK_FLASH_OVERWRITE_SETTINGS``”h]”hè)�”}”(hjù h]”hŒ DEVLINK_FLASH_OVERWRITE_SETTINGS”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÕhjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjñ ubjS)�”}”(hhh]”hÞ)�”}”(hŒÉDo not preserve settings stored in the flash components being updated. This includes overwriting the port configuration that determines the number of physical functions the device will initialize with.”h]”hŒÉDo not preserve settings stored in the flash components being updated. This includes overwriting the port configuration that determines the number of physical functions the device will initialize with.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjñ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj· ubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒP``DEVLINK_FLASH_OVERWRITE_SETTINGS`` and ``DEVLINK_FLASH_OVERWRITE_IDENTIFIERS``”h]”(hè)�”}”(hŒ$``DEVLINK_FLASH_OVERWRITE_SETTINGS``”h]”hŒ DEVLINK_FLASH_OVERWRITE_SETTINGS”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj7ubhŒ and ”…”�”}”(hj7h²hh³Nh´Nubhè)�”}”(hŒ'``DEVLINK_FLASH_OVERWRITE_IDENTIFIERS``”h]”hŒ#DEVLINK_FLASH_OVERWRITE_IDENTIFIERS”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ubjS)�”}”(hhh]”hÞ)�”}”(hXqDo not preserve either settings or identifiers. Overwrite everything in the flash with the contents from the provided image, without performing any preservation. This includes overwriting device identifying fields such as the MAC address, VPD area, and device serial number. It is expected that this combination be used with an image customized for the specific device.”h]”hXqDo not preserve either settings or identifiers. Overwrite everything in the flash with the contents from the provided image, without performing any preservation. This includes overwriting device identifying fields such as the MAC address, VPD area, and device serial number. It is expected that this combination be used with an image customized for the specific device.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÛhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj· ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jHhj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j%hj‘ ubeh}”(h]”Œid4”ah ]”jbah"]”h$]”h&]”uh1jhj h²hh³Nh´NubhÞ)�”}”(hX(The ice hardware does not support overwriting only identifiers while preserving settings, and thus ``DEVLINK_FLASH_OVERWRITE_IDENTIFIERS`` on its own will be rejected. If no overwrite mask is provided, the firmware will be instructed to preserve all settings and identifying fields when updating.”h]”(hŒcThe ice hardware does not support overwriting only identifiers while preserving settings, and thus ”…”�”}”(hj˜h²hh³Nh´Nubhè)�”}”(hŒ'``DEVLINK_FLASH_OVERWRITE_IDENTIFIERS``”h]”hŒ#DEVLINK_FLASH_OVERWRITE_IDENTIFIERS”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj˜ubhŒž on its own will be rejected. If no overwrite mask is provided, the firmware will be instructed to preserve all settings and identifying fields when updating.”…”�”}”(hj˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kâhj h²hubeh}”(h]”Œ flash-update”ah ]”h"]”Œ flash update”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KÉubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒReload”h]”hŒReload”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÀh²hh³hÇh´KèubhÞ)�”}”(hŒœThe ``ice`` driver supports activating new firmware after a flash update using ``DEVLINK_CMD_RELOAD`` with the ``DEVLINK_RELOAD_ACTION_FW_ACTIVATE`` action.”h]”(hŒThe ”…”�”}”(hjÑh²hh³Nh´Nubhè)�”}”(hŒ``ice``”h]”hŒice”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÑubhŒD driver supports activating new firmware after a flash update using ”…”�”}”(hjÑh²hh³Nh´Nubhè)�”}”(hŒ``DEVLINK_CMD_RELOAD``”h]”hŒDEVLINK_CMD_RELOAD”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÑubhŒ with the ”…”�”}”(hjÑh²hh³Nh´Nubhè)�”}”(hŒ%``DEVLINK_RELOAD_ACTION_FW_ACTIVATE``”h]”hŒ!DEVLINK_RELOAD_ACTION_FW_ACTIVATE”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÑubhŒ action.”…”�”}”(hjÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KêhjÀh²hubhŒ literal_block”“”)�”}”(hŒ?$ devlink dev reload pci/0000:01:00.0 reload action fw_activate”h]”hŒ?$ devlink dev reload pci/0000:01:00.0 reload action fw_activate”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”Œforce”‰Œhighlight_args”}”hÅhÆŒlanguage”Œshell”uh1jh³hÇh´KîhjÀh²hubhÞ)�”}”(hŒ¤The new firmware is activated by issuing a device specific Embedded Management Processor reset which requests the device to reset and reload the EMP firmware image.”h]”hŒ¤The new firmware is activated by issuing a device specific Embedded Management Processor reset which requests the device to reset and reload the EMP firmware image.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KòhjÀh²hubhÞ)�”}”(hŒgThe driver does not currently support reloading the driver via ``DEVLINK_RELOAD_ACTION_DRIVER_REINIT``.”h]”(hŒ?The driver does not currently support reloading the driver via ”…”�”}”(hj8h²hh³Nh´Nubhè)�”}”(hŒ'``DEVLINK_RELOAD_ACTION_DRIVER_REINIT``”h]”hŒ#DEVLINK_RELOAD_ACTION_DRIVER_REINIT”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj8ubhŒ.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KöhjÀh²hubeh}”(h]”Œreload”ah ]”h"]”Œreload”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KèubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Port split”h]”hŒ Port split”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj`h²hh³hÇh´KúubhÞ)�”}”(hŒ�The ``ice`` driver supports port splitting only for port 0, as the FW has a predefined set of available port split options for the whole device.”h]”(hŒThe ”…”�”}”(hjqh²hh³Nh´Nubhè)�”}”(hŒ``ice``”h]”hŒice”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjqubhŒ… driver supports port splitting only for port 0, as the FW has a predefined set of available port split options for the whole device.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kühj`h²hubhÞ)�”}”(hŒ9A system reboot is required for port split to be applied.”h]”hŒ9A system reboot is required for port split to be applied.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kÿhj`h²hubhÞ)�”}”(hŒEThe following command will select the port split option with 4 ports:”h]”hŒEThe following command will select the port split option with 4 ports:”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj`h²hubj)�”}”(hŒ/$ devlink port split pci/0000:16:00.0/0 count 4”h]”hŒ/$ devlink port split pci/0000:16:00.0/0 count 4”…”�”}”hj­sbah}”(h]”h ]”h"]”h$]”h&]”Œforce”‰Œhighlight_args”}”hÅhÆj(Œshell”uh1jh³hÇh´Mhj`h²hubhÞ)�”}”(hŒ–The list of all available port options will be printed to dynamic debug after each ``split`` and ``unsplit`` command. The first option is the default.”h]”(hŒSThe list of all available port options will be printed to dynamic debug after each ”…”�”}”(hj¿h²hh³Nh´Nubhè)�”}”(hŒ ``split``”h]”hŒsplit”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¿ubhŒ and ”…”�”}”(hj¿h²hh³Nh´Nubhè)�”}”(hŒ ``unsplit``”h]”hŒunsplit”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¿ubhŒ* command. The first option is the default.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj`h²hubj)�”}”(hXFice 0000:16:00.0: Available port split options and max port speeds (Gbps): ice 0000:16:00.0: Status Split Quad 0 Quad 1 ice 0000:16:00.0: count L0 L1 L2 L3 L4 L5 L6 L7 ice 0000:16:00.0: Active 2 100 - - - 100 - - - ice 0000:16:00.0: 2 50 - 50 - - - - - ice 0000:16:00.0: Pending 4 25 25 25 25 - - - - ice 0000:16:00.0: 4 25 25 - - 25 25 - - ice 0000:16:00.0: 8 10 10 10 10 10 10 10 10 ice 0000:16:00.0: 1 100 - - - - - - -”h]”hXFice 0000:16:00.0: Available port split options and max port speeds (Gbps): ice 0000:16:00.0: Status Split Quad 0 Quad 1 ice 0000:16:00.0: count L0 L1 L2 L3 L4 L5 L6 L7 ice 0000:16:00.0: Active 2 100 - - - 100 - - - ice 0000:16:00.0: 2 50 - 50 - - - - - ice 0000:16:00.0: Pending 4 25 25 25 25 - - - - ice 0000:16:00.0: 4 25 25 - - 25 25 - - ice 0000:16:00.0: 8 10 10 10 10 10 10 10 10 ice 0000:16:00.0: 1 100 - - - - - - -”…”�”}”hjñsbah}”(h]”h ]”h"]”h$]”h&]”Œforce”‰Œhighlight_args”}”hÅhÆj(Œshell”uh1jh³hÇh´M hj`h²hubhÞ)�”}”(hŒÈThere could be multiple FW port options with the same port split count. When the same port split count request is issued again, the next FW port option with the same port split count will be selected.”h]”hŒÈThere could be multiple FW port options with the same port split count. When the same port split count request is issued again, the next FW port option with the same port split count will be selected.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj`h²hubhÞ)�”}”(hŒš``devlink port unsplit`` will select the option with a split count of 1. If there is no FW option available with split count 1, you will receive an error.”h]”(hè)�”}”(hŒ``devlink port unsplit``”h]”hŒdevlink port unsplit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ‚ will select the option with a split count of 1. If there is no FW option available with split count 1, you will receive an error.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj`h²hubeh}”(h]”Œ port-split”ah ]”h"]”Œ port split”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KúubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRegions”h]”hŒRegions”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj5h²hh³hÇh´MubhÞ)�”}”(hŒWThe ``ice`` driver implements the following regions for accessing internal device data.”h]”(hŒThe ”…”�”}”(hjFh²hh³Nh´Nubhè)�”}”(hŒ``ice``”h]”hŒice”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjFubhŒL driver implements the following regions for accessing internal device data.”…”�”}”(hjFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj5h²hubj)�”}”(hhh]”(hÎ)�”}”(hŒregions implemented”h]”hŒregions implemented”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÇh´M#hjfubj&)�”}”(hhh]”(j+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hjwubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5KUuh1j*hjwubjI)�”}”(hhh]”(jN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M&hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ubjS)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M'hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjŒubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ ``nvm-flash``”h]”hè)�”}”(hjÎh]”hŒ nvm-flash”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M(hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆubjS)�”}”(hhh]”hÞ)�”}”(hŒaThe contents of the entire flash chip, sometimes referred to as the device's Non Volatile Memory.”h]”hŒcThe contents of the entire flash chip, sometimes referred to as the device’s Non Volatile Memory.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M)hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjŒubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``shadow-ram``”h]”hè)�”}”(hjh]”hŒ shadow-ram”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M+hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubjS)�”}”(hhh]”hÞ)�”}”(hŒÜThe contents of the Shadow RAM, which is loaded from the beginning of the flash. Although the contents are primarily from the flash, this area also contains data generated during device boot which is not stored in flash.”h]”hŒÜThe contents of the Shadow RAM, which is loaded from the beginning of the flash. Although the contents are primarily from the flash, this area also contains data generated during device boot which is not stored in flash.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M,hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjŒubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``device-caps``”h]”hè)�”}”(hjNh]”hŒ device-caps”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M0hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjFubjS)�”}”(hhh]”hÞ)�”}”(hŒ�The contents of the device firmware's capabilities buffer. Useful to determine the current state and configuration of the device.”h]”hŒƒThe contents of the device firmware’s capabilities buffer. Useful to determine the current state and configuration of the device.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M1hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jHhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j%hjfubeh}”(h]”Œid5”ah ]”jbah"]”h$]”h&]”uh1jhj5h²hh³Nh´NubhÞ)�”}”(hŒÑBoth the ``nvm-flash`` and ``shadow-ram`` regions can be accessed without a snapshot. The ``device-caps`` region requires a snapshot as the contents are sent by firmware and can't be split into separate reads.”h]”(hŒ Both the ”…”�”}”(hjšh²hh³Nh´Nubhè)�”}”(hŒ ``nvm-flash``”h]”hŒ nvm-flash”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjšubhŒ and ”…”�”}”(hjšh²hh³Nh´Nubhè)�”}”(hŒ``shadow-ram``”h]”hŒ shadow-ram”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjšubhŒ1 regions can be accessed without a snapshot. The ”…”�”}”(hjšh²hh³Nh´Nubhè)�”}”(hŒ``device-caps``”h]”hŒ device-caps”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjšubhŒj region requires a snapshot as the contents are sent by firmware and can’t be split into separate reads.”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M4hj5h²hubhÞ)�”}”(hŒvUsers can request an immediate capture of a snapshot for all three regions via the ``DEVLINK_CMD_REGION_NEW`` command.”h]”(hŒSUsers can request an immediate capture of a snapshot for all three regions via the ”…”�”}”(hjÞh²hh³Nh´Nubhè)�”}”(hŒ``DEVLINK_CMD_REGION_NEW``”h]”hŒDEVLINK_CMD_REGION_NEW”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÞubhŒ command.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M8hj5h²hubj)�”}”(hXM $ devlink region show pci/0000:01:00.0/nvm-flash: size 10485760 snapshot [] max 1 pci/0000:01:00.0/device-caps: size 4096 snapshot [] max 10 $ devlink region new pci/0000:01:00.0/nvm-flash snapshot 1 $ devlink region dump pci/0000:01:00.0/nvm-flash snapshot 1 $ devlink region dump pci/0000:01:00.0/nvm-flash snapshot 1 0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30 0000000000000010 0000 0000 ffff ff04 0029 8c00 0028 8cc8 0000000000000020 0016 0bb8 0016 1720 0000 0000 c00f 3ffc 0000000000000030 bada cce5 bada cce5 bada cce5 bada cce5 $ devlink region read pci/0000:01:00.0/nvm-flash snapshot 1 address 0 length 16 0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30 $ devlink region delete pci/0000:01:00.0/nvm-flash snapshot 1 $ devlink region new pci/0000:01:00.0/device-caps snapshot 1 $ devlink region dump pci/0000:01:00.0/device-caps snapshot 1 0000000000000000 01 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 0000000000000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000020 02 00 02 01 32 03 00 00 0a 00 00 00 25 00 00 00 0000000000000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000040 04 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000060 05 00 01 00 03 00 00 00 00 00 00 00 00 00 00 00 0000000000000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000080 06 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000000a0 08 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000000c0 12 00 01 00 01 00 00 00 01 00 01 00 00 00 00 00 00000000000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000000e0 13 00 01 00 00 01 00 00 00 00 00 00 00 00 00 00 00000000000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000100 14 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000120 15 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000140 16 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000160 17 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00 0000000000000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000180 18 00 01 00 01 00 00 00 01 00 00 00 08 00 00 00 0000000000000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000001a0 22 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00000000000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000001c0 40 00 01 00 00 08 00 00 08 00 00 00 00 00 00 00 00000000000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000001e0 41 00 01 00 00 08 00 00 00 00 00 00 00 00 00 00 00000000000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000200 42 00 01 00 00 08 00 00 00 00 00 00 00 00 00 00 0000000000000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 $ devlink region delete pci/0000:01:00.0/device-caps snapshot 1”h]”hXM $ devlink region show pci/0000:01:00.0/nvm-flash: size 10485760 snapshot [] max 1 pci/0000:01:00.0/device-caps: size 4096 snapshot [] max 10 $ devlink region new pci/0000:01:00.0/nvm-flash snapshot 1 $ devlink region dump pci/0000:01:00.0/nvm-flash snapshot 1 $ devlink region dump pci/0000:01:00.0/nvm-flash snapshot 1 0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30 0000000000000010 0000 0000 ffff ff04 0029 8c00 0028 8cc8 0000000000000020 0016 0bb8 0016 1720 0000 0000 c00f 3ffc 0000000000000030 bada cce5 bada cce5 bada cce5 bada cce5 $ devlink region read pci/0000:01:00.0/nvm-flash snapshot 1 address 0 length 16 0000000000000000 0014 95dc 0014 9514 0035 1670 0034 db30 $ devlink region delete pci/0000:01:00.0/nvm-flash snapshot 1 $ devlink region new pci/0000:01:00.0/device-caps snapshot 1 $ devlink region dump pci/0000:01:00.0/device-caps snapshot 1 0000000000000000 01 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 0000000000000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000020 02 00 02 01 32 03 00 00 0a 00 00 00 25 00 00 00 0000000000000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000040 04 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000060 05 00 01 00 03 00 00 00 00 00 00 00 00 00 00 00 0000000000000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000080 06 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000000a0 08 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000000c0 12 00 01 00 01 00 00 00 01 00 01 00 00 00 00 00 00000000000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000000e0 13 00 01 00 00 01 00 00 00 00 00 00 00 00 00 00 00000000000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000100 14 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000120 15 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000140 16 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 0000000000000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000160 17 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00 0000000000000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000180 18 00 01 00 01 00 00 00 01 00 00 00 08 00 00 00 0000000000000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000001a0 22 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00000000000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000001c0 40 00 01 00 00 08 00 00 08 00 00 00 00 00 00 00 00000000000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000000000001e0 41 00 01 00 00 08 00 00 00 00 00 00 00 00 00 00 00000000000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000000000200 42 00 01 00 00 08 00 00 00 00 00 00 00 00 00 00 0000000000000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 $ devlink region delete pci/0000:01:00.0/device-caps snapshot 1”…”�”}”hjþsbah}”(h]”h ]”h"]”h$]”h&]”Œforce”‰Œhighlight_args”}”hÅhÆj(Œshell”uh1jh³hÇh´M;hj5h²hubeh}”(h]”Œregions”ah ]”h"]”Œregions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Devlink Rate”h]”hŒ Devlink Rate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´MwubhÞ)�”}”(hX—The ``ice`` driver implements devlink-rate API. It allows for offload of the Hierarchical QoS to the hardware. It enables user to group Virtual Functions in a tree structure and assign supported parameters: tx_share, tx_max, tx_priority and tx_weight to each node in a tree. So effectively user gains an ability to control how much bandwidth is allocated for each VF group. This is later enforced by the HW.”h]”(hŒThe ”…”�”}”(hj)h²hh³Nh´Nubhè)�”}”(hŒ``ice``”h]”hŒice”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj)ubhXŒ driver implements devlink-rate API. It allows for offload of the Hierarchical QoS to the hardware. It enables user to group Virtual Functions in a tree structure and assign supported parameters: tx_share, tx_max, tx_priority and tx_weight to each node in a tree. So effectively user gains an ability to control how much bandwidth is allocated for each VF group. This is later enforced by the HW.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Myhjh²hubhÞ)�”}”(hXUIt is assumed that this feature is mutually exclusive with DCB performed in FW and ADQ, or any driver feature that would trigger changes in QoS, for example creation of the new traffic class. The driver will prevent DCB or ADQ configuration if user started making any changes to the nodes using devlink-rate API. To configure those features a driver reload is necessary. Correspondingly if ADQ or DCB will get configured the driver won't export hierarchy at all, or will remove the untouched hierarchy if those features are enabled after the hierarchy is exported, but before any changes are made.”h]”hXWIt is assumed that this feature is mutually exclusive with DCB performed in FW and ADQ, or any driver feature that would trigger changes in QoS, for example creation of the new traffic class. The driver will prevent DCB or ADQ configuration if user started making any changes to the nodes using devlink-rate API. To configure those features a driver reload is necessary. Correspondingly if ADQ or DCB will get configured the driver won’t export hierarchy at all, or will remove the untouched hierarchy if those features are enabled after the hierarchy is exported, but before any changes are made.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M€hjh²hubhÞ)�”}”(hŒÎThis feature is also dependent on switchdev being enabled in the system. It's required because devlink-rate requires devlink-port objects to be present, and those objects are only created in switchdev mode.”h]”hŒÐThis feature is also dependent on switchdev being enabled in the system. It’s required because devlink-rate requires devlink-port objects to be present, and those objects are only created in switchdev mode.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŠhjh²hubhÞ)�”}”(hXIf the driver is set to the switchdev mode, it will export internal hierarchy the moment VF's are created. Root of the tree is always represented by the node_0. This node can't be deleted by the user. Leaf nodes and nodes with children also can't be deleted.”h]”hXIf the driver is set to the switchdev mode, it will export internal hierarchy the moment VF’s are created. Root of the tree is always represented by the node_0. This node can’t be deleted by the user. Leaf nodes and nodes with children also can’t be deleted.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŽhjh²hubj)�”}”(hhh]”(hÎ)�”}”(hŒAttributes supported”h]”hŒAttributes supported”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÇh´M“hjsubj&)�”}”(hhh]”(j+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5Kuh1j*hj„ubj+)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”j5KUuh1j*hj„ubjI)�”}”(hhh]”(jN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M–hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjœubjS)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M—hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj™ubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ ``tx_max``”h]”hè)�”}”(hjÛh]”hŒtx_max”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M˜hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÓubjS)�”}”(hhh]”hÞ)�”}”(hXImaximum bandwidth to be consumed by the tree Node. Rate Limit is an absolute number specifying a maximum amount of bytes a Node may consume during the course of one second. Rate limit guarantees that a link will not oversaturate the receiver on the remote end and also enforces an SLA between the subscriber and network provider.”h]”hXImaximum bandwidth to be consumed by the tree Node. Rate Limit is an absolute number specifying a maximum amount of bytes a Node may consume during the course of one second. Rate limit guarantees that a link will not oversaturate the receiver on the remote end and also enforces an SLA between the subscriber and network provider.”…”�”}”(hjùh²hh³Nh´•ß)Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M™hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj™ubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ ``tx_share``”h]”hè)�”}”(hjh]”hŒtx_share”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŸhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubjS)�”}”(hhh]”hÞ)�”}”(hŒÎminimum bandwidth allocated to a tree node when it is not blocked. It specifies an absolute BW. While tx_max defines the maximum bandwidth the node may consume, the tx_share marks committed BW for the Node.”h]”hŒÎminimum bandwidth allocated to a tree node when it is not blocked. It specifies an absolute BW. While tx_max defines the maximum bandwidth the node may consume, the tx_share marks committed BW for the Node.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj™ubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ``tx_priority``”h]”hè)�”}”(hj[h]”hŒ tx_priority”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¤hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjSubjS)�”}”(hhh]”hÞ)�”}”(hX€allows for usage of strict priority arbiter among siblings. This arbitration scheme attempts to schedule nodes based on their priority as long as the nodes remain within their bandwidth limit. Range 0-7. Nodes with priority 7 have the highest priority and are selected first, while nodes with priority 0 have the lowest priority. Nodes that have the same priority are treated equally.”h]”hX€allows for usage of strict priority arbiter among siblings. This arbitration scheme attempts to schedule nodes based on their priority as long as the nodes remain within their bandwidth limit. Range 0-7. Nodes with priority 7 have the highest priority and are selected first, while nodes with priority 0 have the lowest priority. Nodes that have the same priority are treated equally.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¥hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj™ubjN)�”}”(hhh]”(jS)�”}”(hhh]”hÞ)�”}”(hŒ ``tx_weight``”h]”hè)�”}”(hj›h]”hŒ tx_weight”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M«hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj“ubjS)�”}”(hhh]”hÞ)�”}”(hŒÓallows for usage of Weighted Fair Queuing arbitration scheme among siblings. This arbitration scheme can be used simultaneously with the strict priority. Range 1-200. Only relative values matter for arbitration.”h]”hŒÓallows for usage of Weighted Fair Queuing arbitration scheme among siblings. This arbitration scheme can be used simultaneously with the strict priority. Range 1-200. Only relative values matter for arbitration.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¬hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jHhj„ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j%hjsubeh}”(h]”Œid6”ah ]”jbah"]”h$]”h&]”uh1jhjh²hh³Nh´NubhÞ)�”}”(hŒÉ``tx_priority`` and ``tx_weight`` can be used simultaneously. In that case nodes with the same priority form a WFQ subgroup in the sibling group and arbitration among them is based on assigned weights.”h]”(hè)�”}”(hŒ``tx_priority``”h]”hŒ tx_priority”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjçubhŒ and ”…”�”}”(hjçh²hh³Nh´Nubhè)�”}”(hŒ ``tx_weight``”h]”hŒ tx_weight”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjçubhŒ¨ can be used simultaneously. In that case nodes with the same priority form a WFQ subgroup in the sibling group and arbitration among them is based on assigned weights.”…”�”}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M±hjh²hubj)�”}”(hX# enable switchdev $ devlink dev eswitch set pci/0000:4b:00.0 mode switchdev # at this point driver should export internal hierarchy $ echo 2 > /sys/class/net/ens785np0/device/sriov_numvfs $ devlink port function rate show pci/0000:4b:00.0/node_25: type node parent node_24 pci/0000:4b:00.0/node_24: type node parent node_0 pci/0000:4b:00.0/node_32: type node parent node_31 pci/0000:4b:00.0/node_31: type node parent node_30 pci/0000:4b:00.0/node_30: type node parent node_16 pci/0000:4b:00.0/node_19: type node parent node_18 pci/0000:4b:00.0/node_18: type node parent node_17 pci/0000:4b:00.0/node_17: type node parent node_16 pci/0000:4b:00.0/node_14: type node parent node_5 pci/0000:4b:00.0/node_5: type node parent node_3 pci/0000:4b:00.0/node_13: type node parent node_4 pci/0000:4b:00.0/node_12: type node parent node_4 pci/0000:4b:00.0/node_11: type node parent node_4 pci/0000:4b:00.0/node_10: type node parent node_4 pci/0000:4b:00.0/node_9: type node parent node_4 pci/0000:4b:00.0/node_8: type node parent node_4 pci/0000:4b:00.0/node_7: type node parent node_4 pci/0000:4b:00.0/node_6: type node parent node_4 pci/0000:4b:00.0/node_4: type node parent node_3 pci/0000:4b:00.0/node_3: type node parent node_16 pci/0000:4b:00.0/node_16: type node parent node_15 pci/0000:4b:00.0/node_15: type node parent node_0 pci/0000:4b:00.0/node_2: type node parent node_1 pci/0000:4b:00.0/node_1: type node parent node_0 pci/0000:4b:00.0/node_0: type node pci/0000:4b:00.0/1: type leaf parent node_25 pci/0000:4b:00.0/2: type leaf parent node_25 # let's create some custom node $ devlink port function rate add pci/0000:4b:00.0/node_custom parent node_0 # second custom node $ devlink port function rate add pci/0000:4b:00.0/node_custom_1 parent node_custom # reassign second VF to newly created branch $ devlink port function rate set pci/0000:4b:00.0/2 parent node_custom_1 # assign tx_weight to the VF $ devlink port function rate set pci/0000:4b:00.0/2 tx_weight 5 # assign tx_share to the VF $ devlink port function rate set pci/0000:4b:00.0/2 tx_share 500Mbps”h]”hX# enable switchdev $ devlink dev eswitch set pci/0000:4b:00.0 mode switchdev # at this point driver should export internal hierarchy $ echo 2 > /sys/class/net/ens785np0/device/sriov_numvfs $ devlink port function rate show pci/0000:4b:00.0/node_25: type node parent node_24 pci/0000:4b:00.0/node_24: type node parent node_0 pci/0000:4b:00.0/node_32: type node parent node_31 pci/0000:4b:00.0/node_31: type node parent node_30 pci/0000:4b:00.0/node_30: type node parent node_16 pci/0000:4b:00.0/node_19: type node parent node_18 pci/0000:4b:00.0/node_18: type node parent node_17 pci/0000:4b:00.0/node_17: type node parent node_16 pci/0000:4b:00.0/node_14: type node parent node_5 pci/0000:4b:00.0/node_5: type node parent node_3 pci/0000:4b:00.0/node_13: type node parent node_4 pci/0000:4b:00.0/node_12: type node parent node_4 pci/0000:4b:00.0/node_11: type node parent node_4 pci/0000:4b:00.0/node_10: type node parent node_4 pci/0000:4b:00.0/node_9: type node parent node_4 pci/0000:4b:00.0/node_8: type node parent node_4 pci/0000:4b:00.0/node_7: type node parent node_4 pci/0000:4b:00.0/node_6: type node parent node_4 pci/0000:4b:00.0/node_4: type node parent node_3 pci/0000:4b:00.0/node_3: type node parent node_16 pci/0000:4b:00.0/node_16: type node parent node_15 pci/0000:4b:00.0/node_15: type node parent node_0 pci/0000:4b:00.0/node_2: type node parent node_1 pci/0000:4b:00.0/node_1: type node parent node_0 pci/0000:4b:00.0/node_0: type node pci/0000:4b:00.0/1: type leaf parent node_25 pci/0000:4b:00.0/2: type leaf parent node_25 # let's create some custom node $ devlink port function rate add pci/0000:4b:00.0/node_custom parent node_0 # second custom node $ devlink port function rate add pci/0000:4b:00.0/node_custom_1 parent node_custom # reassign second VF to newly created branch $ devlink port function rate set pci/0000:4b:00.0/2 parent node_custom_1 # assign tx_weight to the VF $ devlink port function rate set pci/0000:4b:00.0/2 tx_weight 5 # assign tx_share to the VF $ devlink port function rate set pci/0000:4b:00.0/2 tx_share 500Mbps”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”Œforce”‰Œhighlight_args”}”hÅhÆj(Œshell”uh1jh³hÇh´Mµhjh²hubeh}”(h]”Œ devlink-rate”ah ]”h"]”Œ devlink rate”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Mwubeh}”(h]”Œice-devlink-support”ah ]”h"]”Œice devlink support”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jRŒ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”jYŒ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”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j4j1jjýj j j½jºj]jZj2j/jjj,j)uŒ nametypes”}”(j4‰j‰j ‰j½‰j]‰j2‰j‰j,‰uh}”(j1hÊjýjj jjºj jZjÀj/j`jj5j)jj`jjöjfj j4j“j‘ j•jfjâjsuŒ 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”“”}”jgKs…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.