Changeset 22546 for branches/backfire


Ignore:
Timestamp:
2010-08-08T22:15:48+02:00 (6 years ago)
Author:
nbd
Message:

merge rtl8366 switch fix from r22545

Location:
branches/backfire/target/linux/generic-2.6/files/drivers/net/phy
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c

    r22049 r22546  
    285285        REG_WR(smi, RTL8366RB_PECR, 0); 
    286286 
    287         /* disable learning for all ports */ 
    288         REG_WR(smi, RTL8366RB_SSCR0, RTL8366RB_PORT_ALL); 
    289  
    290         /* disable auto ageing for all ports */ 
    291         REG_WR(smi, RTL8366RB_SSCR1, RTL8366RB_PORT_ALL); 
     287        /* enable learning for all ports */ 
     288        REG_WR(smi, RTL8366RB_SSCR0, 0); 
     289 
     290        /* enable auto ageing for all ports */ 
     291        REG_WR(smi, RTL8366RB_SSCR1, 0); 
    292292 
    293293        /* 
     
    752752                return rtl8366rb_vlan_set_4ktable(smi, val->value.i); 
    753753} 
     754 
     755static int rtl8366rb_sw_get_learning_enable(struct switch_dev *dev, 
     756                                       const struct switch_attr *attr, 
     757                                       struct switch_val *val) 
     758{ 
     759        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
     760        u32 data; 
     761 
     762        rtl8366_smi_read_reg(smi, RTL8366RB_SSCR0, &data); 
     763        val->value.i = !data; 
     764 
     765        return 0; 
     766} 
     767 
     768 
     769static int rtl8366rb_sw_set_learning_enable(struct switch_dev *dev, 
     770                                       const struct switch_attr *attr, 
     771                                       struct switch_val *val) 
     772{ 
     773        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
     774        u32 portmask = 0; 
     775        int err = 0; 
     776 
     777        if (!val->value.i) 
     778                portmask = RTL8366RB_PORT_ALL; 
     779 
     780        /* set learning for all ports */ 
     781        REG_WR(smi, RTL8366RB_SSCR0, portmask); 
     782 
     783        /* set auto ageing for all ports */ 
     784        REG_WR(smi, RTL8366RB_SSCR1, portmask); 
     785 
     786        return 0; 
     787} 
     788 
    754789 
    755790static const char *rtl8366rb_speed_str(unsigned speed) 
     
    10171052static struct switch_attr rtl8366rb_globals[] = { 
    10181053        { 
     1054                .type = SWITCH_TYPE_INT, 
     1055                .name = "enable_learning", 
     1056                .description = "Enable learning, enable aging", 
     1057                .set = rtl8366rb_sw_set_learning_enable, 
     1058                .get = rtl8366rb_sw_get_learning_enable, 
     1059                .max = 1 
     1060        }, { 
    10191061                .type = SWITCH_TYPE_INT, 
    10201062                .name = "enable_vlan", 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c

    r22049 r22546  
    295295        REG_WR(smi, RTL8366S_PECR, 0); 
    296296 
    297         /* disable learning for all ports */ 
    298         REG_WR(smi, RTL8366S_SSCR0, RTL8366S_PORT_ALL); 
    299  
    300         /* disable auto ageing for all ports */ 
    301         REG_WR(smi, RTL8366S_SSCR1, RTL8366S_PORT_ALL); 
     297        /* enable learning for all ports */ 
     298        REG_WR(smi, RTL8366S_SSCR0, 0); 
     299 
     300        /* enable auto ageing for all ports */ 
     301        REG_WR(smi, RTL8366S_SSCR1, 0); 
    302302 
    303303        /* 
     
    738738                return rtl8366s_vlan_set_4ktable(smi, val->value.i); 
    739739} 
     740 
     741static int rtl8366s_sw_get_learning_enable(struct switch_dev *dev, 
     742                                           const struct switch_attr *attr, 
     743                                           struct switch_val *val) 
     744{ 
     745        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
     746        u32 data; 
     747 
     748        rtl8366_smi_read_reg(smi,RTL8366S_SSCR0, &data); 
     749        val->value.i = !data; 
     750 
     751        return 0; 
     752} 
     753 
     754 
     755static int rtl8366s_sw_set_learning_enable(struct switch_dev *dev, 
     756                                           const struct switch_attr *attr, 
     757                                           struct switch_val *val) 
     758{ 
     759        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
     760        u32 portmask = 0; 
     761        int err = 0; 
     762 
     763        if (!val->value.i) 
     764                portmask = RTL8366S_PORT_ALL; 
     765 
     766        /* set learning for all ports */ 
     767        REG_WR(smi, RTL8366S_SSCR0, portmask); 
     768 
     769        /* set auto ageing for all ports */ 
     770        REG_WR(smi, RTL8366S_SSCR1, portmask); 
     771 
     772        return 0; 
     773} 
     774 
    740775 
    741776static const char *rtl8366s_speed_str(unsigned speed) 
     
    10051040static struct switch_attr rtl8366s_globals[] = { 
    10061041        { 
     1042                .type = SWITCH_TYPE_INT, 
     1043                .name = "enable_learning", 
     1044                .description = "Enable learning, enable aging", 
     1045                .set = rtl8366s_sw_set_learning_enable, 
     1046                .get = rtl8366s_sw_get_learning_enable, 
     1047                .max = 1, 
     1048        }, { 
    10071049                .type = SWITCH_TYPE_INT, 
    10081050                .name = "enable_vlan", 
Note: See TracChangeset for help on using the changeset viewer.