Instead of hard coding the scale target in the test, dynamically set it
based on the maximum number of flow counters and their current
occupancy.
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 tc_flower_get_target()
 {
        local should_fail=$1; shift
+       local max_cnts
 
        # The driver associates a counter with each tc filter, which means the
        # number of supported filters is bounded by the number of available
        # counters.
-       # Currently, the driver supports 30K (30,720) flow counters and six of
-       # these are used for multicast routing.
-       local target=30714
+       max_cnts=$(devlink_resource_size_get counters flow)
+
+       # Remove already allocated counters.
+       ((max_cnts -= $(devlink_resource_occ_get counters flow)))
+
+       # Each rule uses two counters, for packets and bytes.
+       ((max_cnts /= 2))
 
        if ((! should_fail)); then
-               echo $target
+               echo $max_cnts
        else
-               echo $((target + 1))
+               echo $((max_cnts + 1))
        fi
 }