net: dsa: use dsa_tree_for_each_cpu_port in dsa_tree_{setup,teardown}_master
authorVladimir Oltean <vladimir.oltean@nxp.com>
Fri, 19 Aug 2022 17:48:18 +0000 (20:48 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 23 Aug 2022 09:39:22 +0000 (11:39 +0200)
More logic will be added to dsa_tree_setup_master() and
dsa_tree_teardown_master() in upcoming changes.

Reduce the indentation by one level in these functions by introducing
and using a dedicated iterator for CPU ports of a tree.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
include/net/dsa.h
net/dsa/dsa2.c

index b902b31bebcefe0f3b0bcb4282d9609812e4e65c..f2ce12860546ee462c9fa55ce481494aced2f1c8 100644 (file)
@@ -559,6 +559,10 @@ static inline bool dsa_is_user_port(struct dsa_switch *ds, int p)
        list_for_each_entry((_dp), &(_dst)->ports, list) \
                if (dsa_port_is_user((_dp)))
 
+#define dsa_tree_for_each_cpu_port(_dp, _dst) \
+       list_for_each_entry((_dp), &(_dst)->ports, list) \
+               if (dsa_port_is_cpu((_dp)))
+
 #define dsa_switch_for_each_port(_dp, _ds) \
        list_for_each_entry((_dp), &(_ds)->dst->ports, list) \
                if ((_dp)->ds == (_ds))
index c7bdf7106d2382edd00672f27097d74cf93cea1d..ed56c7a554b8bd8c95910e4315a3e1b4b6d95b32 100644 (file)
@@ -1060,26 +1060,24 @@ static int dsa_tree_setup_switches(struct dsa_switch_tree *dst)
 
 static int dsa_tree_setup_master(struct dsa_switch_tree *dst)
 {
-       struct dsa_port *dp;
+       struct dsa_port *cpu_dp;
        int err = 0;
 
        rtnl_lock();
 
-       list_for_each_entry(dp, &dst->ports, list) {
-               if (dsa_port_is_cpu(dp)) {
-                       struct net_device *master = dp->master;
-                       bool admin_up = (master->flags & IFF_UP) &&
-                                       !qdisc_tx_is_noop(master);
+       dsa_tree_for_each_cpu_port(cpu_dp, dst) {
+               struct net_device *master = cpu_dp->master;
+               bool admin_up = (master->flags & IFF_UP) &&
+                               !qdisc_tx_is_noop(master);
 
-                       err = dsa_master_setup(master, dp);
-                       if (err)
-                               break;
+               err = dsa_master_setup(master, cpu_dp);
+               if (err)
+                       break;
 
-                       /* Replay master state event */
-                       dsa_tree_master_admin_state_change(dst, master, admin_up);
-                       dsa_tree_master_oper_state_change(dst, master,
-                                                         netif_oper_up(master));
-               }
+               /* Replay master state event */
+               dsa_tree_master_admin_state_change(dst, master, admin_up);
+               dsa_tree_master_oper_state_change(dst, master,
+                                                 netif_oper_up(master));
        }
 
        rtnl_unlock();
@@ -1089,22 +1087,20 @@ static int dsa_tree_setup_master(struct dsa_switch_tree *dst)
 
 static void dsa_tree_teardown_master(struct dsa_switch_tree *dst)
 {
-       struct dsa_port *dp;
+       struct dsa_port *cpu_dp;
 
        rtnl_lock();
 
-       list_for_each_entry(dp, &dst->ports, list) {
-               if (dsa_port_is_cpu(dp)) {
-                       struct net_device *master = dp->master;
+       dsa_tree_for_each_cpu_port(cpu_dp, dst) {
+               struct net_device *master = cpu_dp->master;
 
-                       /* Synthesizing an "admin down" state is sufficient for
-                        * the switches to get a notification if the master is
-                        * currently up and running.
-                        */
-                       dsa_tree_master_admin_state_change(dst, master, false);
+               /* Synthesizing an "admin down" state is sufficient for
+                * the switches to get a notification if the master is
+                * currently up and running.
+                */
+               dsa_tree_master_admin_state_change(dst, master, false);
 
-                       dsa_master_teardown(master);
-               }
+               dsa_master_teardown(master);
        }
 
        rtnl_unlock();