|
|
@@ -1436,6 +1436,40 @@ ar8xxx_sw_get_arl_table(struct switch_dev *dev,
|
|
|
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 @@ static const struct switch_attr ar8xxx_sw_attr_globals[] = {
|
|
|
.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 @@ const struct switch_attr ar8xxx_sw_attr_port[2] = {
|
|
|
.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] = {
|