Skip to content

Commit

Permalink
net: dsa: Store vlan_filtering as a property of dsa_port
Browse files Browse the repository at this point in the history
This allows drivers to query the VLAN setting imposed by the bridge
driver directly from DSA, instead of keeping their own state based on
the .port_vlan_filtering callback.

Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Vladimir Oltean authored and David S. Miller committed May 1, 2019
1 parent 85478d7 commit 33162e9
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
1 change: 1 addition & 0 deletions include/net/dsa.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ struct dsa_port {
const char *mac;
struct device_node *dn;
unsigned int ageing_time;
bool vlan_filtering;
u8 stp_state;
struct net_device *bridge_dev;
struct devlink_port devlink_port;
Expand Down
12 changes: 8 additions & 4 deletions net/dsa/port.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,15 +158,19 @@ int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering,
struct switchdev_trans *trans)
{
struct dsa_switch *ds = dp->ds;
int err;

/* bridge skips -EOPNOTSUPP, so skip the prepare phase */
if (switchdev_trans_ph_prepare(trans))
return 0;

if (ds->ops->port_vlan_filtering)
return ds->ops->port_vlan_filtering(ds, dp->index,
vlan_filtering);

if (ds->ops->port_vlan_filtering) {
err = ds->ops->port_vlan_filtering(ds, dp->index,
vlan_filtering);
if (err)
return err;
dp->vlan_filtering = vlan_filtering;
}
return 0;
}

Expand Down

0 comments on commit 33162e9

Please sign in to comment.