Commit 33162e9a authored by Vladimir Oltean's avatar Vladimir Oltean Committed by David S. Miller

net: dsa: Store vlan_filtering as a property of dsa_port

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: default avatarVladimir Oltean <olteanv@gmail.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 85478d73
...@@ -161,6 +161,7 @@ struct dsa_port { ...@@ -161,6 +161,7 @@ struct dsa_port {
const char *mac; const char *mac;
struct device_node *dn; struct device_node *dn;
unsigned int ageing_time; unsigned int ageing_time;
bool vlan_filtering;
u8 stp_state; u8 stp_state;
struct net_device *bridge_dev; struct net_device *bridge_dev;
struct devlink_port devlink_port; struct devlink_port devlink_port;
......
...@@ -158,15 +158,19 @@ int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering, ...@@ -158,15 +158,19 @@ int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering,
struct switchdev_trans *trans) struct switchdev_trans *trans)
{ {
struct dsa_switch *ds = dp->ds; struct dsa_switch *ds = dp->ds;
int err;
/* bridge skips -EOPNOTSUPP, so skip the prepare phase */ /* bridge skips -EOPNOTSUPP, so skip the prepare phase */
if (switchdev_trans_ph_prepare(trans)) if (switchdev_trans_ph_prepare(trans))
return 0; return 0;
if (ds->ops->port_vlan_filtering) if (ds->ops->port_vlan_filtering) {
return ds->ops->port_vlan_filtering(ds, dp->index, err = ds->ops->port_vlan_filtering(ds, dp->index,
vlan_filtering); vlan_filtering);
if (err)
return err;
dp->vlan_filtering = vlan_filtering;
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment