From: Simon Horman <horms@kernel.org>
To: Tariq Toukan <tariqt@nvidia.com>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>,
netdev@vger.kernel.org, Paolo Abeni <pabeni@redhat.com>,
Carolina Jubran <cjubran@nvidia.com>,
Gal Pressman <gal@nvidia.com>,
open list <linux-kernel@vger.kernel.org>,
Shahar Shitrit <shshitrit@nvidia.com>,
Leon Romanovsky <leon@kernel.org>, Mark Bloch <mbloch@nvidia.com>,
Saeed Mahameed <saeedm@nvidia.com>,
Dragos Tatulea <dtatulea@nvidia.com>
Subject: Re: [PATCH net-next 0/5] net/mlx5: Introduce mlx5_nodnic, a driver for DRAM-less NVIDIA Mellanox NIC functions
Date: Fri, 2 Oct 2026 18:17:12 +0100 [thread overview]
Message-ID: <20261002171712.GN13925@horms.kernel.org> (raw)
In-Reply-To: <20260930125708.144767-1-tariqt@nvidia.com>
On Wed, Sep 30, 2026 at 03:57:03PM +0300, Tariq Toukan wrote:
> Hi,
>
> This series by Shahar introduces mlx5_nodnic, a Linux driver for the
> NODNIC (No-DRAM NIC) hardware interface present in Mellanox/NVIDIA
> ConnectX-family ASICs since 2015.
>
> NODNIC is a first-class hardware capability.
> It defines a lightweight NIC function intended for contexts where local
> DRAM is unavailable or too costly: embedded controllers, management
> planes, pre-boot environments, or any resource-constrained instantiation
> of a ConnectX NIC. The hardware sends and receives ordinary Ethernet
> frames via SQs, RQs and CQs. There is no encapsulation, no private
> protocol, and no FW interposition: packets are forwarded as standard
> Ethernet between whatever peers are connected to the function. The
> interface is documented in the HW spec and has been in production in
> non-Linux OS drivers for over a decade.
>
> Where it is used today:
> - Embedded management controllers on ConnectX-class ASICs that need a
> network path to the host without consuming a data-path PF.
> - Resource-constrained SoC integrations (no local DRAM) where a
> minimal-footprint driver is required.
> - Pre-boot / early-OS environments (PXE, iSCSI boot) that need a NIC
> without a full mlx5e stack.
> - BF4 management PFs (one concrete deployment): on BlueField-4 the
> firmware exposes a NODNIC PF on the host side and a peer PF on the ARM
> side, using standard vport forwarding to connect them. This provides
> in-band Ethernet connectivity between the host and the DPU OS - SSH,
> PXE, and any standard networking application work over it without any
> special handling.
>
> Design notes:
> - The driver is separate from mlx5e rather than a mode within it.
> NODNIC uses PCI Vendor Specific Capability (VSC) for command
> operations - reads and writes over PCI config space - instead of the
> DMA-based command interface used by mlx5_core. This is what makes
> NODNIC usable in environments without reliable DMA access, and it
> makes the two command paths fundamentally incompatible. Folding this
> into mlx5e would mean carrying a second command transport and a second
> resource model through code that is already dense.
> - A single SQ, RQ and shared CQ are exposed per function, with two MSI-X
> vectors: the data vector fires on CQEs and drives both TX and RX
> completions, and the event vector notifies on port state changes.
> This is the hardware's model, not a driver simplification.
> - The driver exposes a plain netdev with no private uAPI, no ioctls and
> no vendor-specific configuration surface. Everything is driven through
> standard netdev, ethtool and devlink interfaces.
> - The code lives under drivers/net/ethernet/mellanox/mlx5/nodnic/ and
> shares no paths with mlx5e, keeping the footprint small and the blast
> radius of changes contained.
Thanks for the above. I agree that this is a valid use-case.
And that the design approach taken is appropriate.
One minor nit: the above mentions devlink, but that doesn't seem to
appear in the driver. Not a big deal. But something I noticed.
Also, I do note that the first two patches are rather large.
But it's a new driver, and that is hard to avoid.
...
prev parent reply other threads:[~2026-10-02 17:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 12:57 [PATCH net-next 0/5] net/mlx5: Introduce mlx5_nodnic, a driver for DRAM-less NVIDIA Mellanox NIC functions Tariq Toukan
2026-09-30 12:57 ` [PATCH net-next 1/5] net/mlx5: nodnic: Introduce the mlx5_nodnic driver Tariq Toukan
2026-10-02 17:16 ` Simon Horman
2026-09-30 12:57 ` [PATCH net-next 2/5] net/mlx5: nodnic: Implement data path Tariq Toukan
2026-09-30 12:57 ` [PATCH net-next 3/5] net/mlx5: nodnic: Add TX/RX statistics Tariq Toukan
2026-09-30 12:57 ` [PATCH net-next 4/5] net/mlx5: nodnic: Add ethtool driver info Tariq Toukan
2026-09-30 12:57 ` [PATCH net-next 5/5] net/mlx5: nodnic: Add health monitoring Tariq Toukan
2026-10-02 17:17 ` Simon Horman [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261002171712.GN13925@horms.kernel.org \
--to=horms@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=cjubran@nvidia.com \
--cc=davem@davemloft.net \
--cc=dtatulea@nvidia.com \
--cc=edumazet@google.com \
--cc=gal@nvidia.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mbloch@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=saeedm@nvidia.com \
--cc=shshitrit@nvidia.com \
--cc=tariqt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.