On Thu, Feb 23, 2023 at 03:19:37PM +0100, Ilya Maximets wrote:
> 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?

Yes, good idea.

Actually, I had noticed that too.
But forgot to do anything about it.

> > +    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?

Yes, I thought you might say that.
It is certainly the ugliest part of this patch.

I was concerned that the cleanup would happen to late
and the veth0/veth1 scheme may conflict.

But if we move to a different scheme, as you suggested above,
then on_exit may work. I will give it a try.

> 
> > +            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