mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-02-20 02:54:43 +02:00
merge rtl8366 switch fix from r22545
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22546 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
c2d19b3eb9
commit
3ec88d6832
@ -284,11 +284,11 @@ static int rtl8366rb_hw_init(struct rtl8366_smi *smi)
|
|||||||
/* enable all ports */
|
/* enable all ports */
|
||||||
REG_WR(smi, RTL8366RB_PECR, 0);
|
REG_WR(smi, RTL8366RB_PECR, 0);
|
||||||
|
|
||||||
/* disable learning for all ports */
|
/* enable learning for all ports */
|
||||||
REG_WR(smi, RTL8366RB_SSCR0, RTL8366RB_PORT_ALL);
|
REG_WR(smi, RTL8366RB_SSCR0, 0);
|
||||||
|
|
||||||
/* disable auto ageing for all ports */
|
/* enable auto ageing for all ports */
|
||||||
REG_WR(smi, RTL8366RB_SSCR1, RTL8366RB_PORT_ALL);
|
REG_WR(smi, RTL8366RB_SSCR1, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* discard VLAN tagged packets if the port is not a member of
|
* discard VLAN tagged packets if the port is not a member of
|
||||||
@ -752,6 +752,41 @@ static int rtl8366rb_sw_set_vlan_enable(struct switch_dev *dev,
|
|||||||
return rtl8366rb_vlan_set_4ktable(smi, val->value.i);
|
return rtl8366rb_vlan_set_4ktable(smi, val->value.i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int rtl8366rb_sw_get_learning_enable(struct switch_dev *dev,
|
||||||
|
const struct switch_attr *attr,
|
||||||
|
struct switch_val *val)
|
||||||
|
{
|
||||||
|
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
||||||
|
u32 data;
|
||||||
|
|
||||||
|
rtl8366_smi_read_reg(smi, RTL8366RB_SSCR0, &data);
|
||||||
|
val->value.i = !data;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int rtl8366rb_sw_set_learning_enable(struct switch_dev *dev,
|
||||||
|
const struct switch_attr *attr,
|
||||||
|
struct switch_val *val)
|
||||||
|
{
|
||||||
|
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
||||||
|
u32 portmask = 0;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
if (!val->value.i)
|
||||||
|
portmask = RTL8366RB_PORT_ALL;
|
||||||
|
|
||||||
|
/* set learning for all ports */
|
||||||
|
REG_WR(smi, RTL8366RB_SSCR0, portmask);
|
||||||
|
|
||||||
|
/* set auto ageing for all ports */
|
||||||
|
REG_WR(smi, RTL8366RB_SSCR1, portmask);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const char *rtl8366rb_speed_str(unsigned speed)
|
static const char *rtl8366rb_speed_str(unsigned speed)
|
||||||
{
|
{
|
||||||
switch (speed) {
|
switch (speed) {
|
||||||
@ -1016,6 +1051,13 @@ static int rtl8366rb_sw_reset_switch(struct switch_dev *dev)
|
|||||||
|
|
||||||
static struct switch_attr rtl8366rb_globals[] = {
|
static struct switch_attr rtl8366rb_globals[] = {
|
||||||
{
|
{
|
||||||
|
.type = SWITCH_TYPE_INT,
|
||||||
|
.name = "enable_learning",
|
||||||
|
.description = "Enable learning, enable aging",
|
||||||
|
.set = rtl8366rb_sw_set_learning_enable,
|
||||||
|
.get = rtl8366rb_sw_get_learning_enable,
|
||||||
|
.max = 1
|
||||||
|
}, {
|
||||||
.type = SWITCH_TYPE_INT,
|
.type = SWITCH_TYPE_INT,
|
||||||
.name = "enable_vlan",
|
.name = "enable_vlan",
|
||||||
.description = "Enable VLAN mode",
|
.description = "Enable VLAN mode",
|
||||||
|
@ -294,11 +294,11 @@ static int rtl8366s_hw_init(struct rtl8366_smi *smi)
|
|||||||
/* enable all ports */
|
/* enable all ports */
|
||||||
REG_WR(smi, RTL8366S_PECR, 0);
|
REG_WR(smi, RTL8366S_PECR, 0);
|
||||||
|
|
||||||
/* disable learning for all ports */
|
/* enable learning for all ports */
|
||||||
REG_WR(smi, RTL8366S_SSCR0, RTL8366S_PORT_ALL);
|
REG_WR(smi, RTL8366S_SSCR0, 0);
|
||||||
|
|
||||||
/* disable auto ageing for all ports */
|
/* enable auto ageing for all ports */
|
||||||
REG_WR(smi, RTL8366S_SSCR1, RTL8366S_PORT_ALL);
|
REG_WR(smi, RTL8366S_SSCR1, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* discard VLAN tagged packets if the port is not a member of
|
* discard VLAN tagged packets if the port is not a member of
|
||||||
@ -738,6 +738,41 @@ static int rtl8366s_sw_set_vlan_enable(struct switch_dev *dev,
|
|||||||
return rtl8366s_vlan_set_4ktable(smi, val->value.i);
|
return rtl8366s_vlan_set_4ktable(smi, val->value.i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int rtl8366s_sw_get_learning_enable(struct switch_dev *dev,
|
||||||
|
const struct switch_attr *attr,
|
||||||
|
struct switch_val *val)
|
||||||
|
{
|
||||||
|
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
||||||
|
u32 data;
|
||||||
|
|
||||||
|
rtl8366_smi_read_reg(smi,RTL8366S_SSCR0, &data);
|
||||||
|
val->value.i = !data;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int rtl8366s_sw_set_learning_enable(struct switch_dev *dev,
|
||||||
|
const struct switch_attr *attr,
|
||||||
|
struct switch_val *val)
|
||||||
|
{
|
||||||
|
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
||||||
|
u32 portmask = 0;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
if (!val->value.i)
|
||||||
|
portmask = RTL8366S_PORT_ALL;
|
||||||
|
|
||||||
|
/* set learning for all ports */
|
||||||
|
REG_WR(smi, RTL8366S_SSCR0, portmask);
|
||||||
|
|
||||||
|
/* set auto ageing for all ports */
|
||||||
|
REG_WR(smi, RTL8366S_SSCR1, portmask);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const char *rtl8366s_speed_str(unsigned speed)
|
static const char *rtl8366s_speed_str(unsigned speed)
|
||||||
{
|
{
|
||||||
switch (speed) {
|
switch (speed) {
|
||||||
@ -1004,6 +1039,13 @@ static int rtl8366s_sw_reset_switch(struct switch_dev *dev)
|
|||||||
|
|
||||||
static struct switch_attr rtl8366s_globals[] = {
|
static struct switch_attr rtl8366s_globals[] = {
|
||||||
{
|
{
|
||||||
|
.type = SWITCH_TYPE_INT,
|
||||||
|
.name = "enable_learning",
|
||||||
|
.description = "Enable learning, enable aging",
|
||||||
|
.set = rtl8366s_sw_set_learning_enable,
|
||||||
|
.get = rtl8366s_sw_get_learning_enable,
|
||||||
|
.max = 1,
|
||||||
|
}, {
|
||||||
.type = SWITCH_TYPE_INT,
|
.type = SWITCH_TYPE_INT,
|
||||||
.name = "enable_vlan",
|
.name = "enable_vlan",
|
||||||
.description = "Enable VLAN mode",
|
.description = "Enable VLAN mode",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user