net: dsa: remove cross-chip support for MRP
The cross-chip notifiers for MRP are bypass operations, meaning that even though all switches in a tree are notified, only the switch specified in the info structure is targeted. We can eliminate the unnecessary complexity by deleting the cross-chip notifier logic and calling the ds->ops straight from port.c. Cc: Horatiu Vultur <horatiu.vultur@microchip.com> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ff91e1b684
commit
cad69019f2
|
@ -40,10 +40,6 @@ enum {
|
|||
DSA_NOTIFIER_TAG_PROTO,
|
||||
DSA_NOTIFIER_TAG_PROTO_CONNECT,
|
||||
DSA_NOTIFIER_TAG_PROTO_DISCONNECT,
|
||||
DSA_NOTIFIER_MRP_ADD,
|
||||
DSA_NOTIFIER_MRP_DEL,
|
||||
DSA_NOTIFIER_MRP_ADD_RING_ROLE,
|
||||
DSA_NOTIFIER_MRP_DEL_RING_ROLE,
|
||||
DSA_NOTIFIER_TAG_8021Q_VLAN_ADD,
|
||||
DSA_NOTIFIER_TAG_8021Q_VLAN_DEL,
|
||||
};
|
||||
|
@ -107,20 +103,6 @@ struct dsa_notifier_tag_proto_info {
|
|||
const struct dsa_device_ops *tag_ops;
|
||||
};
|
||||
|
||||
/* DSA_NOTIFIER_MRP_* */
|
||||
struct dsa_notifier_mrp_info {
|
||||
const struct switchdev_obj_mrp *mrp;
|
||||
int sw_index;
|
||||
int port;
|
||||
};
|
||||
|
||||
/* DSA_NOTIFIER_MRP_* */
|
||||
struct dsa_notifier_mrp_ring_role_info {
|
||||
const struct switchdev_obj_ring_role_mrp *mrp;
|
||||
int sw_index;
|
||||
int port;
|
||||
};
|
||||
|
||||
/* DSA_NOTIFIER_TAG_8021Q_VLAN_* */
|
||||
struct dsa_notifier_tag_8021q_vlan_info {
|
||||
int tree_index;
|
||||
|
|
|
@ -907,49 +907,45 @@ int dsa_port_vlan_del(struct dsa_port *dp,
|
|||
int dsa_port_mrp_add(const struct dsa_port *dp,
|
||||
const struct switchdev_obj_mrp *mrp)
|
||||
{
|
||||
struct dsa_notifier_mrp_info info = {
|
||||
.sw_index = dp->ds->index,
|
||||
.port = dp->index,
|
||||
.mrp = mrp,
|
||||
};
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
|
||||
return dsa_port_notify(dp, DSA_NOTIFIER_MRP_ADD, &info);
|
||||
if (!ds->ops->port_mrp_add)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return ds->ops->port_mrp_add(ds, dp->index, mrp);
|
||||
}
|
||||
|
||||
int dsa_port_mrp_del(const struct dsa_port *dp,
|
||||
const struct switchdev_obj_mrp *mrp)
|
||||
{
|
||||
struct dsa_notifier_mrp_info info = {
|
||||
.sw_index = dp->ds->index,
|
||||
.port = dp->index,
|
||||
.mrp = mrp,
|
||||
};
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
|
||||
return dsa_port_notify(dp, DSA_NOTIFIER_MRP_DEL, &info);
|
||||
if (!ds->ops->port_mrp_del)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return ds->ops->port_mrp_del(ds, dp->index, mrp);
|
||||
}
|
||||
|
||||
int dsa_port_mrp_add_ring_role(const struct dsa_port *dp,
|
||||
const struct switchdev_obj_ring_role_mrp *mrp)
|
||||
{
|
||||
struct dsa_notifier_mrp_ring_role_info info = {
|
||||
.sw_index = dp->ds->index,
|
||||
.port = dp->index,
|
||||
.mrp = mrp,
|
||||
};
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
|
||||
return dsa_port_notify(dp, DSA_NOTIFIER_MRP_ADD_RING_ROLE, &info);
|
||||
if (!ds->ops->port_mrp_add_ring_role)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return ds->ops->port_mrp_add_ring_role(ds, dp->index, mrp);
|
||||
}
|
||||
|
||||
int dsa_port_mrp_del_ring_role(const struct dsa_port *dp,
|
||||
const struct switchdev_obj_ring_role_mrp *mrp)
|
||||
{
|
||||
struct dsa_notifier_mrp_ring_role_info info = {
|
||||
.sw_index = dp->ds->index,
|
||||
.port = dp->index,
|
||||
.mrp = mrp,
|
||||
};
|
||||
struct dsa_switch *ds = dp->ds;
|
||||
|
||||
return dsa_port_notify(dp, DSA_NOTIFIER_MRP_DEL_RING_ROLE, &info);
|
||||
if (!ds->ops->port_mrp_del_ring_role)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return ds->ops->port_mrp_del_ring_role(ds, dp->index, mrp);
|
||||
}
|
||||
|
||||
void dsa_port_set_tag_protocol(struct dsa_port *cpu_dp,
|
||||
|
|
|
@ -701,58 +701,6 @@ dsa_switch_disconnect_tag_proto(struct dsa_switch *ds,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int dsa_switch_mrp_add(struct dsa_switch *ds,
|
||||
struct dsa_notifier_mrp_info *info)
|
||||
{
|
||||
if (!ds->ops->port_mrp_add)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (ds->index == info->sw_index)
|
||||
return ds->ops->port_mrp_add(ds, info->port, info->mrp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dsa_switch_mrp_del(struct dsa_switch *ds,
|
||||
struct dsa_notifier_mrp_info *info)
|
||||
{
|
||||
if (!ds->ops->port_mrp_del)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (ds->index == info->sw_index)
|
||||
return ds->ops->port_mrp_del(ds, info->port, info->mrp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dsa_switch_mrp_add_ring_role(struct dsa_switch *ds,
|
||||
struct dsa_notifier_mrp_ring_role_info *info)
|
||||
{
|
||||
if (!ds->ops->port_mrp_add_ring_role)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (ds->index == info->sw_index)
|
||||
return ds->ops->port_mrp_add_ring_role(ds, info->port,
|
||||
info->mrp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dsa_switch_mrp_del_ring_role(struct dsa_switch *ds,
|
||||
struct dsa_notifier_mrp_ring_role_info *info)
|
||||
{
|
||||
if (!ds->ops->port_mrp_del_ring_role)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (ds->index == info->sw_index)
|
||||
return ds->ops->port_mrp_del_ring_role(ds, info->port,
|
||||
info->mrp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dsa_switch_event(struct notifier_block *nb,
|
||||
unsigned long event, void *info)
|
||||
{
|
||||
|
@ -826,18 +774,6 @@ static int dsa_switch_event(struct notifier_block *nb,
|
|||
case DSA_NOTIFIER_TAG_PROTO_DISCONNECT:
|
||||
err = dsa_switch_disconnect_tag_proto(ds, info);
|
||||
break;
|
||||
case DSA_NOTIFIER_MRP_ADD:
|
||||
err = dsa_switch_mrp_add(ds, info);
|
||||
break;
|
||||
case DSA_NOTIFIER_MRP_DEL:
|
||||
err = dsa_switch_mrp_del(ds, info);
|
||||
break;
|
||||
case DSA_NOTIFIER_MRP_ADD_RING_ROLE:
|
||||
err = dsa_switch_mrp_add_ring_role(ds, info);
|
||||
break;
|
||||
case DSA_NOTIFIER_MRP_DEL_RING_ROLE:
|
||||
err = dsa_switch_mrp_del_ring_role(ds, info);
|
||||
break;
|
||||
case DSA_NOTIFIER_TAG_8021Q_VLAN_ADD:
|
||||
err = dsa_switch_tag_8021q_vlan_add(ds, info);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue