Author: nbd Date: 2015-07-15 10:17:42 +0200 (Wed, 15 Jul 2015) New Revision: 46382
Modified: trunk/target/linux/generic/files/drivers/net/phy/ar8216.c trunk/target/linux/generic/files/drivers/net/phy/ar8216.h trunk/target/linux/generic/files/drivers/net/phy/ar8327.c Log: ar8216: add swconfig attributes for ARL table flushing Add swconfig attributes for flushing the ARL table globally or per port. Signed-off-by: Heiner Kallweit <[email protected]> Modified: trunk/target/linux/generic/files/drivers/net/phy/ar8216.c =================================================================== --- trunk/target/linux/generic/files/drivers/net/phy/ar8216.c 2015-07-15 08:17:36 UTC (rev 46381) +++ trunk/target/linux/generic/files/drivers/net/phy/ar8216.c 2015-07-15 08:17:42 UTC (rev 46382) @@ -1436,6 +1436,40 @@ return 0; } +int +ar8xxx_sw_set_flush_arl_table(struct switch_dev *dev, + const struct switch_attr *attr, + struct switch_val *val) +{ + struct ar8xxx_priv *priv = swdev_to_ar8xxx(dev); + int ret; + + mutex_lock(&priv->reg_mutex); + ret = priv->chip->atu_flush(priv); + mutex_unlock(&priv->reg_mutex); + + return ret; +} + +int +ar8xxx_sw_set_flush_port_arl_table(struct switch_dev *dev, + const struct switch_attr *attr, + struct switch_val *val) +{ + struct ar8xxx_priv *priv = swdev_to_ar8xxx(dev); + int port, ret; + + port = val->port_vlan; + if (port >= dev->ports) + return -EINVAL; + + mutex_lock(&priv->reg_mutex); + ret = priv->chip->atu_flush_port(priv, port); + mutex_unlock(&priv->reg_mutex); + + return ret; +} + static const struct switch_attr ar8xxx_sw_attr_globals[] = { { .type = SWITCH_TYPE_INT, @@ -1490,9 +1524,15 @@ .set = NULL, .get = ar8xxx_sw_get_arl_table, }, + { + .type = SWITCH_TYPE_NOVAL, + .name = "flush_arl_table", + .description = "Flush ARL table", + .set = ar8xxx_sw_set_flush_arl_table, + }, }; -const struct switch_attr ar8xxx_sw_attr_port[2] = { +const struct switch_attr ar8xxx_sw_attr_port[] = { { .type = SWITCH_TYPE_NOVAL, .name = "reset_mib", @@ -1506,6 +1546,12 @@ .set = NULL, .get = ar8xxx_sw_get_port_mib, }, + { + .type = SWITCH_TYPE_NOVAL, + .name = "flush_arl_table", + .description = "Flush port's ARL table entries", + .set = ar8xxx_sw_set_flush_port_arl_table, + }, }; const struct switch_attr ar8xxx_sw_attr_vlan[1] = { Modified: trunk/target/linux/generic/files/drivers/net/phy/ar8216.h =================================================================== --- trunk/target/linux/generic/files/drivers/net/phy/ar8216.h 2015-07-15 08:17:36 UTC (rev 46381) +++ trunk/target/linux/generic/files/drivers/net/phy/ar8216.h 2015-07-15 08:17:42 UTC (rev 46382) @@ -543,6 +543,14 @@ const struct switch_attr *attr, struct switch_val *val); int +ar8xxx_sw_set_flush_arl_table(struct switch_dev *dev, + const struct switch_attr *attr, + struct switch_val *val); +int +ar8xxx_sw_set_flush_port_arl_table(struct switch_dev *dev, + const struct switch_attr *attr, + struct switch_val *val); +int ar8216_wait_bit(struct ar8xxx_priv *priv, int reg, u32 mask, u32 val); static inline struct ar8xxx_priv * Modified: trunk/target/linux/generic/files/drivers/net/phy/ar8327.c =================================================================== --- trunk/target/linux/generic/files/drivers/net/phy/ar8327.c 2015-07-15 08:17:36 UTC (rev 46381) +++ trunk/target/linux/generic/files/drivers/net/phy/ar8327.c 2015-07-15 08:17:42 UTC (rev 46382) @@ -1138,6 +1138,12 @@ .set = NULL, .get = ar8xxx_sw_get_arl_table, }, + { + .type = SWITCH_TYPE_NOVAL, + .name = "flush_arl_table", + .description = "Flush ARL table", + .set = ar8xxx_sw_set_flush_arl_table, + }, }; static const struct switch_attr ar8327_sw_attr_port[] = { @@ -1162,6 +1168,12 @@ .get = ar8327_sw_get_eee, .max = 1, }, + { + .type = SWITCH_TYPE_NOVAL, + .name = "flush_arl_table", + .description = "Flush port's ARL table entries", + .set = ar8xxx_sw_set_flush_port_arl_table, + }, }; static const struct switch_dev_ops ar8327_sw_ops = { _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
