ramips: Fix multicast ICMPv6 for the rt3050 ethernet switch.
[openwrt/staging/blogic.git] / target / linux / ramips / patches-4.4 / 0515-net-mediatek-fix-multicast-icmpv6-for-the-rt3050-eth.patch
diff --git a/target/linux/ramips/patches-4.4/0515-net-mediatek-fix-multicast-icmpv6-for-the-rt3050-eth.patch b/target/linux/ramips/patches-4.4/0515-net-mediatek-fix-multicast-icmpv6-for-the-rt3050-eth.patch
new file mode 100644 (file)
index 0000000..66b65d8
--- /dev/null
@@ -0,0 +1,26 @@
+From: Vittorio Gambaletta <openwrt@vittgam.net>
+Date: Mon, 02 May 2016 04:55:48 +0200
+Subject: [PATCH] net: mediatek: Fix multicast ICMPv6 for the rt3050 ethernet switch.
+
+The FCT2 esw register should be set to 0x2500C to have "unknown IPv6
+multicast" packets broadcasted to every port, instead of dropped.
+The previous value only let those packets go through ports 1 and 3.
+
+"Unknown IPv6 multicast" packets include packets needed by ICMPv6 echo
+requests addressed to well-known addresses, such as ff02::1 (MAC address
+is 33:33:00:00:00:01 in this case).
+
+Signed-off-by: Vittorio Gambaletta <openwrt@vittgam.net>
+---
+
+--- a/drivers/net/ethernet/mediatek/esw_rt3050.c
++++ b/drivers/net/ethernet/mediatek/esw_rt3050.c
+@@ -450,7 +450,7 @@ static void esw_hw_init(struct rt305x_es
+                     (RT305X_ESW_PORTS_NOCPU << RT305X_ESW_POC2_UNTAG_EN_S)),
+               RT305X_ESW_REG_POC2);
+-      esw_w32(esw, 0x00d6500c, RT305X_ESW_REG_FCT2);
++      esw_w32(esw, 0x0002500c, RT305X_ESW_REG_FCT2);
+       /* 300s aging timer, max packet len 1536, broadcast storm prevention
+        * disabled, disable collision abort, mac xor48 hash, 10 packet back