openwrt/target/linux/generic/pending-5.10/765-net-dsa-Include-local-addresses-in-assisted-CPU-port.patch
Hauke Mehrtens 2e17c71095 kernel: Backport patch to automatically bring up DSA master when opening user port
Without this patch we have to manually bring up the CPU interface in
failsafe mode.

This was backported from kernel 5.12.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Tested-by: Rafał Miłecki <rafal@milecki.pl>
2021-06-22 23:23:00 +02:00

37 lines
1.2 KiB
Diff

From dd082716b43a3684b2f473ae5d1e76d1c076d86d Mon Sep 17 00:00:00 2001
From: Tobias Waldekranz <tobias@waldekranz.com>
Date: Sat, 16 Jan 2021 02:25:12 +0100
Subject: [PATCH] net: dsa: Include local addresses in assisted CPU port
learning
Add local addresses (i.e. the ports' MAC addresses) to the hardware
FDB when assisted CPU port learning is enabled.
NOTE: The bridge's own MAC address is also "local". If that address is
not shared with any port, the bridge's MAC is not be added by this
functionality - but the following commit takes care of that case.
Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
---
net/dsa/slave.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -2194,10 +2194,12 @@ static int dsa_slave_switchdev_event(str
fdb_info = ptr;
if (dsa_slave_dev_check(dev)) {
- if (!fdb_info->added_by_user)
- return NOTIFY_OK;
-
dp = dsa_slave_to_port(dev);
+
+ if (fdb_info->local && dp->ds->assisted_learning_on_cpu_port)
+ dp = dp->cpu_dp;
+ else if (!fdb_info->added_by_user)
+ return NOTIFY_OK;
} else {
/* Snoop addresses learnt on foreign interfaces
* bridged with us, for switches that don't