Hello!
Is there anything wrong with this?

Regards,
Roman

On 27 October 2010 04:57, Roman Yeryomin <[email protected]> wrote:
> ok, here goes the second part:
>
> rtl8366 generic vlan fid support
> 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 <[email protected]>
> --
>
> Index: target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
> ===================================================================
> --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c  (revision 
> 23625)
> +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c  (working copy)
> @@ -972,6 +972,52 @@
>  }
>  EXPORT_SYMBOL_GPL(rtl8366_sw_set_vlan_ports);
>
> +int rtl8366_sw_get_vlan_fid(struct switch_dev *dev,
> +                           const struct switch_attr *attr,
> +                           struct switch_val *val)
> +{
> +       struct rtl8366_vlan_4k vlan4k;
> +       struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
> +       int err;
> +
> +       if (!smi->ops->is_vlan_valid(smi, val->port_vlan))
> +               return -EINVAL;
> +
> +       err = smi->ops->get_vlan_4k(smi, val->port_vlan, &vlan4k);
> +       if (err)
> +               return err;
> +
> +       val->value.i = vlan4k.fid;
> +
> +       return 0;
> +}
> +EXPORT_SYMBOL_GPL(rtl8366_sw_get_vlan_fid);
> +
> +int rtl8366_sw_set_vlan_fid(struct switch_dev *dev,
> +                           const struct switch_attr *attr,
> +                           struct switch_val *val)
> +{
> +       struct rtl8366_vlan_4k vlan4k;
> +       struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
> +       int err;
> +
> +       if (!smi->ops->is_vlan_valid(smi, val->port_vlan))
> +               return -EINVAL;
> +
> +       if (val->value.i < 0 || val->value.i > attr->max)
> +               return -EINVAL;
> +
> +       err = smi->ops->get_vlan_4k(smi, val->port_vlan, &vlan4k);
> +       if (err)
> +               return err;
> +
> +       return rtl8366_set_vlan(smi, val->port_vlan,
> +                               vlan4k.member,
> +                               vlan4k.untag,
> +                               val->value.i);
> +}
> +EXPORT_SYMBOL_GPL(rtl8366_sw_set_vlan_fid);
> +
>  int rtl8366_sw_get_vlan_enable(struct switch_dev *dev,
>                               const struct switch_attr *attr,
>                               struct switch_val *val)
> Index: target/linux/generic/files/drivers/net/phy/rtl8366_smi.h
> ===================================================================
> --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h  (revision 
> 23625)
> +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h  (working copy)
> @@ -120,6 +120,12 @@
>  int rtl8366_sw_get_vlan_info(struct switch_dev *dev,
>                             const struct switch_attr *attr,
>                             struct switch_val *val);
> +int rtl8366_sw_get_vlan_fid(struct switch_dev *dev,
> +                            const struct switch_attr *attr,
> +                            struct switch_val *val);
> +int rtl8366_sw_set_vlan_fid(struct switch_dev *dev,
> +                            const struct switch_attr *attr,
> +                            struct switch_val *val);
>  int rtl8366_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val 
> *val);
>  int rtl8366_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val 
> *val);
>  int rtl8366_sw_get_vlan_enable(struct switch_dev *dev,
> Index: target/linux/generic/files/drivers/net/phy/rtl8366rb.c
> ===================================================================
> --- a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c    (revision 
> 23625)
> +++ b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c    (working copy)
> @@ -1,5 +1,5 @@
>  /*
> - * Platform driver for the Realtek RTL8366S ethernet switch
> + * Platform driver for the Realtek RTL8366RB ethernet switch
>  *
>  * Copyright (C) 2009-2010 Gabor Juhos <[email protected]>
>  * Copyright (C) 2010 Antti Seppälä <[email protected]>
> @@ -21,7 +21,7 @@
>  #include "rtl8366_smi.h"
>
>  #define RTL8366RB_DRIVER_DESC  "Realtek RTL8366RB ethernet switch driver"
> -#define RTL8366RB_DRIVER_VER   "0.2.2"
> +#define RTL8366RB_DRIVER_VER   "0.2.3"
>
>  #define RTL8366RB_PHY_NO_MAX   4
>  #define RTL8366RB_PHY_PAGE_MAX 7
> @@ -182,7 +182,7 @@
>  #define RTL8366RB_EB_PREIFG_MASK       (1 << RTL8366RB_EB_PREIFG_OFFSET)
>
>  #define RTL8366RB_BDTH_SW_MAX          1048512
> -#define RTL8366RB_BDTH_BASE            64
> +#define RTL8366RB_BDTH_UNIT            64
>  #define RTL8366RB_BDTH_REG_DEFAULT     16383
>
>  /* QOS */
> @@ -825,7 +825,7 @@
>                return -EINVAL;
>
>        if (val->value.i > 0 && val->value.i < RTL8366RB_BDTH_SW_MAX)
> -               val->value.i = (val->value.i - 1) / RTL8366RB_BDTH_BASE;
> +               val->value.i = (val->value.i - 1) / RTL8366RB_BDTH_UNIT;
>        else
>                val->value.i = RTL8366RB_BDTH_REG_DEFAULT;
>
> @@ -851,7 +851,7 @@
>        if (data < RTL8366RB_IB_BDTH_MASK)
>                data += 1;
>
> -       val->value.i = (int)data * RTL8366RB_BDTH_BASE;
> +       val->value.i = (int)data * RTL8366RB_BDTH_UNIT;
>
>        return 0;
>  }
> @@ -870,7 +870,7 @@
>                (RTL8366RB_QOS_DEFAULT_PREIFG << RTL8366RB_EB_PREIFG_OFFSET));
>
>        if (val->value.i > 0 && val->value.i < RTL8366RB_BDTH_SW_MAX)
> -               val->value.i = (val->value.i - 1) / RTL8366RB_BDTH_BASE;
> +               val->value.i = (val->value.i - 1) / RTL8366RB_BDTH_UNIT;
>        else
>                val->value.i = RTL8366RB_BDTH_REG_DEFAULT;
>
> @@ -894,7 +894,7 @@
>        if (data < RTL8366RB_EB_BDTH_MASK)
>                data += 1;
>
> -       val->value.i = (int)data * RTL8366RB_BDTH_BASE;
> +       val->value.i = (int)data * RTL8366RB_BDTH_UNIT;
>
>        return 0;
>  }
> @@ -1065,6 +1065,13 @@
>                .max = 1,
>                .set = NULL,
>                .get = rtl8366_sw_get_vlan_info,
> +       }, {
> +               .type = SWITCH_TYPE_INT,
> +               .name = "fid",
> +               .description = "Get/Set vlan FID",
> +               .max = RTL8366RB_FIDMAX,
> +               .set = rtl8366_sw_set_vlan_fid,
> +               .get = rtl8366_sw_get_vlan_fid,
>        },
>  };
>
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to