]> git.ipfire.org Git - thirdparty/linux.git/commit
devlink: Introduce switchdev_inactive eswitch mode
authorSaeed Mahameed <saeedm@nvidia.com>
Sat, 8 Nov 2025 07:04:02 +0000 (23:04 -0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 11 Nov 2025 12:17:53 +0000 (13:17 +0100)
commit0e535824d0bcf7c9bb0532d902283c31c78cd6f3
treefc5b7d1620bc9f41c237ccc5de5a20cd8bd0d54c
parent8180c4fa5444247c3fcecc98c75d53cdb801604c
devlink: Introduce switchdev_inactive eswitch mode

Adds DEVLINK_ESWITCH_MODE_SWITCHDEV_INACTIVE attribute to UAPI and
documentation.

Before having traffic flow through an eswitch, a user may want to have the
ability to block traffic towards the FDB until FDB is fully programmed and
the user is ready to send traffic to it. For example: when two eswitches
are present for vports in a multi-PF setup, one eswitch may take over the
traffic from the other when the user chooses.
Before this take over, a user may want to first program the inactive
eswitch and then once ready redirect traffic to this new eswitch.

switchdev modes transition semantics:

legacy->switchdev_inactive: Create switchdev mode normally, traffic not
  allowed to flow yet.

switchdev_inactive->switchdev: Enable traffic to flow.

switchdev->switchdev_inactive: Block traffic on the FDB, FDB and
  representros state and content is preserved.

When eswitch is configured to this mode, traffic is ignored/dropped on
this eswitch FDB, while current configuration is kept, e.g FDB rules and
netdev representros are kept available, FDB programming is allowed.

Example:
 # start inactive switchdev
devlink dev eswitch set pci/0000:08:00.1 mode switchdev_inactive
 # setup TC rules, representors etc ..
 # activate
devlink dev eswitch set pci/0000:08:00.1 mode switchdev

Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://patch.msgid.link/20251108070404.1551708-2-saeed@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Documentation/netlink/specs/devlink.yaml
Documentation/networking/devlink/devlink-eswitch-attr.rst
include/uapi/linux/devlink.h
net/devlink/netlink_gen.c