aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2010-07-02 09:55:57 +0000
committerGabor Juhos <juhosg@openwrt.org>2010-07-02 09:55:57 +0000
commitd4a858f5a66cc66ab268139f4f2eb24011c77210 (patch)
treef84b75bd7e2bfb705dc66e0b77ed371e0b450009 /target/linux
parentb81b30cef718ce12ae193b0cf7b33ebfddb23e0d (diff)
downloadupstream-d4a858f5a66cc66ab268139f4f2eb24011c77210.tar.gz
upstream-d4a858f5a66cc66ab268139f4f2eb24011c77210.tar.bz2
upstream-d4a858f5a66cc66ab268139f4f2eb24011c77210.zip
generic: rtl8366: enable VLAN ingress filtering
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22044 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8366rb.c8
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8366s.c7
2 files changed, 15 insertions, 0 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
index c006f73def..420a5523cf 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
@@ -70,6 +70,8 @@
#define RTL8366RB_PHY_NO_OFFSET 9
#define RTL8366RB_PHY_NO_MASK (0x1f << 9)
+#define RTL8366RB_VLAN_INGRESS_CTRL2_REG 0x037f
+
/* LED control registers */
#define RTL8366RB_LED_BLINKRATE_REG 0x0430
#define RTL8366RB_LED_BLINKRATE_BIT 0
@@ -288,6 +290,12 @@ static int rtl8366rb_hw_init(struct rtl8366_smi *smi)
/* disable auto ageing for all ports */
REG_WR(smi, RTL8366RB_SSCR1, RTL8366RB_PORT_ALL);
+ /*
+ * discard VLAN tagged packets if the port is not a member of
+ * the VLAN with which the packets is associated.
+ */
+ REG_WR(smi, RTL8366RB_VLAN_INGRESS_CTRL2_REG, RTL8366RB_PORT_ALL);
+
/* don't drop packets whose DA has not been learned */
REG_RMW(smi, RTL8366RB_SSCR2, RTL8366RB_SSCR2_DROP_UNKNOWN_DA, 0);
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366s.c b/target/linux/generic/files/drivers/net/phy/rtl8366s.c
index 91030ac48e..45da8fd8e5 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8366s.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8366s.c
@@ -112,6 +112,7 @@
#define RTL8366S_VLAN_MEMCONF_BASE 0x0016
+#define RTL8366S_VLAN_MEMBERINGRESS_REG 0x0379
#define RTL8366S_PORT_LINK_STATUS_BASE 0x0060
#define RTL8366S_PORT_STATUS_SPEED_MASK 0x0003
@@ -299,6 +300,12 @@ static int rtl8366s_hw_init(struct rtl8366_smi *smi)
/* disable auto ageing for all ports */
REG_WR(smi, RTL8366S_SSCR1, RTL8366S_PORT_ALL);
+ /*
+ * discard VLAN tagged packets if the port is not a member of
+ * the VLAN with which the packets is associated.
+ */
+ REG_WR(smi, RTL8366S_VLAN_MEMBERINGRESS_REG, RTL8366S_PORT_ALL);
+
/* don't drop packets whose DA has not been learned */
REG_RMW(smi, RTL8366S_SSCR2, RTL8366S_SSCR2_DROP_UNKNOWN_DA, 0);