net: dsa: add port_vlan_dump routine
Similar to port_fdb_dump, add a port_vlan_dump function to DSA drivers which gets passed the switchdev VLAN object and callback. This function, if implemented, takes precedence over the soon legacy vlan_getnext/port_pvid_get approach. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2a04c7bade
commit
65aebfc002
|
@ -554,6 +554,10 @@ Bridge VLAN filtering
|
|||
- port_vlan_del: bridge layer function invoked when a VLAN is removed from the
|
||||
given switch port
|
||||
|
||||
- port_vlan_dump: bridge layer function invoked with a switchdev callback
|
||||
function that the driver has to call for each VLAN the given port is a member
|
||||
of. A switchdev object is used to carry the VID and bridge flags.
|
||||
|
||||
- vlan_getnext: bridge layer function invoked to query the next configured VLAN
|
||||
in the switch, i.e. returns the bitmaps of members and untagged ports
|
||||
|
||||
|
|
|
@ -313,6 +313,9 @@ struct dsa_switch_driver {
|
|||
struct switchdev_trans *trans);
|
||||
int (*port_vlan_del)(struct dsa_switch *ds, int port,
|
||||
const struct switchdev_obj_port_vlan *vlan);
|
||||
int (*port_vlan_dump)(struct dsa_switch *ds, int port,
|
||||
struct switchdev_obj_port_vlan *vlan,
|
||||
int (*cb)(struct switchdev_obj *obj));
|
||||
int (*port_pvid_get)(struct dsa_switch *ds, int port, u16 *pvid);
|
||||
int (*vlan_getnext)(struct dsa_switch *ds, u16 *vid,
|
||||
unsigned long *ports, unsigned long *untagged);
|
||||
|
|
|
@ -248,6 +248,9 @@ static int dsa_slave_port_vlan_dump(struct net_device *dev,
|
|||
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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user