>Thanks for the patch, I’m looking forward to use new
>DPDK 2.0 features!
>
Hi Daniele - sure, no problem :)

>I have some doubts about the required -mssse3 option.
>The main point is: does DPDK always requires a CPU
>with SSSE3?
>
>I believe the answer is yes (Please correct me if I’m wrong).
>If CONFIG_RTE_MACHINE is set to “default", MACHINE_CFLAGS are
>set to ‘-march=core2’ in mk/machine/default/rte.vars.mk.
>If I remove -march=core2, rte_memcpy.h fails to compile.
>(I’m using GCC 4.9.1 from Debian testing)
>

Your hypothesis seems sound - I haven't found any concrete documentation 
regarding the minimum-required CPU microarchitecture for DPDK, but I've spoken 
briefly to some colleagues in the DPDK team who have anecdotally confirmed 
this; I'll dig around tomorrow and come back with something concrete.
 
>If this is the case (DPDK requires at least a core2 CPU, which
>should support SSSE3 extension according to
>https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/i386-and-x86-64-Options.html),
>I would prefer adding the ‘-mssse3’ option to OVS_CFLAGS in
>OVS_CHECK_DPDK (acinclude.m4)
>

This is the first solution that I'd considered, but tbh I wasn't sure if it was 
the right approach at the time. In the end I implemented an additional config 
option instead - there's some discussion on that here: 
http://openvswitch.org/pipermail/dev/2015-March/053091.html (FYI, this thread 
spans both the March and April archives). For what it's worth, I agree with 
your approach - we probably need Ben and/or Pravin to weigh in on the preferred 
solution.

>
>Last thing: on my system, clang (3.5.0) still needs
>-Wno-error=cast-align to compile rte_memcpy.h.
>
I generally use gcc, but I'll look into this tomorrow also. Thanks for your 
input!

>What do you think?
>
>Daniele
>
>> On 8 Apr 2015, at 16:34, Mark Kavanagh <mark.b.kavan...@intel.com> wrote:
>>
>> Update relevant artifacts to add support for DPDK v2.0.0
>> - INSTALL.DPDK.md
>> - travis build script
>> - netdev-dpdk: fix build with unified offload types in DPDK v2.0.0
>>
>> Note that this breaks compatibility with DPDK v1.8.0
>>
>> Signed-off-by: Mark Kavanagh <mark.b.kavan...@intel.com>
>> Signed-off-by: Panu Matilainen <pmati...@redhat.com>
>> ---
>> .travis/build.sh  |    6 +++---
>> INSTALL.DPDK.md   |   10 +++++++---
>> lib/netdev-dpdk.c |    3 +--
>> 3 files changed, 11 insertions(+), 8 deletions(-)
>>
>> diff --git a/.travis/build.sh b/.travis/build.sh
>> index b6b701c..b6fe0eb 100755
>> --- a/.travis/build.sh
>> +++ b/.travis/build.sh
>> @@ -68,11 +68,11 @@ fi
>>
>> if [ "$DPDK" ]; then
>>     if [ -z "$DPDK_VER" ]; then
>> -        DPDK_VER="1.8.0"
>> +        DPDK_VER="2.0.0"
>>     fi
>>     install_dpdk $DPDK_VER
>> -    # Disregard bad function casts until DPDK is fixed
>> -    CFLAGS="$CFLAGS -Wno-error=bad-function-cast -Wno-error=cast-align"
>> +    # Support older versions of GCC
>> +    CFLAGS="-mssse3"
>>     EXTRA_OPTS+="--with-dpdk=./dpdk-$DPDK_VER/build"
>> elif [ $CC != "clang" ]; then
>>     # DPDK headers currently trigger sparse errors
>> diff --git a/INSTALL.DPDK.md b/INSTALL.DPDK.md
>> index 60889d0..8e6f6af 100644
>> --- a/INSTALL.DPDK.md
>> +++ b/INSTALL.DPDK.md
>> @@ -16,13 +16,13 @@ OVS needs a system with 1GB hugepages support.
>> Building and Installing:
>> ------------------------
>>
>> -Required DPDK 1.8.0, `fuse`, `fuse-devel` (`libfuse-dev` on Debian/Ubuntu)
>> +Required DPDK 2.0, `fuse`, `fuse-devel` (`libfuse-dev` on Debian/Ubuntu)
>>
>> 1. Configure build & install DPDK:
>>   1. Set `$DPDK_DIR`
>>
>>      ```
>> -     export DPDK_DIR=/usr/src/dpdk-1.8.0
>> +     export DPDK_DIR=/usr/src/dpdk-2.0
>>      cd $DPDK_DIR
>>      ```
>>
>> @@ -66,8 +66,12 @@ Required DPDK 1.8.0, `fuse`, `fuse-devel` (`libfuse-dev` 
>> on
>Debian/Ubuntu)
>>    cd $(OVS_DIR)/openvswitch
>>    ./boot.sh
>>    ./configure --with-dpdk=$DPDK_BUILD
>> -   make
>> +   make [CFLAGS="-g -O2 -mssse3"]
>>    ```
>> +Note that users of older versions of GCC  must pass additional CFLAGS
>> +("-g -O2 -mssse3") to 'make'. This issue has been observed with GCC versions
>> +<= 4.8.3, and is not present in GCC v4.9.2 - applicability to interim 
>> versions is
>> +untested.
>>
>> To have better performance one can enable aggressive compiler optimizations 
>> and
>> use the special instructions(popcnt, crc32) that may not be available on all
>> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
>> index f69154b..5ab119a 100644
>> --- a/lib/netdev-dpdk.c
>> +++ b/lib/netdev-dpdk.c
>> @@ -117,8 +117,7 @@ static const struct rte_eth_conf port_conf = {
>>     .rx_adv_conf = {
>>         .rss_conf = {
>>             .rss_key = NULL,
>> -            .rss_hf = ETH_RSS_IPV4_TCP | ETH_RSS_IPV4 | ETH_RSS_IPV6
>> -                    | ETH_RSS_IPV4_UDP | ETH_RSS_IPV6_TCP | 
>> ETH_RSS_IPV6_UDP,
>> +            .rss_hf = ETH_RSS_IP | ETH_RSS_UDP | ETH_RSS_TCP,
>>         },
>>     },
>>     .txmode = {
>> --
>> 1.7.4.1
>>
>> _______________________________________________
>> dev mailing list
>> dev@openvswitch.org
>> https://urldefense.proofpoint.com/v2/url?u=http-
>3A__openvswitch.org_mailman_listinfo_dev&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-
>YihVMNtXt-
>uEs&r=SmB5nZacmXNq0gKCC1s_Cw5yUNjxgD4v5kJqZ2uWLlE&m=b6TCcALkXJRwrk15b5jrDqbBpGEWbDBxnXBSKd
>AYnjo&s=cHDYfYnLsmOAsNIfukJ5AjjEtU6JOjTPX-tyPT7-4kY&e=

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to