Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-13 Thread Eelco Chaudron



On 13 Jul 2021, at 5:37, Amber, Kumar wrote:

> Hi Eelco, Flavio ,
>
> Pls find my comments Inline.
>

ACK, replied to in v10



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


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Amber, Kumar
Hi Eelco, Flavio ,

Pls find my comments Inline.



> > +/* For the first call, this will be choosen based on the
> > + * compile time flag and if nor flag is set it is set to
> > + * default scalar.
> > + */
> > +if (OVS_UNLIKELY(!default_mfex_func_set)) {
> > +VLOG_INFO("Default MFEX implementation is %s.\n",
> > +  mfex_impls[mfex_idx].name);
> > +atomic_store_relaxed(mfex_func, (uintptr_t) mfex_impls
> > + [mfex_idx].extract_func);
> > +default_mfex_func_set = true;
> 
> If this only needs to be done once, why not move it to
> dpif_miniflow_extract_init() as suggested during the v6 review (in a later 
> patch)?
> This will remove this check every time dp_mfex_impl_get_default() gets called.
> 

Yes it does make .

> > +}
> > +
> > +return default_mfex_func;
> > +}
> > +
> > +int
> > +dp_mfex_impl_set_default_by_name(const char *name) {
> > +miniflow_extract_func new_default;
> > +atomic_uintptr_t *mfex_func = (void *)_mfex_func;
> > +
> > +int err = dp_mfex_impl_get_by_name(name, _default);
> > +
> > +if (!err) {
> > +atomic_store_relaxed(mfex_func, (uintptr_t) new_default);
> > +}
> > +
> > +return err;
> > +
> > +}
> > +
> > +void
> > +dp_mfex_impl_get(struct ds *reply, struct dp_netdev_pmd_thread
> **pmd_list,
> > + size_t pmd_list_size) {
> > +/* Add all MFEX functions to reply string. */
> > +ds_put_cstr(reply, "Available MFEX implementations:\n");
> > +
> > +for (int i = 0; i < MFEX_IMPL_MAX; i++) {
> > +ds_put_format(reply, "  %s (available: %s pmds: ",
> > +  mfex_impls[i].name, mfex_impls[i].available ?
> > +  "True" : "False");
> 
> Flavio mentioned that True/False did not make sense to an end-user, not sure 
> if
> he has the same feeling here?
> Maybe yes/no make more sense here? Flavio?
> 

Changes to available same as previous comments.

> > +
> > +for (size_t j = 0; j < pmd_list_size; j++) {
> > +struct dp_netdev_pmd_thread *pmd = pmd_list[j];
> > +if (pmd->core_id == NON_PMD_CORE_ID) {
> > +continue;
> > +}
> > +
> > +if (pmd->miniflow_extract_opt == mfex_impls[i].extract_func) {
> > +ds_put_format(reply, "%u,", pmd->core_id);
> > +}
> > +}
> > +
> > +ds_chomp(reply, ',');
> > +
> > +if (ds_last(reply) == ' ') {
> > +ds_put_cstr(reply, "none");
> > +}
> > +
> > +ds_put_cstr(reply, ")\n");
> > +}
> > +
> > +}
> > +
> > +/* This function checks all available MFEX implementations, and
> > +selects and
> > + * returns the function pointer to the one requested by "name". If
> > +nothing
> > + * is found it reutrns error.
> 
> reutrns -> returns
> 

Fixed.
> > + */
> > +int
> > +dp_mfex_impl_get_by_name(const char *name, miniflow_extract_func
> > +*out_func) {
> > +if ((name == NULL) || (out_func == NULL)) {
> > +return -EINVAL;
> > +}
> > +
> > +for (int i = 0; i < MFEX_IMPL_MAX; i++) {
> > +if (strcmp(mfex_impls[i].name, name) == 0) {
> > +/* Check available is set before exec. */
> > +if (!mfex_impls[i].available) {
> > +*out_func = NULL;
> > +return -ENODEV;
> > +}
> > +
> > +*out_func = mfex_impls[i].extract_func;
> > +return 0;
> > +}
> > +}
> > +
> > +return -ENOENT;
> > +}
> > diff --git a/lib/dpif-netdev-private-extract.h
> > b/lib/dpif-netdev-private-extract.h
> > new file mode 100644
> > index 0..ddf2e2845
> > --- /dev/null
> > +++ b/lib/dpif-netdev-private-extract.h
> > @@ -0,0 +1,111 @@
> > +/*
> > + * Copyright (c) 2021 Intel.
> > + *
> > + * Licensed under the Apache License, Version 2.0 (the "License");
> > + * you may not use this file except in compliance with the License.
> > + * You may obtain a copy of the License at:
> > + *
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing,
> > +software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> > + * See the License for the specific language governing permissions
> > +and
> > + * limitations under the License.
> > + */
> > +
> > +#ifndef MFEX_AVX512_EXTRACT
> > +#define MFEX_AVX512_EXTRACT 1
> > +
> > +#include 
> > +
> > +/* Forward declarations. */
> > +struct dp_packet;
> > +struct miniflow;
> > +struct dp_netdev_pmd_thread;
> > +struct dp_packet_batch;
> > +struct netdev_flow_key;
> > +
> > +/* Function pointer prototype to be implemented in the optimized
> > +miniflow
> > + * extract code.
> > + * returns the hitmask of the processed packets on success.
> > + * returns zero on failure.
> > + */
> > +typedef uint32_t 

Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Aaron Conole
Aaron Conole  writes:

> Ilya Maximets  writes:
>
>> On 7/12/21 5:10 PM, David Marchand wrote:
>>> On Mon, Jul 12, 2021 at 4:43 PM Ilya Maximets  wrote:
>> ovsrobot has issues with reporting the status right now, but this
>> patch fails the build in GHA:
>>   https://github.com/ovsrobot/ovs/actions/runs/1021787643
>
> Thanks for linking on results.
>
> I've spot-checked a bunch of the failing builds, and found 2 fixable code 
> issues.
> A few of the CI run's I can't find/explain the error, but I don't know of 
> a good
> way to "jump to the error" line, am I missing a trick, or is scrolling 
> the whole
> compiler output and checking errors the best method?

 typing 'error:' in the 'Search logs' field, usually gets you
 to the actual error faster, but, unfortunately, scrolling is
 the most reliable option.
>>> 
>>> GHA ui jumps at the last line of a failing step, but the problem is
>>> that, in OVS, we dump all logs which adds a lot of noise.
>>> 
>>> We could stop dumping them, since those logs are attached to the job
>>> as an archive.
>>> Like what is done in DPDK.
>>> http://git.dpdk.org/dpdk/tree/.ci/linux-build.sh#n3
>>> 
>>> WDYT?
>>
>> Yes, that is good thing to do.  We didn't do that because of
>> Travis CI, where we have no artifacts collected.
>
> +1 - we should bend over backwards to make things easier on Travis CI to
> the detriment of other platforms.

And by this, I mean the opposite - we should *NOT* bend over backwards
to make things easier on Travis CI.

>> But yes, checking for [ -n "$GITHUB_WORKFLOW" ] is a solution.
>>
>> Best regards, Ilya Maximets.

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


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Aaron Conole
Ilya Maximets  writes:

> On 7/12/21 5:10 PM, David Marchand wrote:
>> On Mon, Jul 12, 2021 at 4:43 PM Ilya Maximets  wrote:
> ovsrobot has issues with reporting the status right now, but this
> patch fails the build in GHA:
>   https://github.com/ovsrobot/ovs/actions/runs/1021787643

 Thanks for linking on results.

 I've spot-checked a bunch of the failing builds, and found 2 fixable code 
 issues.
 A few of the CI run's I can't find/explain the error, but I don't know of 
 a good
 way to "jump to the error" line, am I missing a trick, or is scrolling the 
 whole
 compiler output and checking errors the best method?
>>>
>>> typing 'error:' in the 'Search logs' field, usually gets you
>>> to the actual error faster, but, unfortunately, scrolling is
>>> the most reliable option.
>> 
>> GHA ui jumps at the last line of a failing step, but the problem is
>> that, in OVS, we dump all logs which adds a lot of noise.
>> 
>> We could stop dumping them, since those logs are attached to the job
>> as an archive.
>> Like what is done in DPDK.
>> http://git.dpdk.org/dpdk/tree/.ci/linux-build.sh#n3
>> 
>> WDYT?
>
> Yes, that is good thing to do.  We didn't do that because of
> Travis CI, where we have no artifacts collected.

+1 - we should bend over backwards to make things easier on Travis CI to
the detriment of other platforms.

> But yes, checking for [ -n "$GITHUB_WORKFLOW" ] is a solution.
>
> Best regards, Ilya Maximets.

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


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Ilya Maximets
On 7/12/21 4:57 PM, Van Haaren, Harry wrote:
>> -Original Message-
>> From: Ilya Maximets 
>> Sent: Monday, July 12, 2021 3:43 PM
>> To: Van Haaren, Harry ; Ilya Maximets
>> ; Amber, Kumar ; ovs-
>> d...@openvswitch.org
>> Cc: f...@sysclose.org; echau...@redhat.com; Ferriter, Cian
>> ; Stokes, Ian 
>> Subject: Re: [v9 01/12] dpif-netdev: Add command line and function pointer 
>> for
>> miniflow extract
>>
>> On 7/12/21 4:02 PM, Van Haaren, Harry wrote:
 -Original Message-
 From: Ilya Maximets 
 Sent: Monday, July 12, 2021 2:25 PM
 To: Amber, Kumar ; ovs-dev@openvswitch.org
 Cc: f...@sysclose.org; echau...@redhat.com; i.maxim...@ovn.org; Van Haaren,
 Harry ; Ferriter, Cian 
 ;
 Stokes, Ian 
 Subject: Re: [v9 01/12] dpif-netdev: Add command line and function pointer 
 for
 miniflow extract

 On 7/12/21 7:51 AM, kumar Amber wrote:
> From: Kumar Amber 
>
> This patch introduces the MFEX function pointers which allows
> the user to switch between different miniflow extract implementations
> which are provided by the OVS based on optimized ISA CPU.
>
> The user can query for the available minflow extract variants available
> for that CPU by following commands:
>
> $ovs-appctl dpif-netdev/miniflow-parser-get
>
> Similarly an user can set the miniflow implementation by the following
> command :
>
> $ ovs-appctl dpif-netdev/miniflow-parser-set name
>
> This allows for more performance and flexibility to the user to choose
> the miniflow implementation according to the needs.
>
> Signed-off-by: Kumar Amber 
> Co-authored-by: Harry van Haaren 
> Signed-off-by: Harry van Haaren 
>
> ---
> v9:
> - fix review comments from Flavio
> v7:
> - fix review comments(Eelco, Flavio)
> v5:
> - fix review comments(Ian, Flavio, Eelco)
> - add enum to hold mfex indexes
> - add new get and set implemenatations
> - add Atomic set and get
> ---

 ovsrobot has issues with reporting the status right now, but this
 patch fails the build in GHA:
   https://github.com/ovsrobot/ovs/actions/runs/1021787643
>>>
>>> Thanks for linking on results.
>>>
>>> I've spot-checked a bunch of the failing builds, and found 2 fixable code 
>>> issues.
>>> A few of the CI run's I can't find/explain the error, but I don't know of a 
>>> good
>>> way to "jump to the error" line, am I missing a trick, or is scrolling the 
>>> whole
>>> compiler output and checking errors the best method?
>>
>> typing 'error:' in the 'Search logs' field, usually gets you
>> to the actual error faster, but, unfortunately, scrolling is
>> the most reliable option.
> 
> Okay, thanks.
> 
> 
>>> ISSUES:
>>> #1 : OVS Requires Mutex issue (Linux clang test dpdk build)
>>> 1291../../lib/dpif-netdev-private-extract.h:87:53: error: use of undeclared
>> identifier 'dp_netdev_mutex'; did you mean 'dp_netdev_input'?
>>> 1292 size_t pmd_list_size) OVS_REQUIRES(dp_netdev_mutex);
>>>
>>> #2 : Unused Argument (As from mailing list review comment too, linux gcc 
>>> dpdk --
>> enable-shared)
>>> 2353lib/dpif-netdev.c:1079:63: error: unused parameter ‘argc’ 
>>> [-Werror=unused-
>> parameter]
>>> 2354 dpif_miniflow_extract_impl_set(struct unixctl_conn *conn, int argc,
>>>
>>> #3 : Distcheck directory not valid? (linux gcc test 3.16 build. I cannot 
>>> explain this?)
>>> make: *** [distcheck] Error 1
>>> 4490Makefile:5298: recipe for target 'distcheck' failed
>>> 4491+ cat '*/_build/sub/tests/testsuite.log'
>>> 4492cat: '*/_build/sub/tests/testsuite.log': No such file or directory
>>> 4493Error: Process completed with exit code 1.>
>>> SOLUTIONS:
>>> #1, likely to forward-decl the "dp_netdev_mutex" to make it available
>>> in the extract header file, and remove the "static" keyword so its no 
>>> longer limited
>>> to the dpif-netdev.c compilation unit.
>>>
>>> #2 is a simple OVS_UNUSED as Eelco suggested during review.
>>>
>>> #3, I'm not sure where the DistCheck issue arise from, it seems to be 
>>> missing
>> directories
>>> during the test run? Input appreciated, as pushing & hoping tends to be a 
>>> tiresome
>>> and long process.
>>
>> This is just a result of the previous build failure.  Build
>> never reached the testsuite phase, so there are no testsuite
>> logs there.  You should not see this problem once build is
>> fixed.
> 
> Aha, good to know. Then a respin with the fixes for the above issues is
> our next step, will arrive on the mailing list soon.

If you have a github account it might be good to push patches
one-by-one there to be sure that everything is fine before
sending to the mail list to avoid re-spins due to build issues.
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Ilya Maximets
On 7/12/21 5:10 PM, David Marchand wrote:
> On Mon, Jul 12, 2021 at 4:43 PM Ilya Maximets  wrote:
 ovsrobot has issues with reporting the status right now, but this
 patch fails the build in GHA:
   https://github.com/ovsrobot/ovs/actions/runs/1021787643
>>>
>>> Thanks for linking on results.
>>>
>>> I've spot-checked a bunch of the failing builds, and found 2 fixable code 
>>> issues.
>>> A few of the CI run's I can't find/explain the error, but I don't know of a 
>>> good
>>> way to "jump to the error" line, am I missing a trick, or is scrolling the 
>>> whole
>>> compiler output and checking errors the best method?
>>
>> typing 'error:' in the 'Search logs' field, usually gets you
>> to the actual error faster, but, unfortunately, scrolling is
>> the most reliable option.
> 
> GHA ui jumps at the last line of a failing step, but the problem is
> that, in OVS, we dump all logs which adds a lot of noise.
> 
> We could stop dumping them, since those logs are attached to the job
> as an archive.
> Like what is done in DPDK.
> http://git.dpdk.org/dpdk/tree/.ci/linux-build.sh#n3
> 
> WDYT?

Yes, that is good thing to do.  We didn't do that because of
Travis CI, where we have no artifacts collected.
But yes, checking for [ -n "$GITHUB_WORKFLOW" ] is a solution.

Best regards, Ilya Maximets.
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread David Marchand
On Mon, Jul 12, 2021 at 4:43 PM Ilya Maximets  wrote:
> >> ovsrobot has issues with reporting the status right now, but this
> >> patch fails the build in GHA:
> >>   https://github.com/ovsrobot/ovs/actions/runs/1021787643
> >
> > Thanks for linking on results.
> >
> > I've spot-checked a bunch of the failing builds, and found 2 fixable code 
> > issues.
> > A few of the CI run's I can't find/explain the error, but I don't know of a 
> > good
> > way to "jump to the error" line, am I missing a trick, or is scrolling the 
> > whole
> > compiler output and checking errors the best method?
>
> typing 'error:' in the 'Search logs' field, usually gets you
> to the actual error faster, but, unfortunately, scrolling is
> the most reliable option.

GHA ui jumps at the last line of a failing step, but the problem is
that, in OVS, we dump all logs which adds a lot of noise.

We could stop dumping them, since those logs are attached to the job
as an archive.
Like what is done in DPDK.
http://git.dpdk.org/dpdk/tree/.ci/linux-build.sh#n3

WDYT?


-- 
David Marchand

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


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Van Haaren, Harry
> -Original Message-
> From: Ilya Maximets 
> Sent: Monday, July 12, 2021 3:43 PM
> To: Van Haaren, Harry ; Ilya Maximets
> ; Amber, Kumar ; ovs-
> d...@openvswitch.org
> Cc: f...@sysclose.org; echau...@redhat.com; Ferriter, Cian
> ; Stokes, Ian 
> Subject: Re: [v9 01/12] dpif-netdev: Add command line and function pointer for
> miniflow extract
> 
> On 7/12/21 4:02 PM, Van Haaren, Harry wrote:
> >> -Original Message-
> >> From: Ilya Maximets 
> >> Sent: Monday, July 12, 2021 2:25 PM
> >> To: Amber, Kumar ; ovs-dev@openvswitch.org
> >> Cc: f...@sysclose.org; echau...@redhat.com; i.maxim...@ovn.org; Van Haaren,
> >> Harry ; Ferriter, Cian 
> >> ;
> >> Stokes, Ian 
> >> Subject: Re: [v9 01/12] dpif-netdev: Add command line and function pointer 
> >> for
> >> miniflow extract
> >>
> >> On 7/12/21 7:51 AM, kumar Amber wrote:
> >>> From: Kumar Amber 
> >>>
> >>> This patch introduces the MFEX function pointers which allows
> >>> the user to switch between different miniflow extract implementations
> >>> which are provided by the OVS based on optimized ISA CPU.
> >>>
> >>> The user can query for the available minflow extract variants available
> >>> for that CPU by following commands:
> >>>
> >>> $ovs-appctl dpif-netdev/miniflow-parser-get
> >>>
> >>> Similarly an user can set the miniflow implementation by the following
> >>> command :
> >>>
> >>> $ ovs-appctl dpif-netdev/miniflow-parser-set name
> >>>
> >>> This allows for more performance and flexibility to the user to choose
> >>> the miniflow implementation according to the needs.
> >>>
> >>> Signed-off-by: Kumar Amber 
> >>> Co-authored-by: Harry van Haaren 
> >>> Signed-off-by: Harry van Haaren 
> >>>
> >>> ---
> >>> v9:
> >>> - fix review comments from Flavio
> >>> v7:
> >>> - fix review comments(Eelco, Flavio)
> >>> v5:
> >>> - fix review comments(Ian, Flavio, Eelco)
> >>> - add enum to hold mfex indexes
> >>> - add new get and set implemenatations
> >>> - add Atomic set and get
> >>> ---
> >>
> >> ovsrobot has issues with reporting the status right now, but this
> >> patch fails the build in GHA:
> >>   https://github.com/ovsrobot/ovs/actions/runs/1021787643
> >
> > Thanks for linking on results.
> >
> > I've spot-checked a bunch of the failing builds, and found 2 fixable code 
> > issues.
> > A few of the CI run's I can't find/explain the error, but I don't know of a 
> > good
> > way to "jump to the error" line, am I missing a trick, or is scrolling the 
> > whole
> > compiler output and checking errors the best method?
> 
> typing 'error:' in the 'Search logs' field, usually gets you
> to the actual error faster, but, unfortunately, scrolling is
> the most reliable option.

Okay, thanks.


> > ISSUES:
> > #1 : OVS Requires Mutex issue (Linux clang test dpdk build)
> > 1291../../lib/dpif-netdev-private-extract.h:87:53: error: use of undeclared
> identifier 'dp_netdev_mutex'; did you mean 'dp_netdev_input'?
> > 1292 size_t pmd_list_size) OVS_REQUIRES(dp_netdev_mutex);
> >
> > #2 : Unused Argument (As from mailing list review comment too, linux gcc 
> > dpdk --
> enable-shared)
> > 2353lib/dpif-netdev.c:1079:63: error: unused parameter ‘argc’ 
> > [-Werror=unused-
> parameter]
> > 2354 dpif_miniflow_extract_impl_set(struct unixctl_conn *conn, int argc,
> >
> > #3 : Distcheck directory not valid? (linux gcc test 3.16 build. I cannot 
> > explain this?)
> > make: *** [distcheck] Error 1
> > 4490Makefile:5298: recipe for target 'distcheck' failed
> > 4491+ cat '*/_build/sub/tests/testsuite.log'
> > 4492cat: '*/_build/sub/tests/testsuite.log': No such file or directory
> > 4493Error: Process completed with exit code 1.>
> > SOLUTIONS:
> > #1, likely to forward-decl the "dp_netdev_mutex" to make it available
> > in the extract header file, and remove the "static" keyword so its no 
> > longer limited
> > to the dpif-netdev.c compilation unit.
> >
> > #2 is a simple OVS_UNUSED as Eelco suggested during review.
> >
> > #3, I'm not sure where the DistCheck issue arise from, it seems to be 
> > missing
> directories
> > during the test run? Input appreciated, as pushing & hoping tends to be a 
> > tiresome
> > and long process.
> 
> This is just a result of the previous build failure.  Build
> never reached the testsuite phase, so there are no testsuite
> logs there.  You should not see this problem once build is
> fixed.

Aha, good to know. Then a respin with the fixes for the above issues is
our next step, will arrive on the mailing list soon.


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


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Ilya Maximets
On 7/12/21 4:02 PM, Van Haaren, Harry wrote:
>> -Original Message-
>> From: Ilya Maximets 
>> Sent: Monday, July 12, 2021 2:25 PM
>> To: Amber, Kumar ; ovs-dev@openvswitch.org
>> Cc: f...@sysclose.org; echau...@redhat.com; i.maxim...@ovn.org; Van Haaren,
>> Harry ; Ferriter, Cian ;
>> Stokes, Ian 
>> Subject: Re: [v9 01/12] dpif-netdev: Add command line and function pointer 
>> for
>> miniflow extract
>>
>> On 7/12/21 7:51 AM, kumar Amber wrote:
>>> From: Kumar Amber 
>>>
>>> This patch introduces the MFEX function pointers which allows
>>> the user to switch between different miniflow extract implementations
>>> which are provided by the OVS based on optimized ISA CPU.
>>>
>>> The user can query for the available minflow extract variants available
>>> for that CPU by following commands:
>>>
>>> $ovs-appctl dpif-netdev/miniflow-parser-get
>>>
>>> Similarly an user can set the miniflow implementation by the following
>>> command :
>>>
>>> $ ovs-appctl dpif-netdev/miniflow-parser-set name
>>>
>>> This allows for more performance and flexibility to the user to choose
>>> the miniflow implementation according to the needs.
>>>
>>> Signed-off-by: Kumar Amber 
>>> Co-authored-by: Harry van Haaren 
>>> Signed-off-by: Harry van Haaren 
>>>
>>> ---
>>> v9:
>>> - fix review comments from Flavio
>>> v7:
>>> - fix review comments(Eelco, Flavio)
>>> v5:
>>> - fix review comments(Ian, Flavio, Eelco)
>>> - add enum to hold mfex indexes
>>> - add new get and set implemenatations
>>> - add Atomic set and get
>>> ---
>>
>> ovsrobot has issues with reporting the status right now, but this
>> patch fails the build in GHA:
>>   https://github.com/ovsrobot/ovs/actions/runs/1021787643
> 
> Thanks for linking on results.
> 
> I've spot-checked a bunch of the failing builds, and found 2 fixable code 
> issues.
> A few of the CI run's I can't find/explain the error, but I don't know of a 
> good
> way to "jump to the error" line, am I missing a trick, or is scrolling the 
> whole
> compiler output and checking errors the best method?

typing 'error:' in the 'Search logs' field, usually gets you
to the actual error faster, but, unfortunately, scrolling is
the most reliable option.

> 
> ISSUES:
> #1 : OVS Requires Mutex issue (Linux clang test dpdk build)
> 1291../../lib/dpif-netdev-private-extract.h:87:53: error: use of undeclared 
> identifier 'dp_netdev_mutex'; did you mean 'dp_netdev_input'? 
> 1292 size_t pmd_list_size) OVS_REQUIRES(dp_netdev_mutex);
> 
> #2 : Unused Argument (As from mailing list review comment too, linux gcc dpdk 
> --enable-shared)
> 2353lib/dpif-netdev.c:1079:63: error: unused parameter ‘argc’ 
> [-Werror=unused-parameter] 
> 2354 dpif_miniflow_extract_impl_set(struct unixctl_conn *conn, int argc,
> 
> #3 : Distcheck directory not valid? (linux gcc test 3.16 build. I cannot 
> explain this?)
> make: *** [distcheck] Error 1 
> 4490Makefile:5298: recipe for target 'distcheck' failed 
> 4491+ cat '*/_build/sub/tests/testsuite.log' 
> 4492cat: '*/_build/sub/tests/testsuite.log': No such file or directory 
> 4493Error: Process completed with exit code 1.> 
> SOLUTIONS:
> #1, likely to forward-decl the "dp_netdev_mutex" to make it available
> in the extract header file, and remove the "static" keyword so its no longer 
> limited
> to the dpif-netdev.c compilation unit.
> 
> #2 is a simple OVS_UNUSED as Eelco suggested during review.
> 
> #3, I'm not sure where the DistCheck issue arise from, it seems to be missing 
> directories
> during the test run? Input appreciated, as pushing & hoping tends to be a 
> tiresome
> and long process.

This is just a result of the previous build failure.  Build
never reached the testsuite phase, so there are no testsuite
logs there.  You should not see this problem once build is
fixed.

> 
> 
>> Best regards, Ilya Maximets.
> 
> Regards, -Harry
> 

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


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Van Haaren, Harry
> -Original Message-
> From: Ilya Maximets 
> Sent: Monday, July 12, 2021 2:25 PM
> To: Amber, Kumar ; ovs-dev@openvswitch.org
> Cc: f...@sysclose.org; echau...@redhat.com; i.maxim...@ovn.org; Van Haaren,
> Harry ; Ferriter, Cian ;
> Stokes, Ian 
> Subject: Re: [v9 01/12] dpif-netdev: Add command line and function pointer for
> miniflow extract
> 
> On 7/12/21 7:51 AM, kumar Amber wrote:
> > From: Kumar Amber 
> >
> > This patch introduces the MFEX function pointers which allows
> > the user to switch between different miniflow extract implementations
> > which are provided by the OVS based on optimized ISA CPU.
> >
> > The user can query for the available minflow extract variants available
> > for that CPU by following commands:
> >
> > $ovs-appctl dpif-netdev/miniflow-parser-get
> >
> > Similarly an user can set the miniflow implementation by the following
> > command :
> >
> > $ ovs-appctl dpif-netdev/miniflow-parser-set name
> >
> > This allows for more performance and flexibility to the user to choose
> > the miniflow implementation according to the needs.
> >
> > Signed-off-by: Kumar Amber 
> > Co-authored-by: Harry van Haaren 
> > Signed-off-by: Harry van Haaren 
> >
> > ---
> > v9:
> > - fix review comments from Flavio
> > v7:
> > - fix review comments(Eelco, Flavio)
> > v5:
> > - fix review comments(Ian, Flavio, Eelco)
> > - add enum to hold mfex indexes
> > - add new get and set implemenatations
> > - add Atomic set and get
> > ---
> 
> ovsrobot has issues with reporting the status right now, but this
> patch fails the build in GHA:
>   https://github.com/ovsrobot/ovs/actions/runs/1021787643

Thanks for linking on results.

I've spot-checked a bunch of the failing builds, and found 2 fixable code 
issues.
A few of the CI run's I can't find/explain the error, but I don't know of a good
way to "jump to the error" line, am I missing a trick, or is scrolling the whole
compiler output and checking errors the best method?

ISSUES:
#1 : OVS Requires Mutex issue (Linux clang test dpdk build)
1291../../lib/dpif-netdev-private-extract.h:87:53: error: use of undeclared 
identifier 'dp_netdev_mutex'; did you mean 'dp_netdev_input'? 
1292 size_t pmd_list_size) OVS_REQUIRES(dp_netdev_mutex);

#2 : Unused Argument (As from mailing list review comment too, linux gcc dpdk 
--enable-shared)
2353lib/dpif-netdev.c:1079:63: error: unused parameter ‘argc’ 
[-Werror=unused-parameter] 
2354 dpif_miniflow_extract_impl_set(struct unixctl_conn *conn, int argc,

#3 : Distcheck directory not valid? (linux gcc test 3.16 build. I cannot 
explain this?)
make: *** [distcheck] Error 1 
4490Makefile:5298: recipe for target 'distcheck' failed 
4491+ cat '*/_build/sub/tests/testsuite.log' 
4492cat: '*/_build/sub/tests/testsuite.log': No such file or directory 
4493Error: Process completed with exit code 1.

SOLUTIONS:
#1, likely to forward-decl the "dp_netdev_mutex" to make it available
in the extract header file, and remove the "static" keyword so its no longer 
limited
to the dpif-netdev.c compilation unit.

#2 is a simple OVS_UNUSED as Eelco suggested during review.

#3, I'm not sure where the DistCheck issue arise from, it seems to be missing 
directories
during the test run? Input appreciated, as pushing & hoping tends to be a 
tiresome
and long process.


> Best regards, Ilya Maximets.

Regards, -Harry
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Ilya Maximets
On 7/12/21 7:51 AM, kumar Amber wrote:
> From: Kumar Amber 
> 
> This patch introduces the MFEX function pointers which allows
> the user to switch between different miniflow extract implementations
> which are provided by the OVS based on optimized ISA CPU.
> 
> The user can query for the available minflow extract variants available
> for that CPU by following commands:
> 
> $ovs-appctl dpif-netdev/miniflow-parser-get
> 
> Similarly an user can set the miniflow implementation by the following
> command :
> 
> $ ovs-appctl dpif-netdev/miniflow-parser-set name
> 
> This allows for more performance and flexibility to the user to choose
> the miniflow implementation according to the needs.
> 
> Signed-off-by: Kumar Amber 
> Co-authored-by: Harry van Haaren 
> Signed-off-by: Harry van Haaren 
> 
> ---
> v9:
> - fix review comments from Flavio
> v7:
> - fix review comments(Eelco, Flavio)
> v5:
> - fix review comments(Ian, Flavio, Eelco)
> - add enum to hold mfex indexes
> - add new get and set implemenatations
> - add Atomic set and get
> ---

ovsrobot has issues with reporting the status right now, but this
patch fails the build in GHA:
  https://github.com/ovsrobot/ovs/actions/runs/1021787643

Best regards, Ilya Maximets.
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Flavio Leitner
On Mon, Jul 12, 2021 at 02:22:46PM +0200, Eelco Chaudron wrote:
> See some comments below…
> 
> For this patch series, I’m only looking at the diff from v6..v9, not a full 
> review.
> I will do basic compilation and some tests at the end.
> 
> Cheers,
> 
> Eelco
> 
> 
> On 12 Jul 2021, at 7:51, kumar Amber wrote:
> 
> > From: Kumar Amber 
> >
> > This patch introduces the MFEX function pointers which allows
> > the user to switch between different miniflow extract implementations
> > which are provided by the OVS based on optimized ISA CPU.
> >
> > The user can query for the available minflow extract variants available
> > for that CPU by following commands:
> >
> > $ovs-appctl dpif-netdev/miniflow-parser-get
> >
> > Similarly an user can set the miniflow implementation by the following
> > command :
> >
> > $ ovs-appctl dpif-netdev/miniflow-parser-set name
> >
> > This allows for more performance and flexibility to the user to choose
> > the miniflow implementation according to the needs.
> >
> > Signed-off-by: Kumar Amber 
> > Co-authored-by: Harry van Haaren 
> > Signed-off-by: Harry van Haaren 
> >
> > ---
> > v9:
> > - fix review comments from Flavio
> > v7:
> > - fix review comments(Eelco, Flavio)
> > v5:
> > - fix review comments(Ian, Flavio, Eelco)
> > - add enum to hold mfex indexes
> > - add new get and set implemenatations
> > - add Atomic set and get
> > ---
> > ---
> >  NEWS  |   1 +
> >  lib/automake.mk   |   2 +
> >  lib/dpif-netdev-avx512.c  |  31 +-
> >  lib/dpif-netdev-private-extract.c | 162 ++
> >  lib/dpif-netdev-private-extract.h | 111 
> >  lib/dpif-netdev-private-thread.h  |   8 ++
> >  lib/dpif-netdev.c | 105 +++
> >  7 files changed, 416 insertions(+), 4 deletions(-)
> >  create mode 100644 lib/dpif-netdev-private-extract.c
> >  create mode 100644 lib/dpif-netdev-private-extract.h
> >
> > diff --git a/NEWS b/NEWS
> > index 6cdccc715..b0f08e96d 100644
> > --- a/NEWS
> > +++ b/NEWS
> > @@ -32,6 +32,7 @@ Post-v2.15.0
> >   * Enable the AVX512 DPCLS implementation to use VPOPCNT instruction 
> > if the
> > CPU supports it. This enhances performance by using the native 
> > vpopcount
> > instructions, instead of the emulated version of vpopcount.
> > + * Add command line option to switch between MFEX function pointers.
> > - ovs-ctl:
> >   * New option '--no-record-hostname' to disable hostname configuration
> > in ovsdb on startup.
> > diff --git a/lib/automake.mk b/lib/automake.mk
> > index 3c9523c1a..53b8abc0f 100644
> > --- a/lib/automake.mk
> > +++ b/lib/automake.mk
> > @@ -118,6 +118,8 @@ lib_libopenvswitch_la_SOURCES = \
> > lib/dpif-netdev-private-dpcls.h \
> > lib/dpif-netdev-private-dpif.c \
> > lib/dpif-netdev-private-dpif.h \
> > +   lib/dpif-netdev-private-extract.c \
> > +   lib/dpif-netdev-private-extract.h \
> > lib/dpif-netdev-private-flow.h \
> > lib/dpif-netdev-private-thread.h \
> > lib/dpif-netdev-private.h \
> > diff --git a/lib/dpif-netdev-avx512.c b/lib/dpif-netdev-avx512.c
> > index 6f9aa8284..7772b7abf 100644
> > --- a/lib/dpif-netdev-avx512.c
> > +++ b/lib/dpif-netdev-avx512.c
> > @@ -149,6 +149,15 @@ dp_netdev_input_outer_avx512(struct 
> > dp_netdev_pmd_thread *pmd,
> >   * // do all processing (HWOL->MFEX->EMC->SMC)
> >   * }
> >   */
> > +
> > +/* Do a batch minfilow extract into keys. */
> > +uint32_t mf_mask = 0;
> > +miniflow_extract_func mfex_func;
> > +atomic_read_relaxed(>miniflow_extract_opt, _func);
> > +if (mfex_func) {
> > +mf_mask = mfex_func(packets, keys, batch_size, in_port, pmd);
> > +}
> > +
> >  uint32_t lookup_pkts_bitmask = (1ULL << batch_size) - 1;
> >  uint32_t iter = lookup_pkts_bitmask;
> >  while (iter) {
> > @@ -167,6 +176,13 @@ dp_netdev_input_outer_avx512(struct 
> > dp_netdev_pmd_thread *pmd,
> >  pkt_metadata_init(>md, in_port);
> >
> >  struct dp_netdev_flow *f = NULL;
> > +struct netdev_flow_key *key = [i];
> > +
> > +/* Check the minfiflow mask to see if the packet was correctly
> > + * classifed by vector mfex else do a scalar miniflow extract
> > + * for that packet.
> > + */
> > +bool mfex_hit = !!(mf_mask & (1 << i));
> >
> >  /* Check for a partial hardware offload match. */
> >  if (hwol_enabled) {
> > @@ -177,7 +193,13 @@ dp_netdev_input_outer_avx512(struct 
> > dp_netdev_pmd_thread *pmd,
> >  }
> >  if (f) {
> >  rules[i] = >cr;
> > -pkt_meta[i].tcp_flags = parse_tcp_flags(packet);
> > +/* If AVX512 MFEX already classified the packet, use it. */
> > +if (mfex_hit) {
> > +pkt_meta[i].tcp_flags = 
> > miniflow_get_tcp_flags(>mf);
> > +} else {
> > + 

Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread Eelco Chaudron
See some comments below…

For this patch series, I’m only looking at the diff from v6..v9, not a full 
review.
I will do basic compilation and some tests at the end.

Cheers,

Eelco


On 12 Jul 2021, at 7:51, kumar Amber wrote:

> From: Kumar Amber 
>
> This patch introduces the MFEX function pointers which allows
> the user to switch between different miniflow extract implementations
> which are provided by the OVS based on optimized ISA CPU.
>
> The user can query for the available minflow extract variants available
> for that CPU by following commands:
>
> $ovs-appctl dpif-netdev/miniflow-parser-get
>
> Similarly an user can set the miniflow implementation by the following
> command :
>
> $ ovs-appctl dpif-netdev/miniflow-parser-set name
>
> This allows for more performance and flexibility to the user to choose
> the miniflow implementation according to the needs.
>
> Signed-off-by: Kumar Amber 
> Co-authored-by: Harry van Haaren 
> Signed-off-by: Harry van Haaren 
>
> ---
> v9:
> - fix review comments from Flavio
> v7:
> - fix review comments(Eelco, Flavio)
> v5:
> - fix review comments(Ian, Flavio, Eelco)
> - add enum to hold mfex indexes
> - add new get and set implemenatations
> - add Atomic set and get
> ---
> ---
>  NEWS  |   1 +
>  lib/automake.mk   |   2 +
>  lib/dpif-netdev-avx512.c  |  31 +-
>  lib/dpif-netdev-private-extract.c | 162 ++
>  lib/dpif-netdev-private-extract.h | 111 
>  lib/dpif-netdev-private-thread.h  |   8 ++
>  lib/dpif-netdev.c | 105 +++
>  7 files changed, 416 insertions(+), 4 deletions(-)
>  create mode 100644 lib/dpif-netdev-private-extract.c
>  create mode 100644 lib/dpif-netdev-private-extract.h
>
> diff --git a/NEWS b/NEWS
> index 6cdccc715..b0f08e96d 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -32,6 +32,7 @@ Post-v2.15.0
>   * Enable the AVX512 DPCLS implementation to use VPOPCNT instruction if 
> the
> CPU supports it. This enhances performance by using the native 
> vpopcount
> instructions, instead of the emulated version of vpopcount.
> + * Add command line option to switch between MFEX function pointers.
> - ovs-ctl:
>   * New option '--no-record-hostname' to disable hostname configuration
> in ovsdb on startup.
> diff --git a/lib/automake.mk b/lib/automake.mk
> index 3c9523c1a..53b8abc0f 100644
> --- a/lib/automake.mk
> +++ b/lib/automake.mk
> @@ -118,6 +118,8 @@ lib_libopenvswitch_la_SOURCES = \
>   lib/dpif-netdev-private-dpcls.h \
>   lib/dpif-netdev-private-dpif.c \
>   lib/dpif-netdev-private-dpif.h \
> + lib/dpif-netdev-private-extract.c \
> + lib/dpif-netdev-private-extract.h \
>   lib/dpif-netdev-private-flow.h \
>   lib/dpif-netdev-private-thread.h \
>   lib/dpif-netdev-private.h \
> diff --git a/lib/dpif-netdev-avx512.c b/lib/dpif-netdev-avx512.c
> index 6f9aa8284..7772b7abf 100644
> --- a/lib/dpif-netdev-avx512.c
> +++ b/lib/dpif-netdev-avx512.c
> @@ -149,6 +149,15 @@ dp_netdev_input_outer_avx512(struct dp_netdev_pmd_thread 
> *pmd,
>   * // do all processing (HWOL->MFEX->EMC->SMC)
>   * }
>   */
> +
> +/* Do a batch minfilow extract into keys. */
> +uint32_t mf_mask = 0;
> +miniflow_extract_func mfex_func;
> +atomic_read_relaxed(>miniflow_extract_opt, _func);
> +if (mfex_func) {
> +mf_mask = mfex_func(packets, keys, batch_size, in_port, pmd);
> +}
> +
>  uint32_t lookup_pkts_bitmask = (1ULL << batch_size) - 1;
>  uint32_t iter = lookup_pkts_bitmask;
>  while (iter) {
> @@ -167,6 +176,13 @@ dp_netdev_input_outer_avx512(struct dp_netdev_pmd_thread 
> *pmd,
>  pkt_metadata_init(>md, in_port);
>
>  struct dp_netdev_flow *f = NULL;
> +struct netdev_flow_key *key = [i];
> +
> +/* Check the minfiflow mask to see if the packet was correctly
> + * classifed by vector mfex else do a scalar miniflow extract
> + * for that packet.
> + */
> +bool mfex_hit = !!(mf_mask & (1 << i));
>
>  /* Check for a partial hardware offload match. */
>  if (hwol_enabled) {
> @@ -177,7 +193,13 @@ dp_netdev_input_outer_avx512(struct dp_netdev_pmd_thread 
> *pmd,
>  }
>  if (f) {
>  rules[i] = >cr;
> -pkt_meta[i].tcp_flags = parse_tcp_flags(packet);
> +/* If AVX512 MFEX already classified the packet, use it. */
> +if (mfex_hit) {
> +pkt_meta[i].tcp_flags = miniflow_get_tcp_flags(>mf);
> +} else {
> +pkt_meta[i].tcp_flags = parse_tcp_flags(packet);
> +}
> +
>  pkt_meta[i].bytes = dp_packet_size(packet);
>  phwol_hits++;
>  hwol_emc_smc_hitmask |= (1 << i);
> @@ -185,9 +207,10 @@ dp_netdev_input_outer_avx512(struct dp_netdev_pmd_thread 
> *pmd,

Re: [ovs-dev] [v9 01/12] dpif-netdev: Add command line and function pointer for miniflow extract

2021-07-12 Thread 0-day Robot
Bleep bloop.  Greetings kumar Amber, I am a robot and I have tried out your 
patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


build:
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. 
   -I ./include -I ./include -I ./lib -I ./lib-Wstrict-prototypes -Wall 
-Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security 
-Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align 
-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes 
-Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror -Werror   -g 
-O2 -DHAVE_LD_AVX512_GOOD -MT lib/dpif-netdev-lookup.lo -MD -MP -MF 
$depbase.Tpo -c -o lib/dpif-netdev-lookup.lo lib/dpif-netdev-lookup.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I ./include -I ./include 
-I ./lib -I ./lib -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare 
-Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter 
-Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition 
-Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -Wshadow 
-Werror -Werror -g -O2 -DHAVE_LD_AVX512_GOOD -MT lib/dpif-netdev-lookup.lo -MD 
-MP -MF lib/.deps/dpif-netdev-lookup.Tpo -c lib/dpif-netdev-lookup.c -o 
lib/dpif-netdev-lookup.o
depbase=`echo lib/dpif-netdev-lookup-autovalidator.lo | sed 
's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. 
   -I ./include -I ./include -I ./lib -I ./lib-Wstrict-prototypes -Wall 
-Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security 
-Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align 
-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes 
-Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror -Werror   -g 
-O2 -DHAVE_LD_AVX512_GOOD -MT lib/dpif-netdev-lookup-autovalidator.lo -MD -MP 
-MF $depbase.Tpo -c -o lib/dpif-netdev-lookup-autovalidator.lo 
lib/dpif-netdev-lookup-autovalidator.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I ./include -I ./include 
-I ./lib -I ./lib -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare 
-Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter 
-Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition 
-Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -Wshadow 
-Werror -Werror -g -O2 -DHAVE_LD_AVX512_GOOD -MT 
lib/dpif-netdev-lookup-autovalidator.lo -MD -MP -MF 
lib/.deps/dpif-netdev-lookup-autovalidator.Tpo -c 
lib/dpif-netdev-lookup-autovalidator.c -o lib/dpif-netdev-lookup-autovalidator.o
depbase=`echo lib/dpif-netdev-lookup-generic.lo | sed 
's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. 
   -I ./include -I ./include -I ./lib -I ./lib-Wstrict-prototypes -Wall 
-Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security 
-Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align 
-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes 
-Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror -Werror   -g 
-O2 -DHAVE_LD_AVX512_GOOD -MT lib/dpif-netdev-lookup-generic.lo -MD -MP -MF 
$depbase.Tpo -c -o lib/dpif-netdev-lookup-generic.lo 
lib/dpif-netdev-lookup-generic.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I ./include -I ./include 
-I ./lib -I ./lib -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare 
-Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter 
-Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition 
-Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -Wshadow 
-Werror -Werror -g -O2 -DHAVE_LD_AVX512_GOOD -MT 
lib/dpif-netdev-lookup-generic.lo -MD -MP -MF 
lib/.deps/dpif-netdev-lookup-generic.Tpo -c lib/dpif-netdev-lookup-generic.c -o 
lib/dpif-netdev-lookup-generic.o
depbase=`echo lib/dpif-netdev.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. 
   -I ./include -I ./include -I ./lib -I ./lib-Wstrict-prototypes -Wall 
-Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security 
-Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align 
-Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes 
-Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror -Werror   -g 
-O2 -DHAVE_LD_AVX512_GOOD -MT lib/dpif-netdev.lo -MD -MP -MF $depbase.Tpo -c -o 
lib/dpif-netdev.lo lib/dpif-netdev.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I ./include -I ./include 
-I ./lib -I ./lib -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare 
-Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter 
-Wbad-function-cast