net: dsa: remove cross-chip support from the MRP notifiers
With MRP hardware assist being supported only by the ocelot switch family, which by design does not support cross-chip bridging, the current match functions are at best a guess and have not been confirmed in any way to do anything relevant in a multi-switch topology. Drop the code and make the notifiers match only on the targeted switch port. Cc: Horatiu Vultur <horatiu.vultur@microchip.com> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
88faba20e2
Коммит
f9bcdc362c
|
@ -346,36 +346,16 @@ static int dsa_switch_change_tag_proto(struct dsa_switch *ds,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool dsa_switch_mrp_match(struct dsa_switch *ds, int port,
|
||||
struct dsa_notifier_mrp_info *info)
|
||||
{
|
||||
if (ds->index == info->sw_index && port == info->port)
|
||||
return true;
|
||||
|
||||
if (dsa_is_dsa_port(ds, port))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int dsa_switch_mrp_add(struct dsa_switch *ds,
|
||||
struct dsa_notifier_mrp_info *info)
|
||||
{
|
||||
int err = 0;
|
||||
int port;
|
||||
|
||||
if (!ds->ops->port_mrp_add)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
for (port = 0; port < ds->num_ports; port++) {
|
||||
if (dsa_switch_mrp_match(ds, port, info)) {
|
||||
err = ds->ops->port_mrp_add(ds, port, info->mrp);
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ds->index == info->sw_index)
|
||||
return ds->ops->port_mrp_add(ds, info->port, info->mrp);
|
||||
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dsa_switch_mrp_del(struct dsa_switch *ds,
|
||||
|
@ -390,39 +370,18 @@ static int dsa_switch_mrp_del(struct dsa_switch *ds,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool
|
||||
dsa_switch_mrp_ring_role_match(struct dsa_switch *ds, int port,
|
||||
struct dsa_notifier_mrp_ring_role_info *info)
|
||||
{
|
||||
if (ds->index == info->sw_index && port == info->port)
|
||||
return true;
|
||||
|
||||
if (dsa_is_dsa_port(ds, port))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int
|
||||
dsa_switch_mrp_add_ring_role(struct dsa_switch *ds,
|
||||
struct dsa_notifier_mrp_ring_role_info *info)
|
||||
{
|
||||
int err = 0;
|
||||
int port;
|
||||
|
||||
if (!ds->ops->port_mrp_add)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
for (port = 0; port < ds->num_ports; port++) {
|
||||
if (dsa_switch_mrp_ring_role_match(ds, port, info)) {
|
||||
err = ds->ops->port_mrp_add_ring_role(ds, port,
|
||||
info->mrp);
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ds->index == info->sw_index)
|
||||
return ds->ops->port_mrp_add_ring_role(ds, info->port,
|
||||
info->mrp);
|
||||
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
Загрузка…
Ссылка в новой задаче