Thread (8 messages) flat view 8 messages, 2 authors, 2021-06-22

Re: [PATCH v2 net-next 6/6] net: dsa: remove cross-chip support from the MRP notifiers

From: Horatiu Vultur <horatiu.vultur@microchip.com>
Date: 2021-06-22 07:45:29

The 06/21/2021 19:42, Vladimir Oltean wrote:

Reviewed-by: Horatiu Vultur <horatiu.vultur@microchip.com>
quoted hunk ↗ jump to hunk
From: Vladimir Oltean <vladimir.oltean@nxp.com>

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>
---
v1->v2: remove unused variable "err" in dsa_switch_mrp_add_ring_role()

 net/dsa/switch.c | 55 ++++++------------------------------------------
 1 file changed, 7 insertions(+), 48 deletions(-)
diff --git a/net/dsa/switch.c b/net/dsa/switch.c
index 75f567390a6b..c1e5afafe633 100644
--- a/net/dsa/switch.c
+++ b/net/dsa/switch.c
@@ -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
--
2.25.1
-- 
/Horatiu
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help