h1_create()
 {
        simple_if_init $h1 192.0.1.1/24
+       tc qdisc add dev $h1 clsact
+
+       # Add egress filter on $h1 that will guarantee that the packet sent,
+       # will be the only packet being passed to the device.
+       tc filter add dev $h1 egress pref 2 handle 102 matchall action drop
 }
 
 h1_destroy()
 {
+       tc filter del dev $h1 egress pref 2 handle 102 matchall action drop
+       tc qdisc del dev $h1 clsact
        simple_if_fini $h1 192.0.1.1/24
 }
 
 h2_create()
 {
        simple_if_init $h2 192.0.1.2/24
+       tc qdisc add dev $h2 clsact
+
+       # Add egress filter on $h2 that will guarantee that the packet sent,
+       # will be the only packet being passed to the device.
+       tc filter add dev $h2 egress pref 1 handle 101 matchall action drop
 }
 
 h2_destroy()
 {
+       tc filter del dev $h2 egress pref 1 handle 101 matchall action drop
+       tc qdisc del dev $h2 clsact
        simple_if_fini $h2 192.0.1.2/24
 }
 
        local exp_max_occ=$(devlink_cell_size_get)
        local max_occ
 
+       tc filter add dev $h1 egress protocol ip pref 1 handle 101 flower \
+               src_mac $h1mac dst_mac $h2mac \
+               src_ip 192.0.1.1 dst_ip 192.0.1.2 \
+               action pass
+
        devlink sb occupancy clearmax $DEVLINK_DEV
 
        $MZ $h1 -c 1 -p 10 -a $h1mac -b $h2mac -A 192.0.1.1 -B 192.0.1.2 \
        max_occ=$(sb_occ_pool_check $cpu_dl_port $SB_POOL_EGR_CPU $exp_max_occ)
        check_err $? "Expected ePool($SB_POOL_EGR_CPU) max occupancy to be $exp_max_occ, but got $max_occ"
        log_test "CPU port's egress pool"
+
+       tc filter del dev $h1 egress protocol ip pref 1 handle 101 flower \
+               src_mac $h1mac dst_mac $h2mac \
+               src_ip 192.0.1.1 dst_ip 192.0.1.2 \
+               action pass
 }
 
 port_tc_ip_test()
        local exp_max_occ=$(devlink_cell_size_get)
        local max_occ
 
+       tc filter add dev $h1 egress protocol ip pref 1 handle 101 flower \
+               src_mac $h1mac dst_mac $h2mac \
+               src_ip 192.0.1.1 dst_ip 192.0.1.2 \
+               action pass
+
        devlink sb occupancy clearmax $DEVLINK_DEV
 
        $MZ $h1 -c 1 -p 10 -a $h1mac -b $h2mac -A 192.0.1.1 -B 192.0.1.2 \
        max_occ=$(sb_occ_etc_check $cpu_dl_port $SB_ITC_CPU_IP $exp_max_occ)
        check_err $? "Expected egress TC($SB_ITC_CPU_IP) max occupancy to be $exp_max_occ, but got $max_occ"
        log_test "CPU port's egress TC - IP packet"
+
+       tc filter del dev $h1 egress protocol ip pref 1 handle 101 flower \
+               src_mac $h1mac dst_mac $h2mac \
+               src_ip 192.0.1.1 dst_ip 192.0.1.2 \
+               action pass
 }
 
 port_tc_arp_test()
        local exp_max_occ=$(devlink_cell_size_get)
        local max_occ
 
+       tc filter add dev $h1 egress protocol arp pref 1 handle 101 flower \
+               src_mac $h1mac action pass
+
        devlink sb occupancy clearmax $DEVLINK_DEV
 
        $MZ $h1 -c 1 -p 10 -a $h1mac -A 192.0.1.1 -t arp -q
        max_occ=$(sb_occ_etc_check $cpu_dl_port $SB_ITC_CPU_ARP $exp_max_occ)
        check_err $? "Expected egress TC($SB_ITC_IP2ME) max occupancy to be $exp_max_occ, but got $max_occ"
        log_test "CPU port's egress TC - ARP packet"
+
+       tc filter del dev $h1 egress protocol arp pref 1 handle 101 flower \
+               src_mac $h1mac action pass
 }
 
 setup_prepare()