On 2/23/23 14:02, Simon Horman wrote:
> Move check for tc ingress pps support to from aclocal to test script
> 
> This has several problems:
> 
> 1. Stderror from failing commands is output when executing
>    various make targets.
> 
> 2. There are various failure conditions that lead
>    to veth0 and veth1 being created by not cleaned up.
> 
> 3. The check seems to execute for many make targets.
>    And it attempts to temporarily modify system state.
>    This seems inappopriate.
> 
> All these problems are addressed by this patch.

Thanks, Simon!  These are indeed very annoying problems.

I didn't test, but I have a few minor comment inline.

Best regards, Ilya Maximets.

> 
> Signed-off-by: Simon Horman <simon.hor...@corigine.com>
> Reviewed-by: Louis Peens <louis.pe...@corigine.com>
> ---
>  tests/atlocal.in                 | 11 -----------
>  tests/system-offloads-traffic.at | 23 +++++++++++++++++++++--
>  2 files changed, 21 insertions(+), 13 deletions(-)
> 
> diff --git a/tests/atlocal.in b/tests/atlocal.in
> index e02248f6f829..859668586299 100644
> --- a/tests/atlocal.in
> +++ b/tests/atlocal.in
> @@ -172,17 +172,6 @@ fi
>  # Set HAVE_TC
>  find_command tc
>  
> -# When HAVE_TC=yes, check if the current tc supports adding pps filter
> -SUPPORT_TC_INGRESS_PPS="no"
> -if test $HAVE_TC="yes"; then
> -    ip link add veth0 type veth peer name veth1
> -    tc qdisc add dev veth0 handle ffff: ingress
> -    if tc filter add dev veth0 parent ffff: u32 match u32 0 0 police 
> pkts_rate 100 pkts_burst 10; then
> -        SUPPORT_TC_INGRESS_PPS="yes"
> -    fi
> -    ip link del veth0
> -fi
> -
>  # Set HAVE_TCPDUMP
>  find_command tcpdump
>  
> diff --git a/tests/system-offloads-traffic.at 
> b/tests/system-offloads-traffic.at
> index f2bf9c0639aa..ff3e4c63d127 100644
> --- a/tests/system-offloads-traffic.at
> +++ b/tests/system-offloads-traffic.at
> @@ -18,6 +18,25 @@ m4_define([OVS_CHECK_ACTIONS], [
>             [0], [$1])
>  ])
>  
> +m4_define([CHECK_TC_INGRESS_PPS],
> +[
> +    AT_SKIP_IF([test $HAVE_TC = "no"])
> +    AT_CHECK([ip link add veth0 type veth peer name veth1 || exit 77])

Since we're here, we should probably re-name these interfaces to
something more specific.  I can imagine a scenario where veth0
port already exists in the system.
Maybe s/veth/ovs_tc_pps/ or something like that?

> +    AT_CHECK([
> +        if ! tc qdisc add dev veth0 handle ffff: ingress; then
> +            ip link del veth0

Instead of deleting in every branch, we might add on_exit call somewhere
at the beginning of this function.  The port will stick around till the
end of the test, but I'm not sure if that's a problem if the name is
special enough.  Or we may keep one extra del at the very end.

With on_exit, can probably be transformed into something like (untested):

  AT_CHECK([tc qdisc add dev veth0 handle ffff: ingress || exit 77])

What do you think?

> +            exit 77
> +        fi
> +    ])
> +    AT_CHECK([
> +        if ! tc filter add dev veth0 parent ffff: \

'dnl' is prefered for the line break.  autotest refuses to print out
commands with '\' in them.

> +                 u32 match u32 0 0 police pkts_rate 100 pkts_burst 10; then
> +            ip link del veth0
> +            exit 77
> +        fi
> +    ])
> +    ip link del veth0
> +])
>  
>  AT_SETUP([offloads - ping between two ports - offloads disabled])
>  OVS_TRAFFIC_VSWITCHD_START()
> @@ -132,7 +151,7 @@ AT_CLEANUP
>  
>  AT_SETUP([offloads - set ingress_policing_kpkts_rate and 
> ingress_policing_kpkts_burst - offloads disabled])
>  AT_KEYWORDS([ingress_policing_kpkts])
> -AT_SKIP_IF([test $SUPPORT_TC_INGRESS_PPS = "no"])
> +CHECK_TC_INGRESS_PPS()
>  OVS_TRAFFIC_VSWITCHD_START()
>  AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:hw-offload=false])
>  AT_CHECK([ovs-ofctl add-flow br0 "actions=normal"])
> @@ -156,7 +175,7 @@ AT_CLEANUP
>  
>  AT_SETUP([offloads - set ingress_policing_kpkts_rate and 
> ingress_policing_kpkts_burst - offloads enabled])
>  AT_KEYWORDS([ingress_policing_kpkts])
> -AT_SKIP_IF([test $SUPPORT_TC_INGRESS_PPS = "no"])
> +CHECK_TC_INGRESS_PPS()
>  OVS_TRAFFIC_VSWITCHD_START([], [], [-- set Open_vSwitch . 
> other_config:hw-offload=true])
>  AT_CHECK([ovs-ofctl add-flow br0 "actions=normal"])
>  ADD_NAMESPACES(at_ns0)

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to