aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2010-08-18 16:00:39 +0000
committerGabor Juhos <juhosg@openwrt.org>2010-08-18 16:00:39 +0000
commitd5b64743a9864f065c86146c51a950a151772a4f (patch)
treea9c5de0ef38b77671bbbaa1304183eec3531b95a /target/linux/generic
parent743e9ac1fc8193835a7002ece45092c0094bdf88 (diff)
downloadupstream-d5b64743a9864f065c86146c51a950a151772a4f.tar.gz
upstream-d5b64743a9864f065c86146c51a950a151772a4f.tar.bz2
upstream-d5b64743a9864f065c86146c51a950a151772a4f.zip
generic: rtl8366: allow use of VIDs 16-4095 if vlan4k is enabled
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22704 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic')
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8366rb.c9
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8366s.c9
2 files changed, 14 insertions, 4 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
index a0a7df794c..ec196f941b 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
@@ -554,7 +554,12 @@ static int rtl8366rb_set_mc_index(struct rtl8366_smi *smi, int port, int index)
static int rtl8366rb_is_vlan_valid(struct rtl8366_smi *smi, unsigned vlan)
{
- if (vlan == 0 || vlan >= RTL8366RB_NUM_VLANS)
+ unsigned max = RTL8366RB_NUM_VLANS;
+
+ if (smi->vlan4k_enabled)
+ max = RTL8366RB_NUM_VIDS - 1;
+
+ if (vlan == 0 || vlan >= max)
return 0;
return 1;
@@ -882,7 +887,7 @@ static int rtl8366rb_switch_init(struct rtl8366_smi *smi)
dev->name = "RTL8366RB";
dev->cpu_port = RTL8366RB_PORT_NUM_CPU;
dev->ports = RTL8366RB_NUM_PORTS;
- dev->vlans = RTL8366RB_NUM_VLANS;
+ dev->vlans = RTL8366RB_NUM_VIDS;
dev->ops = &rtl8366_ops;
dev->devname = dev_name(smi->parent);
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366s.c b/target/linux/generic/files/drivers/net/phy/rtl8366s.c
index 896333c93c..66dc2db0df 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8366s.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8366s.c
@@ -593,7 +593,12 @@ static int rtl8366s_enable_vlan4k(struct rtl8366_smi *smi, int enable)
static int rtl8366s_is_vlan_valid(struct rtl8366_smi *smi, unsigned vlan)
{
- if (vlan == 0 || vlan >= RTL8366S_NUM_VLANS)
+ unsigned max = RTL8366S_NUM_VLANS;
+
+ if (smi->vlan4k_enabled)
+ max = RTL8366S_NUM_VIDS - 1;
+
+ if (vlan == 0 || vlan >= max)
return 0;
return 1;
@@ -909,7 +914,7 @@ static int rtl8366s_switch_init(struct rtl8366_smi *smi)
dev->name = "RTL8366S";
dev->cpu_port = RTL8366S_PORT_NUM_CPU;
dev->ports = RTL8366S_NUM_PORTS;
- dev->vlans = RTL8366S_NUM_VLANS;
+ dev->vlans = RTL8366S_NUM_VIDS;
dev->ops = &rtl8366_ops;
dev->devname = dev_name(smi->parent);