Instead of having a suite of dedicated cleanup functions, use the defer
framework to schedule cleanups right as their setup functions are run.

This makes a dedicated cleanup() moot, instead fall back to the
lib.sh-provided one, which invokes the necessary defer cleanups as well.

Signed-off-by: Petr Machata <pe...@nvidia.com>
---
 .../drivers/net/mlxsw/sch_red_core.sh         | 109 ++++++------------
 1 file changed, 37 insertions(+), 72 deletions(-)

diff --git a/tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh 
b/tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh
index 7151b0c7bf8d..117a99fdbba5 100644
--- a/tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh
+++ b/tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh
@@ -89,39 +89,31 @@ host_create()
        local host=$1; shift
 
        simple_if_init $dev
+       defer simple_if_fini $dev
+
        mtu_set $dev 10000
+       defer mtu_restore $dev
 
        vlan_create $dev 10 v$dev $(ipaddr $host 10)/28
+       defer vlan_destroy $dev 10
        ip link set dev $dev.10 type vlan egress 0:0
 
        vlan_create $dev 11 v$dev $(ipaddr $host 11)/28
+       defer vlan_destroy $dev 11
        ip link set dev $dev.11 type vlan egress 0:1
 }
 
-host_destroy()
-{
-       local dev=$1; shift
-
-       vlan_destroy $dev 11
-       vlan_destroy $dev 10
-       mtu_restore $dev
-       simple_if_fini $dev
-}
-
 h1_create()
 {
        host_create $h1 1
 }
 
-h1_destroy()
-{
-       host_destroy $h1
-}
-
 h2_create()
 {
        host_create $h2 2
+
        tc qdisc add dev $h2 clsact
+       defer tc qdisc del dev $h2 clsact
 
        # Some of the tests in this suite use multicast traffic. As this traffic
        # enters BR2_10 resp. BR2_11, it is flooded to all other ports. Thus
@@ -139,13 +131,7 @@ h2_create()
 
        tc qdisc replace dev $h2 root handle 10: tbf rate 1gbit \
                burst 128K limit 1G
-}
-
-h2_destroy()
-{
-       tc qdisc del dev $h2 root handle 10:
-       tc qdisc del dev $h2 clsact
-       host_destroy $h2
+       defer tc qdisc del dev $h2 root handle 10:
 }
 
 h3_create()
@@ -153,40 +139,54 @@ h3_create()
        host_create $h3 3
 }
 
-h3_destroy()
-{
-       host_destroy $h3
-}
-
 switch_create()
 {
        local intf
        local vlan
 
        ip link add dev br1_10 type bridge
+       defer ip link del dev br1_10
+
        ip link add dev br1_11 type bridge
+       defer ip link del dev br1_11
 
        ip link add dev br2_10 type bridge
+       defer ip link del dev br2_10
+
        ip link add dev br2_11 type bridge
+       defer ip link del dev br2_11
 
        for intf in $swp1 $swp2 $swp3 $swp4 $swp5; do
                ip link set dev $intf up
+               defer ip link set dev $intf down
+
                mtu_set $intf 10000
+               defer mtu_restore $intf
        done
 
        for intf in $swp1 $swp4; do
                for vlan in 10 11; do
                        vlan_create $intf $vlan
+                       defer vlan_destroy $intf $vlan
+
                        ip link set dev $intf.$vlan master br1_$vlan
+                       defer ip link set dev $intf.$vlan nomaster
+
                        ip link set dev $intf.$vlan up
+                       defer ip link set dev $intf.$vlan up
                done
        done
 
        for intf in $swp2 $swp3 $swp5; do
                for vlan in 10 11; do
                        vlan_create $intf $vlan
+                       defer vlan_destroy $intf $vlan
+
                        ip link set dev $intf.$vlan master br2_$vlan
+                       defer ip link set dev $intf.$vlan nomaster
+
                        ip link set dev $intf.$vlan up
+                       defer ip link set dev $intf.$vlan up
                done
        done
 
@@ -201,49 +201,25 @@ switch_create()
        for intf in $swp3 $swp4; do
                tc qdisc replace dev $intf root handle 1: tbf rate 1gbit \
                        burst 128K limit 1G
+               defer tc qdisc del dev $intf root handle 1:
        done
 
        ip link set dev br1_10 up
+       defer ip link set dev br1_10 down
+
        ip link set dev br1_11 up
+       defer ip link set dev br1_11 down
+
        ip link set dev br2_10 up
+       defer ip link set dev br2_10 down
+
        ip link set dev br2_11 up
+       defer ip link set dev br2_11 down
 
        local size=$(devlink_pool_size_thtype 0 | cut -d' ' -f 1)
        devlink_port_pool_th_save $swp3 8
        devlink_port_pool_th_set $swp3 8 $size
-}
-
-switch_destroy()
-{
-       local intf
-       local vlan
-
-       devlink_port_pool_th_restore $swp3 8
-
-       ip link set dev br2_11 down
-       ip link set dev br2_10 down
-       ip link set dev br1_11 down
-       ip link set dev br1_10 down
-
-       for intf in $swp4 $swp3; do
-               tc qdisc del dev $intf root handle 1:
-       done
-
-       for intf in $swp5 $swp3 $swp2 $swp4 $swp1; do
-               for vlan in 11 10; do
-                       ip link set dev $intf.$vlan down
-                       ip link set dev $intf.$vlan nomaster
-                       vlan_destroy $intf $vlan
-               done
-
-               mtu_restore $intf
-               ip link set dev $intf down
-       done
-
-       ip link del dev br2_11
-       ip link del dev br2_10
-       ip link del dev br1_11
-       ip link del dev br1_10
+       defer devlink_port_pool_th_restore $swp3 8
 }
 
 setup_prepare()
@@ -263,6 +239,7 @@ setup_prepare()
        h3_mac=$(mac_get $h3)
 
        vrf_prepare
+       defer vrf_cleanup
 
        h1_create
        h2_create
@@ -270,18 +247,6 @@ setup_prepare()
        switch_create
 }
 
-cleanup()
-{
-       pre_cleanup
-
-       switch_destroy
-       h3_destroy
-       h2_destroy
-       h1_destroy
-
-       vrf_cleanup
-}
-
 ping_ipv4()
 {
        ping_test $h1.10 $(ipaddr 3 10) " from host 1, vlan 10"
-- 
2.45.0


Reply via email to