OSDN Git Service

net: dsa: add port fdb dump
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Wed, 20 Sep 2017 23:32:14 +0000 (19:32 -0400)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Sep 2017 22:24:01 +0000 (15:24 -0700)
Dumping a DSA port's FDB entries is not specific to a DSA slave, so add
a dsa_port_fdb_dump function, similarly to dsa_port_fdb_add and
dsa_port_fdb_del.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dsa/dsa_priv.h
net/dsa/port.c
net/dsa/slave.c

index f616b34..9803952 100644 (file)
@@ -128,6 +128,7 @@ int dsa_port_fdb_add(struct dsa_port *dp, const unsigned char *addr,
                     u16 vid);
 int dsa_port_fdb_del(struct dsa_port *dp, const unsigned char *addr,
                     u16 vid);
+int dsa_port_fdb_dump(struct dsa_port *dp, dsa_fdb_dump_cb_t *cb, void *data);
 int dsa_port_mdb_add(struct dsa_port *dp,
                     const struct switchdev_obj_port_mdb *mdb,
                     struct switchdev_trans *trans);
index 659676b..76d43a8 100644 (file)
@@ -173,6 +173,17 @@ int dsa_port_fdb_del(struct dsa_port *dp, const unsigned char *addr,
        return dsa_port_notify(dp, DSA_NOTIFIER_FDB_DEL, &info);
 }
 
+int dsa_port_fdb_dump(struct dsa_port *dp, dsa_fdb_dump_cb_t *cb, void *data)
+{
+       struct dsa_switch *ds = dp->ds;
+       int port = dp->index;
+
+       if (!ds->ops->port_fdb_dump)
+               return -EOPNOTSUPP;
+
+       return ds->ops->port_fdb_dump(ds, port, cb, data);
+}
+
 int dsa_port_mdb_add(struct dsa_port *dp,
                     const struct switchdev_obj_port_mdb *mdb,
                     struct switchdev_trans *trans)
index 4a98942..02ace7d 100644 (file)
@@ -263,16 +263,11 @@ dsa_slave_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb,
        };
        struct dsa_slave_priv *p = netdev_priv(dev);
        struct dsa_port *dp = p->dp;
-       struct dsa_switch *ds = dp->ds;
        int err;
 
-       if (!ds->ops->port_fdb_dump)
-               return -EOPNOTSUPP;
-
-       err = ds->ops->port_fdb_dump(ds, dp->index,
-                                    dsa_slave_port_fdb_do_dump,
-                                    &dump);
+       err = dsa_port_fdb_dump(dp, dsa_slave_port_fdb_do_dump, &dump);
        *idx = dump.idx;
+
        return err;
 }