__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.213: ~ $
<!DOCTYPE html>

<html lang="en" data-content_root="../../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

    <title>ice devlink support &#8212; The Linux Kernel  documentation</title>
    <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
    <link rel="stylesheet" type="text/css" href="../../_static/alabaster.css?v=3918102e" />
    <script src="../../_static/documentation_options.js?v=5929fcd5"></script>
    <script src="../../_static/doctools.js?v=9bcbadda"></script>
    <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
    <link rel="index" title="Index" href="../../genindex.html" />
    <link rel="search" title="Search" href="../../search.html" />
    <link rel="next" title="ionic devlink support" href="ionic.html" />
    <link rel="prev" title="i40e devlink support" href="i40e.html" />
   
  <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
  

  
  

  </head><body>
  <div class="document">
    
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="../../index.html">
              <img class="logo" src="../../_static/logo.svg" alt="Logo of The Linux Kernel"/>
            </a></p>
<h1 class="logo"><a href="../../index.html">The Linux Kernel</a></h1>



<p class="blurb">6.18.50</p>







<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>


<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>

<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/index.html">All development-process docs</a></li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../subsystem-apis.html">Subsystems</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../subsystem-apis.html#core-subsystems">Core subsystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../subsystem-apis.html#human-interfaces">Human interfaces</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../../subsystem-apis.html#networking-interfaces">Networking interfaces</a><ul class="current">
<li class="toctree-l3 current"><a class="reference internal" href="../index.html">Networking</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../netlabel/index.html">NetLabel</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../infiniband/index.html">InfiniBand</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../isdn/index.html">ISDN</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../mhi/index.html">MHI</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../subsystem-apis.html#storage-interfaces">Storage interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../subsystem-apis.html#other-subsystems">Other subsystems</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../arch/index.html">CPU architectures</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../translations/index.html">Translations</a></li>
</ul>

</div>

<script type="text/javascript"> <!--
  var sbar = document.getElementsByClassName("sphinxsidebar")[0];
  let currents = document.getElementsByClassName("current")
  if (currents.length) {
    sbar.scrollTop = currents[currents.length - 1].offsetTop;
  }
  --> </script>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../../_sources/networking/devlink/ice.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
        </div>
      </div>
      <div class="documentwrapper">
        <div class="bodywrapper">
          

          <div class="body" role="main">
            
  



<section id="ice-devlink-support">
<h1>ice devlink support<a class="headerlink" href="#ice-devlink-support" title="Link to this heading">¶</a></h1>
<p>This document describes the devlink features implemented by the <code class="docutils literal notranslate"><span class="pre">ice</span></code>
device driver.</p>
<section id="parameters">
<h2>Parameters<a class="headerlink" href="#parameters" title="Link to this heading">¶</a></h2>
<table class="docutils align-default" id="id1">
<caption><span class="caption-text">Generic parameters implemented</span><a class="headerlink" href="#id1" title="Link to this table">¶</a></caption>
<colgroup>
<col style="width: 5.0%" />
<col style="width: 5.0%" />
<col style="width: 90.0%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p>Name</p></td>
<td><p>Mode</p></td>
<td><p>Notes</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">enable_roce</span></code></p></td>
<td><p>runtime</p></td>
<td><p>mutually exclusive with <code class="docutils literal notranslate"><span class="pre">enable_iwarp</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">enable_iwarp</span></code></p></td>
<td><p>runtime</p></td>
<td><p>mutually exclusive with <code class="docutils literal notranslate"><span class="pre">enable_roce</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">tx_scheduling_layers</span></code></p></td>
<td><p>permanent</p></td>
<td><p>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.</p>
<p>The 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:</p>
<div class="line-block">
<div class="line">tx_queue_0_packets: 24163396</div>
<div class="line">tx_queue_1_packets: 24164623</div>
<div class="line">tx_queue_2_packets: 24163188</div>
<div class="line">tx_queue_3_packets: 24163701</div>
<div class="line">tx_queue_4_packets: 24163683</div>
<div class="line">tx_queue_5_packets: 24164668</div>
<div class="line">tx_queue_6_packets: 23327200</div>
<div class="line">tx_queue_7_packets: 24163853</div>
<div class="line">tx_queue_8_packets: 91101417 &lt; Too much traffic is sent from 9th</div>
</div>
<p>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.</p>
<p>Use the <code class="docutils literal notranslate"><span class="pre">tx_scheduling_layer</span></code> 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.</p>
<p>You must do PCI slot powercycle for the selected topology to take effect.</p>
<p>To verify that value has been set:
$ devlink dev param show pci/0000:16:00.0 name tx_scheduling_layers</p>
</td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">msix_vec_per_pf_max</span></code></p></td>
<td><p>driverinit</p></td>
<td><p>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.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">msix_vec_per_pf_min</span></code></p></td>
<td><p>driverinit</p></td>
<td><p>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.</p></td>
</tr>
</tbody>
</table>
<table class="docutils align-default" id="id2">
<caption><span class="caption-text">Driver specific parameters implemented</span><a class="headerlink" href="#id2" title="Link to this table">¶</a></caption>
<colgroup>
<col style="width: 5.0%" />
<col style="width: 5.0%" />
<col style="width: 90.0%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p>Name</p></td>
<td><p>Mode</p></td>
<td><p>Description</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">local_forwarding</span></code></p></td>
<td><p>runtime</p></td>
<td><p>Controls loopback behavior by tuning scheduler bandwidth.
It impacts all kinds of functions: physical, virtual and
subfunctions.
Supported values are:</p>
<p><code class="docutils literal notranslate"><span class="pre">enabled</span></code> - loopback traffic is allowed on port</p>
<p><code class="docutils literal notranslate"><span class="pre">disabled</span></code> - loopback traffic is not allowed on this port</p>
<p><code class="docutils literal notranslate"><span class="pre">prioritized</span></code> - loopback traffic is prioritized on this port</p>
<p>Default value of <code class="docutils literal notranslate"><span class="pre">local_forwarding</span></code> parameter is <code class="docutils literal notranslate"><span class="pre">enabled</span></code>.
<code class="docutils literal notranslate"><span class="pre">prioritized</span></code> 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 <code class="docutils literal notranslate"><span class="pre">prioritized</span></code> port.</p>
</td>
</tr>
</tbody>
</table>
</section>
<section id="info-versions">
<h2>Info versions<a class="headerlink" href="#info-versions" title="Link to this heading">¶</a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">ice</span></code> driver reports the following versions</p>
<table class="docutils align-default" id="id3">
<caption><span class="caption-text">devlink info versions implemented</span><a class="headerlink" href="#id3" title="Link to this table">¶</a></caption>
<colgroup>
<col style="width: 4.8%" />
<col style="width: 4.8%" />
<col style="width: 4.8%" />
<col style="width: 85.7%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p>Name</p></td>
<td><p>Type</p></td>
<td><p>Example</p></td>
<td><p>Description</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">board.id</span></code></p></td>
<td><p>fixed</p></td>
<td><p>K65390-000</p></td>
<td><p>The Product Board Assembly (PBA) identifier of the board.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cgu.id</span></code></p></td>
<td><p>fixed</p></td>
<td><p>36</p></td>
<td><p>The Clock Generation Unit (CGU) hardware revision identifier.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">fw.mgmt</span></code></p></td>
<td><p>running</p></td>
<td><p>2.1.7</p></td>
<td><p>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.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">fw.mgmt.api</span></code></p></td>
<td><p>running</p></td>
<td><p>1.5.1</p></td>
<td><p>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).</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">fw.mgmt.build</span></code></p></td>
<td><p>running</p></td>
<td><p>0x305d955f</p></td>
<td><p>Unique identifier of the source for the management firmware.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">fw.undi</span></code></p></td>
<td><p>running</p></td>
<td><p>1.2581.0</p></td>
<td><p>Version of the Option ROM containing the UEFI driver. The version is
reported in <code class="docutils literal notranslate"><span class="pre">major.minor.patch</span></code> format. The major version is
incremented whenever a major breaking change occurs, or when the
minor version would overflow. The minor version is incremented for
non-breaking changes and reset to 1 when the major version is
incremented. The patch version is normally 0 but is incremented when
a fix is delivered as a patch against an older base Option ROM.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">fw.psid.api</span></code></p></td>
<td><p>running</p></td>
<td><p>0.80</p></td>
<td><p>Version defining the format of the flash contents.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">fw.bundle_id</span></code></p></td>
<td><p>running</p></td>
<td><p>0x80002ec0</p></td>
<td><p>Unique identifier of the firmware image file that was loaded onto
the device. Also referred to as the EETRACK identifier of the NVM.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">fw.app.name</span></code></p></td>
<td><p>running</p></td>
<td><p>ICE OS Default Package</p></td>
<td><p>The name of the DDP package that is active in the device. The DDP
package is loaded by the driver during initialization. Each
variation of the DDP package has a unique name.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">fw.app</span></code></p></td>
<td><p>running</p></td>
<td><p>1.3.1.0</p></td>
<td><p>The version of the DDP package that is active in the device. Note
that both the name (as reported by <code class="docutils literal notranslate"><span class="pre">fw.app.name</span></code>) and version are
required to uniquely identify the package.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">fw.app.bundle_id</span></code></p></td>
<td><p>running</p></td>
<td><p>0xc0000001</p></td>
<td><p>Unique identifier for the DDP package loaded in the device. Also
referred to as the DDP Track ID. Can be used to uniquely identify
the specific DDP package.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">fw.netlist</span></code></p></td>
<td><p>running</p></td>
<td><p>1.1.2000-6.7.0</p></td>
<td><p>The version of the netlist module. This module defines the device’s
Ethernet capabilities and default settings, and is used by the
management firmware as part of managing link and device
connectivity.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">fw.netlist.build</span></code></p></td>
<td><p>running</p></td>
<td><p>0xee16ced7</p></td>
<td><p>The first 4 bytes of the hash of the netlist module contents.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">fw.cgu</span></code></p></td>
<td><p>running</p></td>
<td><p>8032.16973825.6021</p></td>
<td><p>The version of Clock Generation Unit (CGU). Format:
&lt;CGU type&gt;.&lt;configuration version&gt;.&lt;firmware version&gt;.</p></td>
</tr>
</tbody>
</table>
</section>
<section id="flash-update">
<h2>Flash Update<a class="headerlink" href="#flash-update" title="Link to this heading">¶</a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">ice</span></code> driver implements support for flash update using the
<code class="docutils literal notranslate"><span class="pre">devlink-flash</span></code> interface. It supports updating the device flash using a
combined flash image that contains the <code class="docutils literal notranslate"><span class="pre">fw.mgmt</span></code>, <code class="docutils literal notranslate"><span class="pre">fw.undi</span></code>, and
<code class="docutils literal notranslate"><span class="pre">fw.netlist</span></code> components.</p>
<table class="docutils align-default" id="id4">
<caption><span class="caption-text">List of supported overwrite modes</span><a class="headerlink" href="#id4" title="Link to this table">¶</a></caption>
<colgroup>
<col style="width: 5.0%" />
<col style="width: 95.0%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p>Bits</p></td>
<td><p>Behavior</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">DEVLINK_FLASH_OVERWRITE_SETTINGS</span></code></p></td>
<td><p>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.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">DEVLINK_FLASH_OVERWRITE_SETTINGS</span></code> and <code class="docutils literal notranslate"><span class="pre">DEVLINK_FLASH_OVERWRITE_IDENTIFIERS</span></code></p></td>
<td><p>Do 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.</p></td>
</tr>
</tbody>
</table>
<p>The ice hardware does not support overwriting only identifiers while
preserving settings, and thus <code class="docutils literal notranslate"><span class="pre">DEVLINK_FLASH_OVERWRITE_IDENTIFIERS</span></code> 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.</p>
</section>
<section id="reload">
<h2>Reload<a class="headerlink" href="#reload" title="Link to this heading">¶</a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">ice</span></code> driver supports activating new firmware after a flash update
using <code class="docutils literal notranslate"><span class="pre">DEVLINK_CMD_RELOAD</span></code> with the <code class="docutils literal notranslate"><span class="pre">DEVLINK_RELOAD_ACTION_FW_ACTIVATE</span></code>
action.</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>devlink<span class="w"> </span>dev<span class="w"> </span>reload<span class="w"> </span>pci/0000:01:00.0<span class="w"> </span>reload<span class="w"> </span>action<span class="w"> </span>fw_activate
</pre></div>
</div>
<p>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.</p>
<p>The driver does not currently support reloading the driver via
<code class="docutils literal notranslate"><span class="pre">DEVLINK_RELOAD_ACTION_DRIVER_REINIT</span></code>.</p>
</section>
<section id="port-split">
<h2>Port split<a class="headerlink" href="#port-split" title="Link to this heading">¶</a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">ice</span></code> driver supports port splitting only for port 0, as the FW has
a predefined set of available port split options for the whole device.</p>
<p>A system reboot is required for port split to be applied.</p>
<p>The following command will select the port split option with 4 ports:</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>devlink<span class="w"> </span>port<span class="w"> </span>split<span class="w"> </span>pci/0000:16:00.0/0<span class="w"> </span>count<span class="w"> </span><span class="m">4</span>
</pre></div>
</div>
<p>The list of all available port options will be printed to dynamic debug after
each <code class="docutils literal notranslate"><span class="pre">split</span></code> and <code class="docutils literal notranslate"><span class="pre">unsplit</span></code> command. The first option is the default.</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w"> </span>Available<span class="w"> </span>port<span class="w"> </span>split<span class="w"> </span>options<span class="w"> </span>and<span class="w"> </span>max<span class="w"> </span>port<span class="w"> </span>speeds<span class="w"> </span><span class="o">(</span>Gbps<span class="o">)</span>:
ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w"> </span>Status<span class="w">  </span>Split<span class="w">      </span>Quad<span class="w"> </span><span class="m">0</span><span class="w">          </span>Quad<span class="w"> </span><span class="m">1</span>
ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w">         </span>count<span class="w">  </span>L0<span class="w">  </span>L1<span class="w">  </span>L2<span class="w">  </span>L3<span class="w">  </span>L4<span class="w">  </span>L5<span class="w">  </span>L6<span class="w">  </span>L7
ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w"> </span>Active<span class="w">  </span><span class="m">2</span><span class="w">     </span><span class="m">100</span><span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-<span class="w"> </span><span class="m">100</span><span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-
ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w">         </span><span class="m">2</span><span class="w">      </span><span class="m">50</span><span class="w">   </span>-<span class="w">  </span><span class="m">50</span><span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-
ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w"> </span>Pending<span class="w"> </span><span class="m">4</span><span class="w">      </span><span class="m">25</span><span class="w">  </span><span class="m">25</span><span class="w">  </span><span class="m">25</span><span class="w">  </span><span class="m">25</span><span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-
ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w">         </span><span class="m">4</span><span class="w">      </span><span class="m">25</span><span class="w">  </span><span class="m">25</span><span class="w">   </span>-<span class="w">   </span>-<span class="w">  </span><span class="m">25</span><span class="w">  </span><span class="m">25</span><span class="w">   </span>-<span class="w">   </span>-
ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w">         </span><span class="m">8</span><span class="w">      </span><span class="m">10</span><span class="w">  </span><span class="m">10</span><span class="w">  </span><span class="m">10</span><span class="w">  </span><span class="m">10</span><span class="w">  </span><span class="m">10</span><span class="w">  </span><span class="m">10</span><span class="w">  </span><span class="m">10</span><span class="w">  </span><span class="m">10</span>
ice<span class="w"> </span><span class="m">0000</span>:16:00.0:<span class="w">         </span><span class="m">1</span><span class="w">     </span><span class="m">100</span><span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-<span class="w">   </span>-
</pre></div>
</div>
<p>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.</p>
<p><code class="docutils literal notranslate"><span class="pre">devlink</span> <span class="pre">port</span> <span class="pre">unsplit</span></code> 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.</p>
</section>
<section id="regions">
<h2>Regions<a class="headerlink" href="#regions" title="Link to this heading">¶</a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">ice</span></code> driver implements the following regions for accessing internal
device data.</p>
<table class="docutils align-default" id="id5">
<caption><span class="caption-text">regions implemented</span><a class="headerlink" href="#id5" title="Link to this table">¶</a></caption>
<colgroup>
<col style="width: 15.0%" />
<col style="width: 85.0%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p>Name</p></td>
<td><p>Description</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">nvm-flash</span></code></p></td>
<td><p>The contents of the entire flash chip, sometimes referred to as
the device’s Non Volatile Memory.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">shadow-ram</span></code></p></td>
<td><p>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.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">device-caps</span></code></p></td>
<td><p>The contents of the device firmware’s capabilities buffer. Useful to
determine the current state and configuration of the device.</p></td>
</tr>
</tbody>
</table>
<p>Both the <code class="docutils literal notranslate"><span class="pre">nvm-flash</span></code> and <code class="docutils literal notranslate"><span class="pre">shadow-ram</span></code> regions can be accessed without a
snapshot. The <code class="docutils literal notranslate"><span class="pre">device-caps</span></code> region requires a snapshot as the contents are
sent by firmware and can’t be split into separate reads.</p>
<p>Users can request an immediate capture of a snapshot for all three regions
via the <code class="docutils literal notranslate"><span class="pre">DEVLINK_CMD_REGION_NEW</span></code> command.</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span>show
pci/0000:01:00.0/nvm-flash:<span class="w"> </span>size<span class="w"> </span><span class="m">10485760</span><span class="w"> </span>snapshot<span class="w"> </span><span class="o">[]</span><span class="w"> </span>max<span class="w"> </span><span class="m">1</span>
pci/0000:01:00.0/device-caps:<span class="w"> </span>size<span class="w"> </span><span class="m">4096</span><span class="w"> </span>snapshot<span class="w"> </span><span class="o">[]</span><span class="w"> </span>max<span class="w"> </span><span class="m">10</span>

$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span>new<span class="w"> </span>pci/0000:01:00.0/nvm-flash<span class="w"> </span>snapshot<span class="w"> </span><span class="m">1</span>
$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span>dump<span class="w"> </span>pci/0000:01:00.0/nvm-flash<span class="w"> </span>snapshot<span class="w"> </span><span class="m">1</span>

$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span>dump<span class="w"> </span>pci/0000:01:00.0/nvm-flash<span class="w"> </span>snapshot<span class="w"> </span><span class="m">1</span>
<span class="m">0000000000000000</span><span class="w"> </span><span class="m">0014</span><span class="w"> </span>95dc<span class="w"> </span><span class="m">0014</span><span class="w"> </span><span class="m">9514</span><span class="w"> </span><span class="m">0035</span><span class="w"> </span><span class="m">1670</span><span class="w"> </span><span class="m">0034</span><span class="w"> </span>db30
<span class="m">0000000000000010</span><span class="w"> </span><span class="m">0000</span><span class="w"> </span><span class="m">0000</span><span class="w"> </span>ffff<span class="w"> </span>ff04<span class="w"> </span><span class="m">0029</span><span class="w"> </span>8c00<span class="w"> </span><span class="m">0028</span><span class="w"> </span>8cc8
<span class="m">0000000000000020</span><span class="w"> </span><span class="m">0016</span><span class="w"> </span>0bb8<span class="w"> </span><span class="m">0016</span><span class="w"> </span><span class="m">1720</span><span class="w"> </span><span class="m">0000</span><span class="w"> </span><span class="m">0000</span><span class="w"> </span>c00f<span class="w"> </span>3ffc
<span class="m">0000000000000030</span><span class="w"> </span>bada<span class="w"> </span>cce5<span class="w"> </span>bada<span class="w"> </span>cce5<span class="w"> </span>bada<span class="w"> </span>cce5<span class="w"> </span>bada<span class="w"> </span>cce5

$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span><span class="nb">read</span><span class="w"> </span>pci/0000:01:00.0/nvm-flash<span class="w"> </span>snapshot<span class="w"> </span><span class="m">1</span><span class="w"> </span>address<span class="w"> </span><span class="m">0</span><span class="w"> </span>length<span class="w"> </span><span class="m">16</span>
<span class="m">0000000000000000</span><span class="w"> </span><span class="m">0014</span><span class="w"> </span>95dc<span class="w"> </span><span class="m">0014</span><span class="w"> </span><span class="m">9514</span><span class="w"> </span><span class="m">0035</span><span class="w"> </span><span class="m">1670</span><span class="w"> </span><span class="m">0034</span><span class="w"> </span>db30

$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span>delete<span class="w"> </span>pci/0000:01:00.0/nvm-flash<span class="w"> </span>snapshot<span class="w"> </span><span class="m">1</span>

$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span>new<span class="w"> </span>pci/0000:01:00.0/device-caps<span class="w"> </span>snapshot<span class="w"> </span><span class="m">1</span>
$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span>dump<span class="w"> </span>pci/0000:01:00.0/device-caps<span class="w"> </span>snapshot<span class="w"> </span><span class="m">1</span>
<span class="m">0000000000000000</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000010</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000020</span><span class="w"> </span><span class="m">02</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">02</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">32</span><span class="w"> </span><span class="m">03</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>0a<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">25</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000030</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000040</span><span class="w"> </span><span class="m">04</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000050</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000060</span><span class="w"> </span><span class="m">05</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">03</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000070</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000080</span><span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000090</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000000a0<span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000000b0<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000000c0<span class="w"> </span><span class="m">12</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000000d0<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000000e0<span class="w"> </span><span class="m">13</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000000f0<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000100</span><span class="w"> </span><span class="m">14</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000110</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000120</span><span class="w"> </span><span class="m">15</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000130</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000140</span><span class="w"> </span><span class="m">16</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000150</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000160</span><span class="w"> </span><span class="m">17</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000170</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000180</span><span class="w"> </span><span class="m">18</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000190</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000001a0<span class="w"> </span><span class="m">22</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000001b0<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000001c0<span class="w"> </span><span class="m">40</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000001d0<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000001e0<span class="w"> </span><span class="m">41</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
00000000000001f0<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000200</span><span class="w"> </span><span class="m">42</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>
<span class="m">0000000000000210</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span>

$<span class="w"> </span>devlink<span class="w"> </span>region<span class="w"> </span>delete<span class="w"> </span>pci/0000:01:00.0/device-caps<span class="w"> </span>snapshot<span class="w"> </span><span class="m">1</span>
</pre></div>
</div>
</section>
<section id="devlink-rate">
<h2>Devlink Rate<a class="headerlink" href="#devlink-rate" title="Link to this heading">¶</a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">ice</span></code> 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.</p>
<p>It 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.</p>
<p>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.</p>
<p>If 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.</p>
<table class="docutils align-default" id="id6">
<caption><span class="caption-text">Attributes supported</span><a class="headerlink" href="#id6" title="Link to this table">¶</a></caption>
<colgroup>
<col style="width: 15.0%" />
<col style="width: 85.0%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p>Name</p></td>
<td><p>Description</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">tx_max</span></code></p></td>
<td><p>maximum 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.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">tx_share</span></code></p></td>
<td><p>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.</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">tx_priority</span></code></p></td>
<td><p>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.</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">tx_weight</span></code></p></td>
<td><p>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.</p></td>
</tr>
</tbody>
</table>
<p><code class="docutils literal notranslate"><span class="pre">tx_priority</span></code> and <code class="docutils literal notranslate"><span class="pre">tx_weight</span></code> 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.</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span><span class="c1"># enable switchdev</span>
$<span class="w"> </span>devlink<span class="w"> </span>dev<span class="w"> </span>eswitch<span class="w"> </span><span class="nb">set</span><span class="w"> </span>pci/0000:4b:00.0<span class="w"> </span>mode<span class="w"> </span>switchdev

<span class="c1"># at this point driver should export internal hierarchy</span>
$<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="m">2</span><span class="w"> </span>&gt;<span class="w"> </span>/sys/class/net/ens785np0/device/sriov_numvfs

$<span class="w"> </span>devlink<span class="w"> </span>port<span class="w"> </span><span class="k">function</span><span class="w"> </span>rate<span class="w"> </span>show
pci/0000:4b:00.0/node_25:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_24
pci/0000:4b:00.0/node_24:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_0
pci/0000:4b:00.0/node_32:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_31
pci/0000:4b:00.0/node_31:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_30
pci/0000:4b:00.0/node_30:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_16
pci/0000:4b:00.0/node_19:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_18
pci/0000:4b:00.0/node_18:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_17
pci/0000:4b:00.0/node_17:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_16
pci/0000:4b:00.0/node_14:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_5
pci/0000:4b:00.0/node_5:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_3
pci/0000:4b:00.0/node_13:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_4
pci/0000:4b:00.0/node_12:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_4
pci/0000:4b:00.0/node_11:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_4
pci/0000:4b:00.0/node_10:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_4
pci/0000:4b:00.0/node_9:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_4
pci/0000:4b:00.0/node_8:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_4
pci/0000:4b:00.0/node_7:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_4
pci/0000:4b:00.0/node_6:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_4
pci/0000:4b:00.0/node_4:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_3
pci/0000:4b:00.0/node_3:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_16
pci/0000:4b:00.0/node_16:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_15
pci/0000:4b:00.0/node_15:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_0
pci/0000:4b:00.0/node_2:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_1
pci/0000:4b:00.0/node_1:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node<span class="w"> </span>parent<span class="w"> </span>node_0
pci/0000:4b:00.0/node_0:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>node
pci/0000:4b:00.0/1:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>leaf<span class="w"> </span>parent<span class="w"> </span>node_25
pci/0000:4b:00.0/2:<span class="w"> </span><span class="nb">type</span><span class="w"> </span>leaf<span class="w"> </span>parent<span class="w"> </span>node_25

<span class="c1"># let&#39;s create some custom node</span>
$<span class="w"> </span>devlink<span class="w"> </span>port<span class="w"> </span><span class="k">function</span><span class="w"> </span>rate<span class="w"> </span>add<span class="w"> </span>pci/0000:4b:00.0/node_custom<span class="w"> </span>parent<span class="w"> </span>node_0

<span class="c1"># second custom node</span>
$<span class="w"> </span>devlink<span class="w"> </span>port<span class="w"> </span><span class="k">function</span><span class="w"> </span>rate<span class="w"> </span>add<span class="w"> </span>pci/0000:4b:00.0/node_custom_1<span class="w"> </span>parent<span class="w"> </span>node_custom

<span class="c1"># reassign second VF to newly created branch</span>
$<span class="w"> </span>devlink<span class="w"> </span>port<span class="w"> </span><span class="k">function</span><span class="w"> </span>rate<span class="w"> </span><span class="nb">set</span><span class="w"> </span>pci/0000:4b:00.0/2<span class="w"> </span>parent<span class="w"> </span>node_custom_1

<span class="c1"># assign tx_weight to the VF</span>
$<span class="w"> </span>devlink<span class="w"> </span>port<span class="w"> </span><span class="k">function</span><span class="w"> </span>rate<span class="w"> </span><span class="nb">set</span><span class="w"> </span>pci/0000:4b:00.0/2<span class="w"> </span>tx_weight<span class="w"> </span><span class="m">5</span>

<span class="c1"># assign tx_share to the VF</span>
$<span class="w"> </span>devlink<span class="w"> </span>port<span class="w"> </span><span class="k">function</span><span class="w"> </span>rate<span class="w"> </span><span class="nb">set</span><span class="w"> </span>pci/0000:4b:00.0/2<span class="w"> </span>tx_share<span class="w"> </span>500Mbps
</pre></div>
</div>
</section>
</section>


          </div>
          
        </div>
      </div>
    <div class="clearer"></div>
  </div>
    <div class="footer">
      &#169;The kernel development community.
      
      |
      Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
      &amp; <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
      
      |
      <a href="../../_sources/networking/devlink/ice.rst.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>

Filemanager

Name Type Size Permission Actions
am65-nuss-cpsw-switch.html File 9.14 KB 0644
bnxt.html File 12.9 KB 0644
devlink-dpipe.html File 21.35 KB 0644
devlink-eswitch-attr.html File 13.3 KB 0644
devlink-flash.html File 17.62 KB 0644
devlink-health.html File 16.4 KB 0644
devlink-info.html File 19.9 KB 0644
devlink-linecard.html File 15.84 KB 0644
devlink-params.html File 18.2 KB 0644
devlink-port.html File 35.92 KB 0644
devlink-region.html File 16.65 KB 0644
devlink-reload.html File 14.16 KB 0644
devlink-resource.html File 15.4 KB 0644
devlink-selftests.html File 10.22 KB 0644
devlink-trap.html File 57.38 KB 0644
etas_es58x.html File 10.26 KB 0644
hns3.html File 9.53 KB 0644
i40e.html File 11.17 KB 0644
ice.html File 73.09 KB 0644
index.html File 15.26 KB 0644
ionic.html File 9.37 KB 0644
iosm.html File 16.14 KB 0644
ixgbe.html File 21.33 KB 0644
kvaser_pciefd.html File 9.29 KB 0644
kvaser_usb.html File 9.84 KB 0644
mlx4.html File 11.14 KB 0644
mlx5.html File 32.44 KB 0644
mlxsw.html File 14.51 KB 0644
mv88e6xxx.html File 9.32 KB 0644
netdevsim.html File 15.11 KB 0644
nfp.html File 11.93 KB 0644
octeontx2.html File 12.88 KB 0644
prestera.html File 20.36 KB 0644
qed.html File 9.16 KB 0644
sfc.html File 12.63 KB 0644
ti-cpsw-switch.html File 9.44 KB 0644
zl3073x.html File 11.28 KB 0644
Filemanager