diff options
| author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-08-18 16:00:39 +0000 | 
|---|---|---|
| committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-08-18 16:00:39 +0000 | 
| commit | 0c4c78bf4c8df288a664bf6dca154d77ea03f14e (patch) | |
| tree | a9c5de0ef38b77671bbbaa1304183eec3531b95a | |
| parent | 356b45cef33154bbf0e6f0d7cd67018365c0d013 (diff) | |
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
| -rw-r--r-- | target/linux/generic/files/drivers/net/phy/rtl8366rb.c | 9 | ||||
| -rw-r--r-- | target/linux/generic/files/drivers/net/phy/rtl8366s.c | 9 | 
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 a0a7df794..ec196f941 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 896333c93..66dc2db0d 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); | 
