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

Reply via email to