[ovs-dev] [PATCHv3] DPDK: add support for v2.0.0

Thomas F Herbert thomasfherbert at gmail.com
Fri Apr 24 01:57:32 UTC 2015


On 4/23/15 4:58 PM, Kavanagh, Mark B wrote:
> Hi all,
>
> Just a quick poll: are the resolutions to review comments in this patch acceptable to everyone?
>
> If I've missed anything, or are there any additional opens that need to be addressed before it can be merged, just let me know.
>
> Thanks in advance,
> Mark
Mark,

I have been running it. It seems to work well and is quite stable. I 
vote for merge. I don't see a reason to stay with 1.8.

--TFH
>
>> Update relevant artifacts to add support for DPDK v2.0.0
>> - INSTALL.DPDK.md
>> - travis build script
>> - acinclude.m4: add 'mssse3' flag to OVS_CFLAGS
>> - netdev-dpdk: fix build with unified offload types in DPDK v2.0.0
>>
>> Note that this breaks compatibility with DPDK v1.8.0
>>
>> v1: - update DPDK version & build instructions in INSTALL.DPDK.md
>>     - update DPDK version and remove compile flags in travis/build.sh
>>     - fix build with unified offload types in DPDK v2.0.0
>>
>> v2: - add mssse3 flag to OVS_CFLAGS in acinclude.m4
>>     - reinstate '-Wno-cast-align' compile flag for clang
>>     - add details of vhost user support limitations to INSTALL.DPDK.md
>>     - refactor travis/build.sh to reflect these changes
>>
>> v3: -correct minor typos in commit message
>>
>> Signed-off-by: Mark Kavanagh <mark.b.kavanagh at intel.com>
>> Signed-off-by: Panu Matilainen <pmatilai at redhat.com>
>> ---
>> .travis/build.sh  | 11 +++++++----
>> INSTALL.DPDK.md   | 13 +++++++++----
>> acinclude.m4      |  2 +-
>> lib/netdev-dpdk.c |  3 +--
>> 4 files changed, 18 insertions(+), 11 deletions(-)
>>
>> diff --git a/.travis/build.sh b/.travis/build.sh
>> index 46c5c4d..c7796e1 100755
>> --- a/.travis/build.sh
>> +++ b/.travis/build.sh
>> @@ -49,6 +49,7 @@ function install_dpdk()
>>      find ./ -type f | xargs sed -i 's/max-inline-insns-single=100/max-inline-insns-
>> single=400/'
>>      sed -ri 's,(CONFIG_RTE_BUILD_COMBINE_LIBS=).*,\1y,' config/common_linuxapp
>>      sed -ri 's,(CONFIG_RTE_LIBRTE_VHOST=).*,\1y,' config/common_linuxapp
>> +    sed -ri 's,(CONFIG_RTE_LIBRTE_VHOST_USER=).*,\1n,' config/common_linuxapp
>>      sed -ri '/CONFIG_RTE_LIBNAME/a CONFIG_RTE_BUILD_FPIC=y' config/common_linuxapp
>>      sed -ri '/EXECENV_CFLAGS  = -pthread -fPIC/{s/$/\nelse ifeq
>> ($(CONFIG_RTE_BUILD_FPIC),y)/;s/$/\nEXECENV_CFLAGS  = -pthread -fPIC/}' mk/exec-
>> env/linuxapp/rte.vars.mk
>>      make config CC=gcc T=x86_64-native-linuxapp-gcc
>> @@ -68,12 +69,14 @@ 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"
>> -    EXTRA_OPTS+="--with-dpdk=./dpdk-$DPDK_VER/build"
>> +    if [ "$CC" = "clang" ]; then
>> +        # Disregard cast alignment errors until DPDK is fixed
>> +        EXTRA_OPTS="$EXTRA_OPTS -Wno-cast-align"
>> +    fi
>> +    EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=./dpdk-$DPDK_VER/build"
>> elif [ "$CC" != "clang" ]; then
>>      # DPDK headers currently trigger sparse errors
>>      SPARSE_FLAGS="$SPARSE_FLAGS -Wsparse-error"
>> diff --git a/INSTALL.DPDK.md b/INSTALL.DPDK.md
>> index aae97a5..899763f 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
>>       ```
>>
>> @@ -32,9 +32,12 @@ Required DPDK 1.8.0, `fuse`, `fuse-devel` (`libfuse-dev` on
>> Debian/Ubuntu)
>>       `CONFIG_RTE_BUILD_COMBINE_LIBS=y`
>>
>>       Update `config/common_linuxapp` so that DPDK is built with vhost
>> -     libraries:
>> +     libraries; currently, OVS only supports vhost-cuse, so DPDK vhost-user
>> +     libraries should be explicitly turned off (they are enabled by default
>> +     in DPDK 2.0).
>>
>>       `CONFIG_RTE_LIBRTE_VHOST=y`
>> +     `CONFIG_RTE_LIBRTE_VHOST_USER=n`
>>
>>       Then run `make install` to build and install the library.
>>       For default install without IVSHMEM:
>> @@ -65,10 +68,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
>> +   ./configure --with-dpdk=$DPDK_BUILD [CFLAGS="-g -O2 -Wno-cast-align"]
>>     make
>>     ```
>>
>> +   Note: 'clang' users may specify the '-Wno-cast-align' flag to suppress DPDK cast-align
>> warnings.
>> +
>> To have better performance one can enable aggressive compiler optimizations and
>> use the special instructions(popcnt, crc32) that may not be available on all
>> machines. Instead of typing `make`, type:
>> diff --git a/acinclude.m4 b/acinclude.m4
>> index b09f2f2..5988c1f 100644
>> --- a/acinclude.m4
>> +++ b/acinclude.m4
>> @@ -205,7 +205,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [
>>      CFLAGS="$ovs_save_CFLAGS"
>>      LDFLAGS="$ovs_save_LDFLAGS"
>>      OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR"
>> -    OVS_CFLAGS="$OVS_CFLAGS -I$DPDK_INCLUDE"
>> +    OVS_CFLAGS="$OVS_CFLAGS -I$DPDK_INCLUDE -mssse3"
>>
>>      # DPDK pmd drivers are not linked unless --whole-archive is used.
>>      #
>> 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.9.3
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev


-- 
Thomas F. Herbert




More information about the dev mailing list