net: dsa: Add setter for SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS
In preparation for removing SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT, add support for a function that processes the SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS and SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS attributes and returns not supported for any flag set, since DSA does not currently support toggling those bridge port attributes (yet). Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e1230246d0
commit
ea87005a00
|
@ -160,6 +160,8 @@ int dsa_port_mdb_add(const struct dsa_port *dp,
|
||||||
struct switchdev_trans *trans);
|
struct switchdev_trans *trans);
|
||||||
int dsa_port_mdb_del(const struct dsa_port *dp,
|
int dsa_port_mdb_del(const struct dsa_port *dp,
|
||||||
const struct switchdev_obj_port_mdb *mdb);
|
const struct switchdev_obj_port_mdb *mdb);
|
||||||
|
int dsa_port_pre_bridge_flags(const struct dsa_port *dp, unsigned long flags,
|
||||||
|
struct switchdev_trans *trans);
|
||||||
int dsa_port_bridge_flags(const struct dsa_port *dp, unsigned long flags,
|
int dsa_port_bridge_flags(const struct dsa_port *dp, unsigned long flags,
|
||||||
struct switchdev_trans *trans);
|
struct switchdev_trans *trans);
|
||||||
int dsa_port_vlan_add(struct dsa_port *dp,
|
int dsa_port_vlan_add(struct dsa_port *dp,
|
||||||
|
|
|
@ -187,6 +187,18 @@ int dsa_port_ageing_time(struct dsa_port *dp, clock_t ageing_clock,
|
||||||
return dsa_port_notify(dp, DSA_NOTIFIER_AGEING_TIME, &info);
|
return dsa_port_notify(dp, DSA_NOTIFIER_AGEING_TIME, &info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int dsa_port_pre_bridge_flags(const struct dsa_port *dp, unsigned long flags,
|
||||||
|
struct switchdev_trans *trans)
|
||||||
|
{
|
||||||
|
struct dsa_switch *ds = dp->ds;
|
||||||
|
|
||||||
|
if (!ds->ops->port_egress_floods ||
|
||||||
|
(flags & ~(BR_FLOOD | BR_MCAST_FLOOD)))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int dsa_port_bridge_flags(const struct dsa_port *dp, unsigned long flags,
|
int dsa_port_bridge_flags(const struct dsa_port *dp, unsigned long flags,
|
||||||
struct switchdev_trans *trans)
|
struct switchdev_trans *trans)
|
||||||
{
|
{
|
||||||
|
|
|
@ -295,6 +295,10 @@ static int dsa_slave_port_attr_set(struct net_device *dev,
|
||||||
case SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME:
|
case SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME:
|
||||||
ret = dsa_port_ageing_time(dp, attr->u.ageing_time, trans);
|
ret = dsa_port_ageing_time(dp, attr->u.ageing_time, trans);
|
||||||
break;
|
break;
|
||||||
|
case SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS:
|
||||||
|
ret = dsa_port_pre_bridge_flags(dp, attr->u.brport_flags,
|
||||||
|
trans);
|
||||||
|
break;
|
||||||
case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS:
|
case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS:
|
||||||
ret = dsa_port_bridge_flags(dp, attr->u.brport_flags, trans);
|
ret = dsa_port_bridge_flags(dp, attr->u.brport_flags, trans);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue