[OpenWrt-Devel] [PATCH] ramips: mt7621: add support for disabling flow control
John Crispin
john at phrozen.org
Sat Apr 9 05:14:28 EDT 2016
should this not be part of ethtool ? swconfig is aimed at setting switch
configs and not the config of the attached phys. imho ethtool can
already do this with the existing code
John
On 05/04/2016 16:22, Cristian Morales Vega wrote:
> Signed-off-by: Cristian Morales Vega <cristian at samknows.com>
> ---
> ...diatek-add-swconfig-driver-for-gsw_mt762x.patch | 54 +++++++++++++++++++++-
> 1 file changed, 53 insertions(+), 1 deletion(-)
>
> diff --git a/target/linux/ramips/patches-4.4/0513-net-mediatek-add-swconfig-driver-for-gsw_mt762x.patch b/target/linux/ramips/patches-4.4/0513-net-mediatek-add-swconfig-driver-for-gsw_mt762x.patch
> index bbad8cc..d056551 100644
> --- a/target/linux/ramips/patches-4.4/0513-net-mediatek-add-swconfig-driver-for-gsw_mt762x.patch
> +++ b/target/linux/ramips/patches-4.4/0513-net-mediatek-add-swconfig-driver-for-gsw_mt762x.patch
> @@ -28,7 +28,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
> obj-$(CONFIG_NET_MEDIATEK_SOC) += mtk-eth-soc.o
> --- /dev/null
> +++ b/drivers/net/ethernet/mediatek/mt7530.c
> -@@ -0,0 +1,804 @@
> +@@ -0,0 +1,856 @@
> +/*
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> @@ -709,6 +709,50 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
> + return 0;
> +}
> +
> ++static int mt7621_sw_get_port_fc(struct switch_dev *dev,
> ++ const struct switch_attr *attr,
> ++ struct switch_val *val)
> ++{
> ++ u32 reg;
> ++ struct mt7530_priv *priv = container_of(dev, struct mt7530_priv, swdev);
> ++
> ++ if (val->port_vlan >= MT7530_NUM_PORTS)
> ++ return -EINVAL;
> ++
> ++ reg = mdiobus_read(priv->bus, val->port_vlan, 4);
> ++ reg &= BIT(10);
> ++
> ++ val->value.i = reg ? 1 : 0;
> ++
> ++ return 0;
> ++}
> ++
> ++static int mt7621_sw_set_port_fc(struct switch_dev *dev,
> ++ const struct switch_attr *attr,
> ++ struct switch_val *val)
> ++{
> ++ u32 reg;
> ++ struct mt7530_priv *priv = container_of(dev, struct mt7530_priv, swdev);
> ++
> ++ if (val->port_vlan >= MT7530_NUM_PORTS)
> ++ return -EINVAL;
> ++
> ++ reg = mdiobus_read(priv->bus, val->port_vlan, 4);
> ++ if(val->value.i) {
> ++ reg |= BIT(10);
> ++ } else {
> ++ reg &= ~BIT(10);
> ++ }
> ++ mdiobus_write(priv->bus, val->port_vlan, 4, reg);
> ++
> ++ /* Restart auto-negotiation */
> ++ reg = mdiobus_read(priv->bus, val->port_vlan, 0);
> ++ reg |= BIT(9);
> ++ mdiobus_write(priv->bus, val->port_vlan, 0, reg);
> ++
> ++ return 0;
> ++}
> ++
> +static const struct switch_attr mt7621_port[] = {
> + {
> + .type = SWITCH_TYPE_STRING,
> @@ -717,6 +761,14 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
> + .get = mt7621_sw_get_port_mib,
> + .set = NULL,
> + },
> ++ {
> ++ .type = SWITCH_TYPE_INT,
> ++ .name = "flow_ctl",
> ++ .description = "Flow Control",
> ++ .get = mt7621_sw_get_port_fc,
> ++ .set = mt7621_sw_set_port_fc,
> ++ .max = 1,
> ++ },
> +};
> +
> +static const struct switch_attr mt7530_port[] = {
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list