Changeset 24990


Ignore:
Timestamp:
2011-01-14T19:19:13+01:00 (6 years ago)
Author:
juhosg
Message:

backfire: generic: add rtl8366rb switch vlan fid support (backport of r24125)

Allows to use fids 0 to 7. Default is 0.
Those who will use this don't forget to set vlan fid every time
after set vlan ports if you want non default behavior.
Minor changes. Version bump.

Signed-off-by: Roman Yeryomin <roman@…>

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

Legend:

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

    r22994 r24990  
    973973EXPORT_SYMBOL_GPL(rtl8366_sw_set_vlan_ports); 
    974974 
     975int rtl8366_sw_get_vlan_fid(struct switch_dev *dev, 
     976                            const struct switch_attr *attr, 
     977                            struct switch_val *val) 
     978{ 
     979        struct rtl8366_vlan_4k vlan4k; 
     980        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
     981        int err; 
     982 
     983        if (!smi->ops->is_vlan_valid(smi, val->port_vlan)) 
     984                return -EINVAL; 
     985 
     986        err = smi->ops->get_vlan_4k(smi, val->port_vlan, &vlan4k); 
     987        if (err) 
     988                return err; 
     989 
     990        val->value.i = vlan4k.fid; 
     991 
     992        return 0; 
     993} 
     994EXPORT_SYMBOL_GPL(rtl8366_sw_get_vlan_fid); 
     995 
     996int rtl8366_sw_set_vlan_fid(struct switch_dev *dev, 
     997                            const struct switch_attr *attr, 
     998                            struct switch_val *val) 
     999{ 
     1000        struct rtl8366_vlan_4k vlan4k; 
     1001        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
     1002        int err; 
     1003 
     1004        if (!smi->ops->is_vlan_valid(smi, val->port_vlan)) 
     1005                return -EINVAL; 
     1006 
     1007        if (val->value.i < 0 || val->value.i > attr->max) 
     1008                return -EINVAL; 
     1009 
     1010        err = smi->ops->get_vlan_4k(smi, val->port_vlan, &vlan4k); 
     1011        if (err) 
     1012                return err; 
     1013 
     1014        return rtl8366_set_vlan(smi, val->port_vlan, 
     1015                                vlan4k.member, 
     1016                                vlan4k.untag, 
     1017                                val->value.i); 
     1018} 
     1019EXPORT_SYMBOL_GPL(rtl8366_sw_set_vlan_fid); 
     1020 
    9751021int rtl8366_sw_get_vlan_enable(struct switch_dev *dev, 
    9761022                               const struct switch_attr *attr, 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h

    r22994 r24990  
    121121                             const struct switch_attr *attr, 
    122122                             struct switch_val *val); 
     123int rtl8366_sw_get_vlan_fid(struct switch_dev *dev, 
     124                             const struct switch_attr *attr, 
     125                             struct switch_val *val); 
     126int rtl8366_sw_set_vlan_fid(struct switch_dev *dev, 
     127                             const struct switch_attr *attr, 
     128                             struct switch_val *val); 
    123129int rtl8366_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val); 
    124130int rtl8366_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val); 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c

    r24989 r24990  
    11/* 
    2  * Platform driver for the Realtek RTL8366S ethernet switch 
     2 * Platform driver for the Realtek RTL8366RB ethernet switch 
    33 * 
    44 * Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org> 
     
    2222 
    2323#define RTL8366RB_DRIVER_DESC   "Realtek RTL8366RB ethernet switch driver" 
    24 #define RTL8366RB_DRIVER_VER    "0.2.2" 
     24#define RTL8366RB_DRIVER_VER    "0.2.3" 
    2525 
    2626#define RTL8366RB_PHY_NO_MAX    4 
     
    183183 
    184184#define RTL8366RB_BDTH_SW_MAX           1048512 
    185 #define RTL8366RB_BDTH_BASE             64 
     185#define RTL8366RB_BDTH_UNIT             64 
    186186#define RTL8366RB_BDTH_REG_DEFAULT      16383 
    187187 
     
    826826 
    827827        if (val->value.i > 0 && val->value.i < RTL8366RB_BDTH_SW_MAX) 
    828                 val->value.i = (val->value.i - 1) / RTL8366RB_BDTH_BASE; 
     828                val->value.i = (val->value.i - 1) / RTL8366RB_BDTH_UNIT; 
    829829        else 
    830830                val->value.i = RTL8366RB_BDTH_REG_DEFAULT; 
     
    852852                data += 1; 
    853853 
    854         val->value.i = (int)data * RTL8366RB_BDTH_BASE; 
     854        val->value.i = (int)data * RTL8366RB_BDTH_UNIT; 
    855855 
    856856        return 0; 
     
    871871 
    872872        if (val->value.i > 0 && val->value.i < RTL8366RB_BDTH_SW_MAX) 
    873                 val->value.i = (val->value.i - 1) / RTL8366RB_BDTH_BASE; 
     873                val->value.i = (val->value.i - 1) / RTL8366RB_BDTH_UNIT; 
    874874        else 
    875875                val->value.i = RTL8366RB_BDTH_REG_DEFAULT; 
     
    895895                data += 1; 
    896896 
    897         val->value.i = (int)data * RTL8366RB_BDTH_BASE; 
     897        val->value.i = (int)data * RTL8366RB_BDTH_UNIT; 
    898898 
    899899        return 0; 
     
    10661066                .set = NULL, 
    10671067                .get = rtl8366_sw_get_vlan_info, 
     1068        }, { 
     1069                .type = SWITCH_TYPE_INT, 
     1070                .name = "fid", 
     1071                .description = "Get/Set vlan FID", 
     1072                .max = RTL8366RB_FIDMAX, 
     1073                .set = rtl8366_sw_set_vlan_fid, 
     1074                .get = rtl8366_sw_get_vlan_fid, 
    10681075        }, 
    10691076}; 
Note: See TracChangeset for help on using the changeset viewer.