From 330ed1b52d8148b6458c670e143c2de723133af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= Date: Thu, 24 Feb 2022 00:06:56 +0100 Subject: [PATCH] build_patches: Add hack which fixes forwarding on a stacked bridge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently we are utilizing stacked bridges to keep configuration of DSA devices as close as possible to swconfig devices. The lower bridge is for configuration of the DSA hardware and is vlan-aware, while the upper bridge is used to connect wireless interfaces to the client interface. A packet arriving from the switch might have the offload_fwd_mark flag set in the skb to prevent it from being sent to DSA ports, as this has already been done in hardware. However, this flag is not cleared before the skb is processed by the upper bridge, which prevents it from being sent to any other ports of that bridge. Therefore, communication is not possible between different ports of that bridge, while communication with the bridge interface itself is possible. This issue affects both the layer3 and node variant, but due to the layer 2 architecture of the node firmware, it is far more noticeable in the node firmware, as it prevents ethernet clients from sending packets to the gateway. Work around this issue by clearing the offload_fwd_mark flag before passing the skb up. Fixes: #205 Signed-off-by: Fabian Bläse Reviewed-by: Johannes Kimmel --- ...ixes-forwarding-on-a-stacked-bridge-.patch | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 build_patches/openwrt/0100-Add-hack-which-fixes-forwarding-on-a-stacked-bridge-.patch diff --git a/build_patches/openwrt/0100-Add-hack-which-fixes-forwarding-on-a-stacked-bridge-.patch b/build_patches/openwrt/0100-Add-hack-which-fixes-forwarding-on-a-stacked-bridge-.patch new file mode 100644 index 00000000..c3926aea --- /dev/null +++ b/build_patches/openwrt/0100-Add-hack-which-fixes-forwarding-on-a-stacked-bridge-.patch @@ -0,0 +1,32 @@ +From f53b71d2907eeb0d80e79d99fa7b756b5e5bf32b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= +Date: Thu, 24 Feb 2022 00:04:47 +0100 +Subject: [PATCH] Add hack which fixes forwarding on a stacked bridge + configuration using DSA + +--- + .../hack-5.4/999-fix-stacked-bridge-forwarding.patch | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + create mode 100644 target/linux/generic/hack-5.4/999-fix-stacked-bridge-forwarding.patch + +diff --git a/target/linux/generic/hack-5.4/999-fix-stacked-bridge-forwarding.patch b/target/linux/generic/hack-5.4/999-fix-stacked-bridge-forwarding.patch +new file mode 100644 +index 0000000000..e1d4cb9cd5 +--- /dev/null ++++ b/target/linux/generic/hack-5.4/999-fix-stacked-bridge-forwarding.patch +@@ -0,0 +1,12 @@ ++--- a/net/bridge/br_input.c +++++ b/net/bridge/br_input.c ++@@ -52,6 +52,9 @@ static int br_pass_frame_up(struct sk_bu ++ return NET_RX_DROP; ++ } ++ +++ /* remove offload flag, so upper bridges do not drop the packet */ +++ br_switchdev_frame_unmark(skb); +++ ++ indev = skb->dev; ++ skb->dev = brdev; ++ skb = br_handle_vlan(br, NULL, vg, skb); +-- +2.35.1 +