diff options
author | Vivien Didelot <vivien.didelot@savoirfairelinux.com> | 2016-02-23 18:13:56 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-02-25 21:20:21 +0100 |
commit | 477b184526a7f44164029eea720da0e0c888cac6 (patch) | |
tree | 5504d8512f44c09beea3bb6809ec17e20ddce60f /net/dsa/slave.c | |
parent | net: dsa: mv88e6xxx: implement port_vlan_dump (diff) | |
download | linux-477b184526a7f44164029eea720da0e0c888cac6.tar.xz linux-477b184526a7f44164029eea720da0e0c888cac6.zip |
net: dsa: drop vlan_getnext
The VLAN GetNext operation is specific to some switches, and thus can be
complicated to implement for some drivers.
Remove the support for the vlan_getnext/port_pvid_get approach in favor
of the generic and simpler port_vlan_dump function.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa/slave.c')
-rw-r--r-- | net/dsa/slave.c | 35 |
1 files changed, 1 insertions, 34 deletions
diff --git a/net/dsa/slave.c b/net/dsa/slave.c index a9cbb72fb155..cde29239b60d 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -243,44 +243,11 @@ static int dsa_slave_port_vlan_dump(struct net_device *dev, { struct dsa_slave_priv *p = netdev_priv(dev); struct dsa_switch *ds = p->parent; - DECLARE_BITMAP(members, DSA_MAX_PORTS); - DECLARE_BITMAP(untagged, DSA_MAX_PORTS); - u16 pvid, vid = 0; - int err; if (ds->drv->port_vlan_dump) return ds->drv->port_vlan_dump(ds, p->port, vlan, cb); - if (!ds->drv->vlan_getnext || !ds->drv->port_pvid_get) - return -EOPNOTSUPP; - - err = ds->drv->port_pvid_get(ds, p->port, &pvid); - if (err) - return err; - - for (;;) { - err = ds->drv->vlan_getnext(ds, &vid, members, untagged); - if (err) - break; - - if (!test_bit(p->port, members)) - continue; - - memset(vlan, 0, sizeof(*vlan)); - vlan->vid_begin = vlan->vid_end = vid; - - if (vid == pvid) - vlan->flags |= BRIDGE_VLAN_INFO_PVID; - - if (test_bit(p->port, untagged)) - vlan->flags |= BRIDGE_VLAN_INFO_UNTAGGED; - - err = cb(&vlan->obj); - if (err) - break; - } - - return err == -ENOENT ? 0 : err; + return -EOPNOTSUPP; } static int dsa_slave_port_fdb_add(struct net_device *dev, |