mainlining shenanigans
Go to file
Vladimir Oltean eca70102cf net: dsa: felix: add support for changing DSA master
Changing the DSA master means different things depending on the tagging
protocol in use.

For NPI mode ("ocelot" and "seville"), there is a single port which can
be configured as NPI, but DSA only permits changing the CPU port
affinity of user ports one by one. So changing a user port to a
different NPI port globally changes what the NPI port is, and breaks the
user ports still using the old one.

To address this while still permitting the change of the NPI port,
require that the user ports which are still affine to the old NPI port
are down, and cannot be brought up until they are all affine to the same
NPI port.

The tag_8021q mode ("ocelot-8021q") is more flexible, in that each user
port can be freely assigned to one CPU port or to the other. This works
by filtering host addresses towards both tag_8021q CPU ports, and then
restricting the forwarding from a certain user port only to one of the
two tag_8021q CPU ports.

Additionally, the 2 tag_8021q CPU ports can be placed in a LAG. This
works by enabling forwarding via PGID_SRC from a certain user port
towards the logical port ID containing both tag_8021q CPU ports, but
then restricting forwarding per packet, via the LAG hash codes in
PGID_AGGR, to either one or the other.

When we change the DSA master to a LAG device, DSA guarantees us that
the LAG has at least one lower interface as a physical DSA master.
But DSA masters can come and go as lowers of that LAG, and
ds->ops->port_change_master() will not get called, because the DSA
master is still the same (the LAG). So we need to hook into the
ds->ops->port_lag_{join,leave} calls on the CPU ports and update the
logical port ID of the LAG that user ports are assigned to.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2022-09-20 10:32:36 +02:00
arch ARM: dts: aspeed: elbert: Enable mac3 controller 2022-09-15 12:41:37 +02:00
block
certs
crypto
Documentation docs: net: dsa: update information about multiple CPU ports 2022-09-20 10:32:36 +02:00
drivers net: dsa: felix: add support for changing DSA master 2022-09-20 10:32:36 +02:00
fs Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-09-08 18:38:30 +02:00
include net: dsa: felix: add support for changing DSA master 2022-09-20 10:32:36 +02:00
init
io_uring io_uring-6.0-2022-09-02 2022-09-02 16:37:01 -07:00
ipc
kernel Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2022-09-06 23:21:18 +02:00
lib netlink: introduce NLA_POLICY_MAX_BE 2022-09-07 12:33:43 +01:00
LICENSES
mm mm: pagewalk: Fix race between unmap and page walker 2022-09-03 10:13:13 -07:00
net net: dsa: allow masters to join a LAG 2022-09-20 10:32:36 +02:00
samples samples/bpf: Reduce syscall overhead in map_perf_test. 2022-09-05 15:33:05 +02:00
scripts Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-09-08 18:38:30 +02:00
security Landlock fix for v6.0-rc4 2022-09-02 15:24:08 -07:00
sound
tools selftests: mlxsw: Remove qos_burst test 2022-09-19 18:08:00 -07:00
usr
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap .mailmap: update Luca Ceresoli's e-mail address 2022-08-28 14:02:46 -07:00
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS Immutable branch between MFD Net and Pinctrl due for the v6.0 merge window 2022-09-19 14:21:54 -07:00
Makefile Linux 6.0-rc4 2022-09-04 13:10:01 -07:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.