net: Remove SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT
Now that we have converted the bridge code and the drivers to check for bridge port(s) flags at the time we try to set them, there is no need for a get() -> set() sequence anymore and SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT therefore becomes unused. Reviewed-by: Ido Schimmel <idosch@mellanox.com> 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:
Родитель
1ef0764486
Коммит
cc0c207a5d
|
@ -232,10 +232,8 @@ Learning_sync attribute enables syncing of the learned/forgotten FDB entry to
|
||||||
the bridge's FDB. It's possible, but not optimal, to enable learning on the
|
the bridge's FDB. It's possible, but not optimal, to enable learning on the
|
||||||
device port and on the bridge port, and disable learning_sync.
|
device port and on the bridge port, and disable learning_sync.
|
||||||
|
|
||||||
To support learning and learning_sync port attributes, the driver implements
|
To support learning, the driver implements switchdev op
|
||||||
switchdev op switchdev_port_attr_get/set for
|
switchdev_port_attr_get/set for SWITCHDEV_ATTR_PORT_ID_BRIDGE_FLAGS.
|
||||||
SWITCHDEV_ATTR_PORT_ID_BRIDGE_FLAGS. The driver should initialize the attributes
|
|
||||||
to the hardware defaults.
|
|
||||||
|
|
||||||
FDB Ageing
|
FDB Ageing
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
|
|
|
@ -434,16 +434,7 @@ static void mlxsw_sp_bridge_vlan_put(struct mlxsw_sp_bridge_vlan *bridge_vlan)
|
||||||
static int mlxsw_sp_port_attr_get(struct net_device *dev,
|
static int mlxsw_sp_port_attr_get(struct net_device *dev,
|
||||||
struct switchdev_attr *attr)
|
struct switchdev_attr *attr)
|
||||||
{
|
{
|
||||||
switch (attr->id) {
|
return -EOPNOTSUPP;
|
||||||
case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT:
|
|
||||||
attr->u.brport_flags_support = BR_LEARNING | BR_FLOOD |
|
|
||||||
BR_MCAST_FLOOD;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -2069,19 +2069,7 @@ static const struct net_device_ops rocker_port_netdev_ops = {
|
||||||
static int rocker_port_attr_get(struct net_device *dev,
|
static int rocker_port_attr_get(struct net_device *dev,
|
||||||
struct switchdev_attr *attr)
|
struct switchdev_attr *attr)
|
||||||
{
|
{
|
||||||
const struct rocker_port *rocker_port = netdev_priv(dev);
|
return -EOPNOTSUPP;
|
||||||
int err = 0;
|
|
||||||
|
|
||||||
switch (attr->id) {
|
|
||||||
case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT:
|
|
||||||
err = rocker_world_port_attr_bridge_flags_support_get(rocker_port,
|
|
||||||
&attr->u.brport_flags_support);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
}
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rocker_port_attr_set(struct net_device *dev,
|
static int rocker_port_attr_set(struct net_device *dev,
|
||||||
|
|
|
@ -643,15 +643,7 @@ static void ethsw_teardown_irqs(struct fsl_mc_device *sw_dev)
|
||||||
static int swdev_port_attr_get(struct net_device *netdev,
|
static int swdev_port_attr_get(struct net_device *netdev,
|
||||||
struct switchdev_attr *attr)
|
struct switchdev_attr *attr)
|
||||||
{
|
{
|
||||||
switch (attr->id) {
|
return -EOPNOTSUPP;
|
||||||
case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT:
|
|
||||||
attr->u.brport_flags_support = BR_LEARNING | BR_FLOOD;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int port_attr_stp_state_set(struct net_device *netdev,
|
static int port_attr_stp_state_set(struct net_device *netdev,
|
||||||
|
|
|
@ -45,7 +45,6 @@ enum switchdev_attr_id {
|
||||||
SWITCHDEV_ATTR_ID_UNDEFINED,
|
SWITCHDEV_ATTR_ID_UNDEFINED,
|
||||||
SWITCHDEV_ATTR_ID_PORT_STP_STATE,
|
SWITCHDEV_ATTR_ID_PORT_STP_STATE,
|
||||||
SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS,
|
SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS,
|
||||||
SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT,
|
|
||||||
SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS,
|
SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS,
|
||||||
SWITCHDEV_ATTR_ID_PORT_MROUTER,
|
SWITCHDEV_ATTR_ID_PORT_MROUTER,
|
||||||
SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME,
|
SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME,
|
||||||
|
@ -63,7 +62,6 @@ struct switchdev_attr {
|
||||||
union {
|
union {
|
||||||
u8 stp_state; /* PORT_STP_STATE */
|
u8 stp_state; /* PORT_STP_STATE */
|
||||||
unsigned long brport_flags; /* PORT_{PRE}_BRIDGE_FLAGS */
|
unsigned long brport_flags; /* PORT_{PRE}_BRIDGE_FLAGS */
|
||||||
unsigned long brport_flags_support; /* PORT_BRIDGE_FLAGS_SUPPORT */
|
|
||||||
bool mrouter; /* PORT_MROUTER */
|
bool mrouter; /* PORT_MROUTER */
|
||||||
clock_t ageing_time; /* BRIDGE_AGEING_TIME */
|
clock_t ageing_time; /* BRIDGE_AGEING_TIME */
|
||||||
bool vlan_filtering; /* BRIDGE_VLAN_FILTERING */
|
bool vlan_filtering; /* BRIDGE_VLAN_FILTERING */
|
||||||
|
|
|
@ -388,21 +388,7 @@ static int dsa_slave_get_port_parent_id(struct net_device *dev,
|
||||||
static int dsa_slave_port_attr_get(struct net_device *dev,
|
static int dsa_slave_port_attr_get(struct net_device *dev,
|
||||||
struct switchdev_attr *attr)
|
struct switchdev_attr *attr)
|
||||||
{
|
{
|
||||||
struct dsa_port *dp = dsa_slave_to_port(dev);
|
return -EOPNOTSUPP;
|
||||||
struct dsa_switch *ds = dp->ds;
|
|
||||||
|
|
||||||
switch (attr->id) {
|
|
||||||
case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT:
|
|
||||||
attr->u.brport_flags_support = 0;
|
|
||||||
if (ds->ops->port_egress_floods)
|
|
||||||
attr->u.brport_flags_support |= BR_FLOOD |
|
|
||||||
BR_MCAST_FLOOD;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline netdev_tx_t dsa_slave_netpoll_send_skb(struct net_device *dev,
|
static inline netdev_tx_t dsa_slave_netpoll_send_skb(struct net_device *dev,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче