__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<!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>Linux Devlink Documentation — 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="Devlink DPIPE" href="devlink-dpipe.html" />
<link rel="prev" title="DSA switch configuration from userspace" href="../dsa/configuration.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/index.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="linux-devlink-documentation">
<h1>Linux Devlink Documentation<a class="headerlink" href="#linux-devlink-documentation" title="Link to this heading">¶</a></h1>
<p>devlink is an API to expose device information and resources not directly
related to any device class, such as chip-wide/switch-ASIC-wide configuration.</p>
<section id="locking">
<h2>Locking<a class="headerlink" href="#locking" title="Link to this heading">¶</a></h2>
<p>Driver facing APIs are currently transitioning to allow more explicit
locking. Drivers can use the existing <code class="docutils literal notranslate"><span class="pre">devlink_*</span></code> set of APIs, or
new APIs prefixed by <code class="docutils literal notranslate"><span class="pre">devl_*</span></code>. The older APIs handle all the locking
in devlink core, but don’t allow registration of most sub-objects once
the main devlink object is itself registered. The newer <code class="docutils literal notranslate"><span class="pre">devl_*</span></code> APIs assume
the devlink instance lock is already held. Drivers can take the instance
lock by calling <code class="docutils literal notranslate"><span class="pre">devl_lock()</span></code>. It is also held all callbacks of devlink
netlink commands.</p>
<p>Drivers are encouraged to use the devlink instance lock for their own needs.</p>
<p>Drivers need to be cautious when taking devlink instance lock and
taking RTNL lock at the same time. Devlink instance lock needs to be taken
first, only after that RTNL lock could be taken.</p>
</section>
<section id="nested-instances">
<h2>Nested instances<a class="headerlink" href="#nested-instances" title="Link to this heading">¶</a></h2>
<p>Some objects, like linecards or port functions, could have another
devlink instances created underneath. In that case, drivers should make
sure to respect following rules:</p>
<blockquote>
<div><ul class="simple">
<li><p>Lock ordering should be maintained. If driver needs to take instance
lock of both nested and parent instances at the same time, devlink
instance lock of the parent instance should be taken first, only then
instance lock of the nested instance could be taken.</p></li>
<li><p>Driver should use object-specific helpers to setup the
nested relationship:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">devl_nested_devlink_set()</span></code> - called to setup devlink -> nested
devlink relationship (could be user for multiple nested instances.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">devl_port_fn_devlink_set()</span></code> - called to setup port function ->
nested devlink relationship.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">devlink_linecard_nested_dl_set()</span></code> - called to setup linecard ->
nested devlink relationship.</p></li>
</ul>
</li>
</ul>
</div></blockquote>
<p>The nested devlink info is exposed to the userspace over object-specific
attributes of devlink netlink.</p>
</section>
<section id="interface-documentation">
<h2>Interface documentation<a class="headerlink" href="#interface-documentation" title="Link to this heading">¶</a></h2>
<p>The following pages describe various interfaces available through devlink in
general.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="devlink-dpipe.html">Devlink DPIPE</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-eswitch-attr.html">Devlink E-Switch Attribute</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-flash.html">Devlink Flash</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-health.html">Devlink Health</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-info.html">Devlink Info</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-linecard.html">Devlink Line card</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-params.html">Devlink Params</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-port.html">Devlink Port</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-region.html">Devlink Region</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-reload.html">Devlink Reload</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-resource.html">Devlink Resource</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-selftests.html">Devlink Selftests</a></li>
<li class="toctree-l1"><a class="reference internal" href="devlink-trap.html">Devlink Trap</a></li>
</ul>
</div>
</section>
<section id="driver-specific-documentation">
<h2>Driver-specific documentation<a class="headerlink" href="#driver-specific-documentation" title="Link to this heading">¶</a></h2>
<p>Each driver that implements <code class="docutils literal notranslate"><span class="pre">devlink</span></code> is expected to document what
parameters, info versions, and other features it supports.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="am65-nuss-cpsw-switch.html">am65-cpsw-nuss devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="bnxt.html">bnxt devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="etas_es58x.html">etas_es58x devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="hns3.html">hns3 devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="i40e.html">i40e devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="ice.html">ice devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="ionic.html">ionic devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="iosm.html">iosm devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="ixgbe.html">ixgbe devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="kvaser_pciefd.html">kvaser_pciefd devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="kvaser_usb.html">kvaser_usb devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="mlx4.html">mlx4 devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="mlx5.html">mlx5 devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="mlxsw.html">mlxsw devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="mv88e6xxx.html">mv88e6xxx devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="netdevsim.html">netdevsim devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="nfp.html">nfp devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="octeontx2.html">octeontx2 devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="prestera.html">prestera devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="qed.html">qed devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="sfc.html">sfc devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="ti-cpsw-switch.html">ti-cpsw-switch devlink support</a></li>
<li class="toctree-l1"><a class="reference internal" href="zl3073x.html">zl3073x devlink support</a></li>
</ul>
</div>
</section>
</section>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="../../_sources/networking/devlink/index.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>| 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 |
|