Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Saeed Mahameed and committed by
Paolo Abeni
0e535824 8180c4fa

+17 -1
+2
Documentation/netlink/specs/devlink.yaml
··· 99 99 name: legacy 100 100 - 101 101 name: switchdev 102 + - 103 + name: switchdev-inactive 102 104 - 103 105 type: enum 104 106 name: eswitch-inline-mode
+1
include/uapi/linux/devlink.h
··· 181 181 enum devlink_eswitch_mode { 182 182 DEVLINK_ESWITCH_MODE_LEGACY, 183 183 DEVLINK_ESWITCH_MODE_SWITCHDEV, 184 + DEVLINK_ESWITCH_MODE_SWITCHDEV_INACTIVE, 184 185 }; 185 186 186 187 enum devlink_eswitch_inline_mode {