upgrade openvswitch from 2.9.0 to 2.11.0 version

DPDK is upgraded from 17.11 to 18.11 together with openvswitch.
With this upgrade, DPDK for Mellanox NIC support is enabled again,
which is disabled during CentOS 7.6 upgrade, due to DPDK 17.11 cannot
pass build with 7.6 kernel.
Due to srpm for openvswitch 2.11 is not available in centos repo yet,
tarball is used instead. The spec file and other configuration files
(three script files and x86_64-native-linuxapp-gcc-config)
from 2.9.0 srpm are kept and updated for 2.11.0 openvswitch. These
configuration files are for dpdk build together with openvswitch.
Meta patches are applied to the spec file directly.
For the 3 source patches, 2 of them are abandoned since new DPDK
already include them. Another one(run-services-as-root-user.patch)
is rebased for 2.11 version.

Test:
Pass build, multi-node 1+1 and duplex deploy test.
ovs-vsctl shows vswitch status is correct, and vms could ping each other.

Story: 2004743
Task: 29196
Depends-On: https://review.opendev.org/642673
Change-Id: I1fc28f1c7f93e1da2f8e7ac0dfb5d8e294d53c90
Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
This commit is contained in:
Shuicheng Lin 2019-03-01 20:06:15 +08:00
parent c0f3e873be
commit 76307e00e8
18 changed files with 1867 additions and 416 deletions

View File

@ -1,3 +1,6 @@
COPY_LIST="files/*"
COPY_LIST="files/* \
$PATCHES_BASE/* \
$STX_BASE/downloads/openvswitch-2.11.0.tar.gz \
$STX_BASE/downloads/dpdk-18.11.tar.xz"
TIS_PATCH_VER=1
BUILD_IS_SLOW=12

View File

@ -1,25 +0,0 @@
From cfa7930a4bf0b0e798f1492cd75e37f66c1f5319 Mon Sep 17 00:00:00 2001
From: Matt Peters <matt.peters@windriver.com>
Date: Mon, 28 May 2018 08:14:24 -0500
Subject: [PATCH] update package versioning for TIS format
---
SPECS/openvswitch.spec | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/SPECS/openvswitch.spec b/SPECS/openvswitch.spec
index e007992..71b4634 100644
--- a/SPECS/openvswitch.spec
+++ b/SPECS/openvswitch.spec
@@ -46,7 +46,7 @@ URL: http://www.openvswitch.org/
# Carried over from 2.6.1 CBS builds, introduced to win over 2.6.90
Epoch: 1
Version: 2.9.0
-Release: 3%{?commit0:.%{date}git%{shortcommit0}}%{?dist}
+Release: 3.el7%{?_tis_dist}.%{tis_patch_ver}
# Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the
# lib/sflow*.[ch] files are SISSL
--
1.8.3.1

View File

@ -1,48 +0,0 @@
From f1173c242506fb5d1b311efe2f7d657b04ae6b24 Mon Sep 17 00:00:00 2001
From: Matt Peters <matt.peters@windriver.com>
Date: Fri, 15 Jun 2018 13:37:14 -0500
Subject: [PATCH] dpdk usertools
---
SPECS/openvswitch.spec | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/SPECS/openvswitch.spec b/SPECS/openvswitch.spec
index 71b4634..22bdec9 100644
--- a/SPECS/openvswitch.spec
+++ b/SPECS/openvswitch.spec
@@ -150,6 +150,7 @@ BuildRequires: libcap-ng libcap-ng-devel
%ifarch %{dpdkarches}
# DPDK driver dependencies
BuildRequires: zlib-devel libpcap-devel numactl-devel
+Requires: python-pyelftools
# Virtual provide for depending on DPDK-enabled OVS
Provides: openvswitch-dpdk = %{version}-%{release}
@@ -421,6 +422,13 @@ install -p -D -m 0755 \
touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/conf.db
touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/system-id.conf
+%if %{with dpdk}
+%ifarch %{dpdkarches}
+ install -m 0755 %{dpdkdir}-%{dpdkver}/usertools/dpdk-pmdinfo.py $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/dpdk-pmdinfo.py
+ install -m 0755 %{dpdkdir}-%{dpdkver}/usertools/dpdk-devbind.py $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/dpdk-devbind.py
+%endif
+%endif
+
# remove unpackaged files
rm -f $RPM_BUILD_ROOT/%{_bindir}/ovs-benchmark \
$RPM_BUILD_ROOT/%{_bindir}/ovs-docker \
@@ -656,6 +664,9 @@ fi
%{_datadir}/openvswitch/scripts/ovs-vtep
%{_datadir}/openvswitch/scripts/ovs-ctl
%{_datadir}/openvswitch/scripts/ovs-systemd-reload
+%{_datadir}/openvswitch/scripts/dpdk-pmdinfo.py
+%{_datadir}/openvswitch/scripts/dpdk-devbind.py
+%exclude %{_datadir}/openvswitch/scripts/*.py[oc]
%config %{_datadir}/openvswitch/vswitch.ovsschema
%config %{_datadir}/openvswitch/vtep.ovsschema
%{_bindir}/ovs-appctl
--
1.8.3.1

View File

@ -1,49 +0,0 @@
From 45378c59ffd64d2cf17aa2944489075e6940ab39 Mon Sep 17 00:00:00 2001
From: Matt Peters <matt.peters@windriver.com>
Date: Tue, 29 May 2018 11:58:36 -0500
Subject: [PATCH] 0003-run-services-as-root-user.patch
---
SPECS/openvswitch.spec | 19 +------------------
1 file changed, 1 insertion(+), 18 deletions(-)
diff --git a/SPECS/openvswitch.spec b/SPECS/openvswitch.spec
index 6950479..6fc2b67 100644
--- a/SPECS/openvswitch.spec
+++ b/SPECS/openvswitch.spec
@@ -103,6 +103,7 @@ ExclusiveArch: x86_64 aarch64 ppc64le s390x
%define dpdktarget %{dpdk_mach_arch}-%{dpdk_mach_tmpl}-linuxapp-gcc
# ovs-patches
+Patch01: run-services-as-root-user.patch
# OVS (including OVN) backports (0 - 300)
@@ -508,24 +509,6 @@ rm -rf $RPM_BUILD_ROOT
fi
%endif
-%post
-if [ $1 -eq 1 ]; then
- getent passwd openvswitch >/dev/null || \
- useradd -r -d / -s /sbin/nologin -c "Open vSwitch Daemons" openvswitch
-
- sed -i 's:^#OVS_USER_ID=:OVS_USER_ID=:' /etc/sysconfig/openvswitch
-
- getent group hugetlbfs >/dev/null || \
- groupadd hugetlbfs
- usermod -a -G hugetlbfs openvswitch
- sed -i \
- 's@OVS_USER_ID="openvswitch:openvswitch"@OVS_USER_ID="openvswitch:hugetlbfs"@'\
- /etc/sysconfig/openvswitch
-
- # In the case of upgrade, this is not needed.
- chown -R openvswitch:openvswitch /etc/openvswitch
-fi
-
%if 0%{?systemd_post:1}
%systemd_post %{name}.service
%else
--
1.8.3.1

View File

@ -1,25 +0,0 @@
From 39471b1f12131cfa74e272e73c38eb830d89f1bd Mon Sep 17 00:00:00 2001
From: Matt Peters <matt.peters@windriver.com>
Date: Tue, 12 Jun 2018 14:41:25 -0500
Subject: [PATCH] rpm check with condition
---
SPECS/openvswitch.spec | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/SPECS/openvswitch.spec b/SPECS/openvswitch.spec
index c51d53f..432c9ed 100644
--- a/SPECS/openvswitch.spec
+++ b/SPECS/openvswitch.spec
@@ -25,7 +25,7 @@
# https://bugzilla.redhat.com/show_bug.cgi?id=1105458#c10
# "ofproto-dpif - select group with dp_hash selection method" test is broken on armv7lh
%ifarch x86_64 aarch64 ppc64le
-%bcond_without check
+%bcond_with check
%else
%bcond_with check
%endif
--
1.8.3.1

View File

@ -1,45 +0,0 @@
diff --git a/SOURCES/x86_64-native-linuxapp-gcc-config b/SOURCES/x86_64-native-linuxapp-gcc-config
index f81d420..eab161c 100644
--- a/SOURCES/x86_64-native-linuxapp-gcc-config
+++ b/SOURCES/x86_64-native-linuxapp-gcc-config
@@ -197,12 +197,12 @@ CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
-CONFIG_RTE_LIBRTE_MLX4_PMD=n
+CONFIG_RTE_LIBRTE_MLX4_PMD=y
CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
-CONFIG_RTE_LIBRTE_MLX5_PMD=n
+CONFIG_RTE_LIBRTE_MLX5_PMD=y
CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
# Compile burst-oriented Broadcom PMD driver
diff --git a/SPECS/openvswitch.spec b/SPECS/openvswitch.spec
index 29255d5..f392e95 100644
--- a/SPECS/openvswitch.spec
+++ b/SPECS/openvswitch.spec
@@ -151,6 +151,7 @@ BuildRequires: libcap-ng libcap-ng-devel
%ifarch %{dpdkarches}
# DPDK driver dependencies
BuildRequires: zlib-devel libpcap-devel numactl-devel
+BuildRequires: rdma-core-devel
Requires: python-pyelftools
# Virtual provide for depending on DPDK-enabled OVS
@@ -352,7 +353,12 @@ cd -
--dpdk \
< rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \
> rhel/usr_lib_systemd_system_ovs-vswitchd.service
-make %{?_smp_mflags}
+make %{?_smp_mflags} \
+%if %{with dpdk}
+%ifarch %{dpdkarches}
+ LDFLAGS="-libverbs -lmlx4 -lmlx5"
+%endif
+%endif
%install
rm -rf $RPM_BUILD_ROOT

View File

@ -1,25 +0,0 @@
From 78489fa5c3e98ac9db6244a6707622b4603bf0cb Mon Sep 17 00:00:00 2001
From: Hayde Martinez <hayde.martinez.landa@intel.com>
Date: Thu, 11 Oct 2018 14:44:00 -0500
Subject: [PATCH] iommu-width-fix
Signed-off-by: Hayde Martinez <hayde.martinez.landa@intel.com>
---
SPECS/openvswitch.spec | 1 +
1 file changed, 1 insertion(+)
diff --git a/SPECS/openvswitch.spec b/SPECS/openvswitch.spec
index 29255d5..a3a1c87 100644
--- a/SPECS/openvswitch.spec
+++ b/SPECS/openvswitch.spec
@@ -104,6 +104,7 @@ ExclusiveArch: x86_64 aarch64 ppc64le s390x
# ovs-patches
Patch01: run-services-as-root-user.patch
+Patch02: iommu-width-fix.patch
# OVS (including OVN) backports (0 - 300)
--
2.7.4

View File

@ -1,25 +0,0 @@
From 5cabd4876e772f59a18a71a15f8fdfac0b0cf0ea Mon Sep 17 00:00:00 2001
From: Steven Webster <steven.webster@windriver.com>
Date: Wed, 17 Oct 2018 09:54:53 -0400
Subject: [PATCH] net-mlx5-fix-memory-region-cache-lookup
---
SPECS/openvswitch.spec | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/SPECS/openvswitch.spec b/SPECS/openvswitch.spec
index f286a13..6d95f35 100644
--- a/SPECS/openvswitch.spec
+++ b/SPECS/openvswitch.spec
@@ -123,7 +123,7 @@ Patch422: 0003-vhost-extract-virtqueue-cleaning-and-freeing-functio.patch
Patch423: 0004-vhost-destroy-unused-virtqueues-when-multiqueue-not-.patch
Patch424: 0005-vhost-add-flag-for-built-in-virtio-driver.patch
Patch425: 0006-vhost-drop-virtqueues-only-with-built-in-virtio-driv.patch
-
+Patch426: net-mlx5-fix-memory-region-cache-lookup.patch
BuildRequires: gcc
BuildRequires: python2-sphinx
--
1.8.3.1

View File

@ -1,6 +0,0 @@
0001-update-package-versioning-for-TIS-format.patch
0002-dpdk-usertools.patch
0003-run-services-as-root-user.patch
0004-rpm-check-with-condition.patch
0006-iommu-width-fix.patch
0007-net-mlx5-fix-memory-region-cache-lookup.patch

File diff suppressed because it is too large Load Diff

View File

@ -1,131 +0,0 @@
--- openvswitch-2.9.0/dpdk-17.11/drivers/bus/pci/linux/pci.c 2017-11-15 18:00:28.000000000 +0000
+++ openvswitch-2.9.0p/dpdk-17.11/drivers/bus/pci/linux/pci.c 2018-10-10 17:59:58.370080207 +0000
@@ -576,6 +576,86 @@
return 0;
}
+
+#if defined(RTE_ARCH_X86)
+static bool
+pci_one_device_iommu_support_va(struct rte_pci_device *dev)
+{
+#define VTD_CAP_MGAW_SHIFT 16
+#define VTD_CAP_MGAW_MASK (0x3fULL << VTD_CAP_MGAW_SHIFT)
+#define X86_VA_WIDTH 47 /* From Documentation/x86/x86_64/mm.txt */
+ struct rte_pci_addr *addr = &dev->addr;
+ char filename[PATH_MAX];
+ FILE *fp;
+ uint64_t mgaw, vtd_cap_reg = 0;
+
+ snprintf(filename, sizeof(filename),
+ "%s/" PCI_PRI_FMT "/iommu/intel-iommu/cap",
+ rte_pci_get_sysfs_path(), addr->domain, addr->bus, addr->devid,
+ addr->function);
+ if (access(filename, F_OK) == -1) {
+ /* We don't have an Intel IOMMU, assume VA supported*/
+ return true;
+ }
+
+ /* We have an intel IOMMU */
+ fp = fopen(filename, "r");
+ if (fp == NULL) {
+ RTE_LOG(ERR, EAL, "%s(): can't open %s\n", __func__, filename);
+ return false;
+ }
+
+ if (fscanf(fp, "%" PRIx64, &vtd_cap_reg) != 1) {
+ RTE_LOG(ERR, EAL, "%s(): can't read %s\n", __func__, filename);
+ fclose(fp);
+ return false;
+ }
+
+ fclose(fp);
+
+ mgaw = ((vtd_cap_reg & VTD_CAP_MGAW_MASK) >> VTD_CAP_MGAW_SHIFT) + 1;
+ if (mgaw < X86_VA_WIDTH)
+ return false;
+
+ return true;
+}
+#elif defined(RTE_ARCH_PPC_64)
+static bool
+pci_one_device_iommu_support_va(__rte_unused struct rte_pci_device *dev)
+{
+ return false;
+}
+#else
+static bool
+pci_one_device_iommu_support_va(__rte_unused struct rte_pci_device *dev)
+{
+ return true;
+}
+#endif
+
+/*
+ * * All devices IOMMUs support VA as IOVA
+ * */
+static bool
+pci_devices_iommu_support_va(void)
+{
+ struct rte_pci_device *dev = NULL;
+ struct rte_pci_driver *drv = NULL;
+
+ FOREACH_DRIVER_ON_PCIBUS(drv) {
+ FOREACH_DEVICE_ON_PCIBUS(dev) {
+ if (!rte_pci_match(drv, dev))
+ continue;
+ if (!pci_one_device_iommu_support_va(dev))
+ return false;
+ }
+ }
+ return true;
+}
+
+
+
+
/*
* Get iommu class of PCI devices on the bus.
*/
@@ -586,12 +666,7 @@
bool is_vfio_noiommu_enabled = true;
bool has_iova_va;
bool is_bound_uio;
- bool spapr_iommu =
-#if defined(RTE_ARCH_PPC_64)
- true;
-#else
- false;
-#endif
+ bool iommu_no_va;
is_bound = pci_one_device_is_bound();
if (!is_bound)
@@ -599,13 +674,14 @@
has_iova_va = pci_one_device_has_iova_va();
is_bound_uio = pci_one_device_bound_uio();
+ iommu_no_va = !pci_devices_iommu_support_va();
#ifdef VFIO_PRESENT
is_vfio_noiommu_enabled = rte_vfio_noiommu_is_enabled() == true ?
true : false;
#endif
if (has_iova_va && !is_bound_uio && !is_vfio_noiommu_enabled &&
- !spapr_iommu)
+ !iommu_no_va)
return RTE_IOVA_VA;
if (has_iova_va) {
@@ -614,8 +690,8 @@
RTE_LOG(WARNING, EAL, "vfio-noiommu mode configured\n");
if (is_bound_uio)
RTE_LOG(WARNING, EAL, "few device bound to UIO\n");
- if (spapr_iommu)
- RTE_LOG(WARNING, EAL, "sPAPR IOMMU does not support IOVA as VA\n");
+ if (iommu_no_va)
+ RTE_LOG(WARNING, EAL, "IOMMU does not support IOVA as VA\n");
}
return RTE_IOVA_PA;

View File

@ -1,31 +0,0 @@
From de2067b4419323eb9cefdb2faed3245b28e7d4b2 Mon Sep 17 00:00:00 2001
From: Steven Webster <steven.webster@windriver.com>
Date: Wed, 17 Oct 2018 09:50:07 -0400
Subject: [PATCH] net-mlx5-fix-memory-region-cache-lookup
---
dpdk-17.11/drivers/net/mlx5/mlx5_rxtx.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dpdk-17.11/drivers/net/mlx5/mlx5_rxtx.h b/dpdk-17.11/drivers/net/mlx5/mlx5_rxtx.h
index d34f3cc..70db913 100644
--- a/dpdk-17.11/drivers/net/mlx5/mlx5_rxtx.h
+++ b/dpdk-17.11/drivers/net/mlx5/mlx5_rxtx.h
@@ -548,10 +548,12 @@ struct mlx5_mr *mlx5_txq_mp2mr_reg(struct mlx5_txq_data *, struct rte_mempool *,
struct mlx5_mr *mr;
assert(i < RTE_DIM(txq->mp2mr));
- if (likely(txq->mp2mr[i]->start <= addr && txq->mp2mr[i]->end >= addr))
+ if (likely(txq->mp2mr[i] != NULL &&
+ txq->mp2mr[i]->start <= addr && txq->mp2mr[i]->end >= addr))
return txq->mp2mr[i]->lkey;
for (i = 0; (i != RTE_DIM(txq->mp2mr)); ++i) {
- if (unlikely(txq->mp2mr[i]->mr == NULL)) {
+ if (unlikely(txq->mp2mr[i] == NULL ||
+ txq->mp2mr[i]->mr == NULL)) {
/* Unknown MP, add a new MR for it. */
break;
}
--
1.8.3.1

View File

@ -22,17 +22,17 @@ diff --git a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in b/rhel/usr_lib_
index c6d9aa1..63eb68e 100644
--- a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
+++ b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
@@ -13,10 +13,6 @@ Restart=on-failure
Environment=HOME=/var/run/openvswitch
@@ -14,10 +14,6 @@ Environment=XDG_RUNTIME_DIR=/var/run/openvswitch
EnvironmentFile=/etc/openvswitch/default.conf
EnvironmentFile=-/etc/sysconfig/openvswitch
EnvironmentFile=-/run/openvswitch/useropts
-@begin_dpdk@
-ExecStartPre=-/usr/bin/chown :hugetlbfs /dev/hugepages
-ExecStartPre=-/bin/sh -c '/usr/bin/chown :$${OVS_USER_ID##*:} /dev/hugepages'
-ExecStartPre=-/usr/bin/chmod 0775 /dev/hugepages
-@end_dpdk@
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
--no-ovsdb-server --no-monitor --system-id=random \
--ovs-user=${OVS_USER_ID} \
${OVSUSER} \
--
1.8.3.1

View File

@ -1 +0,0 @@
mirror:/Source/openvswitch-2.9.0-3.el7.src.rpm

View File

@ -0,0 +1,105 @@
# Copyright (C) 2017, Red Hat, Inc.
#
# Core configuration file library.
# Configurations are determined by sha values. The way to determine is by
# the special text:
# $FILE_COMMENT_TYPE -*- cfg-sha: $SHA256 -*-
export LC_ALL=C
# check required binaries
__check_reqd_binaries() {
local BIN __binaries=("egrep" "sort" "sha256sum" "sed")
for BIN in $__binaries; do
if ! type -P $BIN >/dev/null 2>&1; then
echo "Binary $BIN not found. Please install."
exit 1
fi
done
}
# Calculates a sha from a file
# The algorithm for generating a sha from a config is thus:
#
# 1. Remove all comment lines and blank lines
# 2. Sort the content
# 3. generate the sha-256 sum
#
# From a script perspective, this means:
# egrep -v ^\# %file% | egrep -v ^$ | sort -u | sha256sum
#
# Params:
# $1 = output variable
# $2 = file to use to calculate the shasum
# $3 = file comment type (defaults to # if unspecified)
calc_sha() {
__check_reqd_binaries
if [ "$1" == "" ]; then
echo "Please pass in a storage variable."
return 1
fi
local __resultvar=$1
__retval=1
shift
local __file=$1
local cmnt=${2:-#}
if [ -f "$__file" ]; then
local __shasum=$(egrep -v ^"$cmnt" "$__file" | egrep -v ^$ | sort -u | sha256sum -t | cut -d" " -f1)
eval $__resultvar="'$__shasum'"
__retval=0
fi
return $__retval
}
# Retrieves a sha stored in a file
# Param:
# $1 = output variable
# $2 = file to use to calculate the shasum
# $3 = file comment type (defaults to # if unspecified)
retr_sha() {
__check_reqd_binaries
if [ "$1" == "" ]; then
echo "Please pass in a storage variable."
return 1
fi
local __resultvar=$1
__retval=1
shift
local __file=$1
local cmnt=${2:-#}
if [ -f "$__file" ]; then
if grep -q "$cmnt -\*- cfg-sha:" "$__file"; then
local __shasum=$(grep "$cmnt -\*- cfg-sha:" "$__file" | sed -e "s@$cmnt -\*- cfg-sha: @@" | cut -d" " -f1)
eval $__resultvar="'$__shasum'"
__retval=0
fi
fi
return $__retval
}
# Set a config value
# set_conf dpdk_build_tree parameter value
# dpdk_build_tree is the directory where the .config lives
# parameter is the config parameter
# value is the value to set for the config parameter
set_conf() {
c="$1/.config"
shift
if grep -q "$1" "$c"; then
sed -i "s:^$1=.*$:$1=$2:g" $c
else
echo $1=$2 >> "$c"
fi
}

View File

@ -0,0 +1,144 @@
#!/bin/bash
source configlib.sh
# Generates arch configurations in the current directory based on
# 1. an openvswitch.spec file
# 2. an expanded dpdk tree
if (( $# != 2 )); then
echo "$0: openvswitch.spec dpdk_tree" >&2
exit 1
fi
OVSSPEC="$1"
DPDKDIR="$2"
# accumulate all arch + name triples
OVS_DPDK_CONF_MACH_ARCH=()
for arch in $(grep %define\ dpdk_mach_arch "$OVSSPEC" | sed 's@%define dpdk_mach_arch @@'); do
OVS_DPDK_CONF_MACH_ARCH+=($arch)
done
OVS_DPDK_CONF_MACH_TMPL=()
for tmpl in $(grep %define\ dpdk_mach_tmpl "$OVSSPEC" | sed 's@%define dpdk_mach_tmpl @@'); do
OVS_DPDK_CONF_MACH_TMPL+=($tmpl)
done
OVS_DPDK_CONF_MACH=()
for mach in $(grep %define\ dpdk_mach\ "$OVSSPEC" | sed 's@%define dpdk_mach @@'); do
OVS_DPDK_CONF_MACH+=($mach)
done
OVS_DPDK_TARGETS=()
for ((i=0; i < ${#OVS_DPDK_CONF_MACH[@]}; i++)); do
OVS_DPDK_TARGETS+=("${OVS_DPDK_CONF_MACH_ARCH[$i]}-${OVS_DPDK_CONF_MACH_TMPL[$i]}-linuxapp-gcc")
echo "DPDK-target: ${OVS_DPDK_TARGETS[$i]}"
done
OUTPUT_DIR=$(pwd)
pushd "$DPDKDIR"
for ((i=0; i < ${#OVS_DPDK_TARGETS[@]}; i++)); do
echo "For ${OVS_DPDK_TARGETS[$i]}:"
echo " a. Generating initial config"
echo " make V=1 T=${OVS_DPDK_TARGETS[$i]} O=${OVS_DPDK_TARGETS[$i]}"
make V=1 T=${OVS_DPDK_TARGETS[$i]} O=${OVS_DPDK_TARGETS[$i]} -j8 config
ORIG_SHA=""
OUTDIR="${OVS_DPDK_TARGETS[$i]}"
echo " b. calculating and applying sha"
calc_sha ORIG_SHA "${OUTDIR}/.config"
if [ "$ORIG_SHA" == "" ]; then
echo "ERROR: Unable to get sha for arch ${OVS_DPDK_TARGETS[$i]}"
exit 1
fi
echo "# -*- cfg-sha: ${ORIG_SHA}" > ${OUTDIR}/.config.new
cat "${OUTDIR}/.config" >> "${OUTDIR}/.config.new"
cp "${OUTDIR}/.config" "${OUTDIR}/.config.orig"
mv -f "${OUTDIR}/.config.new" "${OUTDIR}/.config"
echo " c. setting initial configurations"
# these are the original setconf values from openvswitch.spec
set_conf "${OUTDIR}" CONFIG_RTE_MACHINE "\\\"${OVS_DPDK_CONF_MACH[$i]}\\\""
# Disable DPDK libraries not needed by OVS
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_TIMER n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_CFGFILE n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_JOBSTATS n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_LPM n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_ACL n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_POWER n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_DISTRIBUTOR n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_REORDER n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PORT n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_TABLE n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PIPELINE n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_KNI n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_CRYPTODEV n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_SECURITY n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_FLOW_CLASSIFY n
# Disable virtio user as not used by OVS
set_conf "${OUTDIR}" CONFIG_RTE_VIRTIO_USER n
# Enable DPDK libraries needed by OVS
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_VHOST_NUMA y
# start by disabling ALL PMDs
for pmd in $(grep _PMD= "${OUTDIR}/.config" | sed 's@=\(y\|n\)@@g'); do
set_conf "${OUTDIR}" $pmd n
done
# PMDs which have their own naming scheme
# the default for this was 'n' at one point. Make sure we keep it
# as such
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_QAT n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_VHOST n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_KNI n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_XENVIRT n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_NULL n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_TAP n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_PCAP n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_BOND n
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_AF_PACKET n
# whitelist of enabled PMDs
# Soft PMDs to enable
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_PMD_RING y
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_VIRTIO_PMD y
# HW PMDs
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_I40E_PMD y
case "${OVS_DPDK_CONF_MACH_ARCH[i]}" in
x86_64)
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_ENIC_PMD y
;&
arm64)
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_IXGBE_PMD y
set_conf "${OUTDIR}" CONFIG_RTE_LIBRTE_IGB_PMD y
;;
esac
# Disable kernel modules
set_conf "${OUTDIR}" CONFIG_RTE_EAL_IGB_UIO n
set_conf "${OUTDIR}" CONFIG_RTE_KNI_KMOD n
# Disable experimental stuff
set_conf "${OUTDIR}" CONFIG_RTE_NEXT_ABI n
cp "${OUTDIR}/.config" "${OUTPUT_DIR}/${OVS_DPDK_TARGETS[$i]}-config"
done
popd >/dev/null
echo -n "For each arch ( "
for ((i=0; i < ${#OVS_DPDK_CONF_MACH_ARCH[@]}; i++)); do
echo -n "${OVS_DPDK_CONF_MACH_ARCH[i]} "
done
echo "):"
echo "1. ensure you enable the requisite hw"

View File

@ -0,0 +1,48 @@
#!/bin/bash
# Copyright (C) 2017, Red Hat, Inc.
#
# set_config.sh will copy a configuration from $1 to $2, in the process
# checking that the sha header for $1 matches the header in $2
source configlib.sh
if (( $# < 2 )); then
echo "$0: source dest [comment-marker]"
exit 1
fi
if [ ! -f "$1" ]; then
echo "Source file $1 must exist."
exit 1
fi
src_file=$1
shift
if [ ! -f "$1" ]; then
echo "Dest file $1 must exist."
exit 1
fi
dst_file=$1
shift
comment_sep=${1:-#}
export LANG=en_US.utf8
DEST_FILE_SHA=""
SRC_FILE_SHA=""
calc_sha DEST_FILE_SHA "$dst_file" "$comment_sep" || echo "Failed to calc sha"
retr_sha SRC_FILE_SHA "$src_file" "$comment_sep" || echo "Failed to retrieve sha"
if [ "$DEST_FILE_SHA" != "$SRC_FILE_SHA" ]; then
echo "ERROR: The requisite starting sha from $dst_file does not match the"
echo " specified sha in $src_file."
echo "[ $DEST_FILE_SHA ] vs [ $SRC_FILE_SHA ]"
exit 1
fi
mv "$dst_file" "$dst_file".OLD
cp "$src_file" "$dst_file"
echo "copied 1 config file."
exit 0

View File

@ -0,0 +1,546 @@
# -*- cfg-sha: 2ba93102021dc5d38494cf5090c3ecaca37db13153dd558b1511a56f2a3d9b10
# BSD LICENSE
# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Intel Corporation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# BSD LICENSE
# Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Intel Corporation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# BSD LICENSE
# Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Intel Corporation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# RTE_EXEC_ENV values are the directories in mk/exec-env/
CONFIG_RTE_EXEC_ENV="linuxapp"
# RTE_ARCH values are architecture we compile for. directories in mk/arch/
CONFIG_RTE_ARCH="x86_64"
# machine can define specific variables or action for a specific board
# RTE_MACHINE values are architecture we compile for. directories in mk/machine/
CONFIG_RTE_MACHINE="default"
# The compiler we use.
# RTE_TOOLCHAIN values are architecture we compile for. directories in mk/toolchain/
CONFIG_RTE_TOOLCHAIN="gcc"
# Use intrinsics or assembly code for key routines
CONFIG_RTE_FORCE_INTRINSICS=n
# Machine forces strict alignment constraints.
CONFIG_RTE_ARCH_STRICT_ALIGN=n
# Compile to share library
CONFIG_RTE_BUILD_SHARED_LIB=n
# Use newest code breaking previous ABI
CONFIG_RTE_NEXT_ABI=n
# Major ABI to overwrite library specific LIBABIVER
CONFIG_RTE_MAJOR_ABI=
# Machine's cache line size
CONFIG_RTE_CACHE_LINE_SIZE=64
# Compile Environment Abstraction Layer
CONFIG_RTE_LIBRTE_EAL=y
CONFIG_RTE_MAX_HEAPS=32
CONFIG_RTE_MAX_LCORE=128
CONFIG_RTE_MAX_NUMA_NODES=8
CONFIG_RTE_MAX_MEMSEG=256
CONFIG_RTE_MAX_MEMSEG_LISTS=128
CONFIG_RTE_MAX_MEMSEG_PER_LIST=8192
CONFIG_RTE_MAX_MEM_MB=524288
CONFIG_RTE_MAX_MEMSEG_PER_TYPE=32768
CONFIG_RTE_MAX_MEM_MB_PER_LIST=32768
CONFIG_RTE_MAX_MEM_MB_PER_TYPE=65536
CONFIG_RTE_MAX_MEMZONE=2560
CONFIG_RTE_MAX_TAILQ=32
CONFIG_RTE_ENABLE_ASSERT=n
CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
CONFIG_RTE_LOG_HISTORY=256
CONFIG_RTE_BACKTRACE=y
CONFIG_RTE_LIBEAL_USE_HPET=n
CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
CONFIG_RTE_EAL_IGB_UIO=n
CONFIG_RTE_EAL_VFIO=y
CONFIG_RTE_MAX_VFIO_GROUPS=64
CONFIG_RTE_MAX_VFIO_CONTAINERS=64
CONFIG_RTE_MALLOC_DEBUG=n
CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
# Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for performance/power testing.
# AVX512 is marked as experimental for now, will enable it after enough
# field test and possible optimization.
CONFIG_RTE_ENABLE_AVX=y
CONFIG_RTE_ENABLE_AVX512=n
# Default driver path (or "" to disable)
CONFIG_RTE_EAL_PMD_PATH=""
# Compile Environment Abstraction Layer to support Vmware TSC map
CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=y
# Compile architecture we compile for. PCI library
CONFIG_RTE_LIBRTE_PCI=y
# Compile architecture we compile for. argument parser library
CONFIG_RTE_LIBRTE_KVARGS=y
# Compile generic ethernet library
CONFIG_RTE_LIBRTE_ETHER=y
CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
CONFIG_RTE_EVENT_ETH_INTR_RING_SIZE=1024
CONFIG_RTE_MAX_ETHPORTS=32
CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
CONFIG_RTE_LIBRTE_IEEE1588=n
CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
CONFIG_RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS=n
# Turn off Tx preparation stage
# Warning: rte_eth_tx_prepare() can be safely disabled only if using a
# driver which do not implement any Tx preparation.
CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
# Compile PCI bus driver
CONFIG_RTE_LIBRTE_PCI_BUS=y
# Compile architecture we compile for. vdev bus
CONFIG_RTE_LIBRTE_VDEV_BUS=y
# Compile burst-oriented Amazon ENA PMD driver
CONFIG_RTE_LIBRTE_ENA_PMD=n
CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
# Compile burst-oriented IGB & EM PMD drivers
CONFIG_RTE_LIBRTE_EM_PMD=n
CONFIG_RTE_LIBRTE_IGB_PMD=y
CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
# Compile burst-oriented IXGBE PMD driver
CONFIG_RTE_LIBRTE_IXGBE_PMD=y
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
CONFIG_RTE_IXGBE_INC_VECTOR=y
CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n
# Compile burst-oriented I40E PMD driver
CONFIG_RTE_LIBRTE_I40E_PMD=y
CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
# interval up to 8160 us, aligned to 2 (or default value)
CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
# Compile burst-oriented FM10K PMD
CONFIG_RTE_LIBRTE_FM10K_PMD=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
CONFIG_RTE_LIBRTE_MLX4_PMD=y
CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n
CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
CONFIG_RTE_LIBRTE_MLX5_PMD=y
CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
# Compile burst-oriented Broadcom PMD driver
CONFIG_RTE_LIBRTE_BNX2X_PMD=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
# Compile burst-oriented Chelsio Terminator (CXGBE) PMD
CONFIG_RTE_LIBRTE_CXGBE_PMD=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
CONFIG_RTE_LIBRTE_CXGBE_TPUT=y
# Compile burst-oriented Cisco ENIC PMD driver
CONFIG_RTE_LIBRTE_ENIC_PMD=y
CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
CONFIG_RTE_LIBRTE_ENIC_DEBUG_FLOW=n
# Compile burst-oriented Netronome NFP PMD driver
CONFIG_RTE_LIBRTE_NFP_PMD=n
CONFIG_RTE_LIBRTE_NFP_DEBUG=n
# Compile Marvell PMD driver
CONFIG_RTE_LIBRTE_MRVL_PMD=n
# Compile burst-oriented Broadcom BNXT PMD driver
CONFIG_RTE_LIBRTE_BNXT_PMD=n
# Compile burst-oriented Solarflare libefx-based PMD
CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n
# Compile SOFTNIC PMD
CONFIG_RTE_LIBRTE_PMD_SOFTNIC=y
# Compile software PMD backed by SZEDATA2 device
CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n
# Defines firmware type address space.
# See documentation for supported values.
# Other values raise compile time error.
CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
# Compile burst-oriented Cavium Thunderx NICVF PMD driver
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
# Compile burst-oriented Cavium LiquidIO PMD driver
CONFIG_RTE_LIBRTE_LIO_PMD=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n
CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n
# NXP DPAA Bus
CONFIG_RTE_LIBRTE_DPAA_BUS=n
CONFIG_RTE_LIBRTE_DPAA_MEMPOOL=n
CONFIG_RTE_LIBRTE_DPAA_PMD=n
# Compile burst-oriented Cavium OCTEONTX network PMD driver
CONFIG_RTE_LIBRTE_OCTEONTX_PMD=y
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_RX=n
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_TX=n
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_OCTEONTX_DEBUG_MBOX=n
# Compile NXP DPAA2 FSL-MC Bus
CONFIG_RTE_LIBRTE_FSLMC_BUS=n
# Compile Support Libraries for NXP DPAA2
CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n
CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y
# Compile burst-oriented NXP DPAA2 PMD driver
CONFIG_RTE_LIBRTE_DPAA2_PMD=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_RX=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX=n
CONFIG_RTE_LIBRTE_DPAA2_DEBUG_TX_FREE=n
# Compile burst-oriented VIRTIO PMD driver
CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
# Compile virtio device emulation inside virtio PMD driver
CONFIG_RTE_VIRTIO_USER=n
# Compile burst-oriented VMXNET3 PMD driver
CONFIG_RTE_LIBRTE_VMXNET3_PMD=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
# Compile example software rings based PMD
CONFIG_RTE_LIBRTE_PMD_RING=y
CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
# Compile software PMD backed by PCAP files
CONFIG_RTE_LIBRTE_PMD_PCAP=n
# Compile link bonding PMD library
CONFIG_RTE_LIBRTE_PMD_BOND=n
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
# QLogic 10G/25G/40G/50G/100G PMD
CONFIG_RTE_LIBRTE_QEDE_PMD=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
CONFIG_RTE_LIBRTE_QEDE_VF_TX_SWITCH=y
#Provides abs path/name of architecture we compile for. firmware file.
#Empty string denotes driver will use default firmware
CONFIG_RTE_LIBRTE_QEDE_FW=""
# Compile software PMD backed by AF_PACKET sockets (Linux only)
CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n
# Compile ARK PMD
CONFIG_RTE_LIBRTE_ARK_PMD=n
CONFIG_RTE_LIBRTE_ARK_PAD_TX=y
CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n
CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n
CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n
CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n
# Compile WRS accelerated virtual port (AVP) guest PMD driver
CONFIG_RTE_LIBRTE_AVP_PMD=n
CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n
CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n
CONFIG_RTE_LIBRTE_AVP_DEBUG_DRIVER=y
CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n
# Compile architecture we compile for. TAP PMD
# It is enabled by default for Linux only.
CONFIG_RTE_LIBRTE_PMD_TAP=n
# Compile null PMD
CONFIG_RTE_LIBRTE_PMD_NULL=n
# Compile fail-safe PMD
CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y
# Do prefetch of packet data within PMD driver receive function
CONFIG_RTE_PMD_PACKET_PREFETCH=y
# Compile generic crypto device library
CONFIG_RTE_LIBRTE_CRYPTODEV=y
CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
CONFIG_RTE_CRYPTO_MAX_DEVS=64
CONFIG_RTE_CRYPTODEV_NAME_LEN=64
CONFIG_RTE_EVENT_CRYPTO_ADAPTER_MAX_INSTANCE=32
# Compile PMD for ARMv8 Crypto device
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
# Compile NXP DPAA2 crypto sec driver for CAAM HW
CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_DPAA2_SEC_DEBUG_RX=n
# NXP DPAA caam - crypto driver
CONFIG_RTE_LIBRTE_PMD_DPAA_SEC=n
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_DRIVER=n
CONFIG_RTE_LIBRTE_DPAA_SEC_DEBUG_RX=n
# Compile PMD for QuickAssist based devices
CONFIG_RTE_LIBRTE_PMD_QAT=n
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
# Number of sessions to create in architecture we compile for. session memory pool
# on a single QuickAssist device.
CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
# Compile PMD for AESNI backed device
CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
# Compile PMD for Software backed device
CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
# Compile PMD for AESNI GCM device
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
# Compile PMD for SNOW 3G device
CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
# Compile PMD for KASUMI device
CONFIG_RTE_LIBRTE_PMD_KASUMI=n
CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
# Compile PMD for ZUC device
CONFIG_RTE_LIBRTE_PMD_ZUC=n
CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
# Compile PMD for Crypto Scheduler device
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n
CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
# Compile PMD for NULL Crypto device
CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n
# Compile PMD for Marvell Crypto device
CONFIG_RTE_LIBRTE_PMD_MRVL_CRYPTO=n
CONFIG_RTE_LIBRTE_PMD_MRVL_CRYPTO_DEBUG=n
# Compile generic security library
CONFIG_RTE_LIBRTE_SECURITY=n
# Compile generic event device library
CONFIG_RTE_LIBRTE_EVENTDEV=y
CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
CONFIG_RTE_EVENT_MAX_DEVS=16
CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
CONFIG_RTE_EVENT_ETH_TX_ADAPTER_MAX_INSTANCE=32
# Compile PMD for skeleton event device
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=n
CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n
# Compile PMD for software event device
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=n
CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV_DEBUG=n
# Compile PMD for octeontx sso event device
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=y
CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF_DEBUG=n
# Compile librte_ring
CONFIG_RTE_LIBRTE_RING=y
# Compile librte_mempool
CONFIG_RTE_LIBRTE_MEMPOOL=y
CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
# Compile Mempool drivers
CONFIG_RTE_DRIVER_MEMPOOL_RING=y
CONFIG_RTE_DRIVER_MEMPOOL_STACK=y
# Compile PMD for octeontx fpa mempool device
CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL=y
CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL_DEBUG=n
# Compile librte_mbuf
CONFIG_RTE_LIBRTE_MBUF=y
CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
CONFIG_RTE_PKTMBUF_HEADROOM=128
# Compile librte_timer
CONFIG_RTE_LIBRTE_TIMER=y
CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
CONFIG_RTE_EVENT_TIMER_ADAPTER_NUM_MAX=32
# Compile librte_cfgfile
CONFIG_RTE_LIBRTE_CFGFILE=n
# Compile librte_cmdline
CONFIG_RTE_LIBRTE_CMDLINE=y
CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
# Compile librte_hash
CONFIG_RTE_LIBRTE_HASH=y
CONFIG_RTE_LIBRTE_HASH_DEBUG=n
# Compile librte_efd
CONFIG_RTE_LIBRTE_EFD=y
# Compile librte_member
CONFIG_RTE_LIBRTE_MEMBER=y
# Compile librte_jobstats
CONFIG_RTE_LIBRTE_JOBSTATS=n
# Compile architecture we compile for. device metrics library
CONFIG_RTE_LIBRTE_METRICS=y
# Compile architecture we compile for. bitrate statistics library
CONFIG_RTE_LIBRTE_BITRATE=y
# Compile architecture we compile for. latency statistics library
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
# Compile librte_lpm
CONFIG_RTE_LIBRTE_LPM=y
CONFIG_RTE_LIBRTE_LPM_DEBUG=n
# Compile librte_acl
CONFIG_RTE_LIBRTE_ACL=y
CONFIG_RTE_LIBRTE_ACL_DEBUG=n
# Compile librte_power
CONFIG_RTE_LIBRTE_POWER=n
CONFIG_RTE_LIBRTE_POWER_DEBUG=n
CONFIG_RTE_MAX_LCORE_FREQS=64
# Compile librte_net
CONFIG_RTE_LIBRTE_NET=y
# Compile librte_ip_frag
CONFIG_RTE_LIBRTE_IP_FRAG=y
CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
# Compile GRO library
CONFIG_RTE_LIBRTE_GRO=y
# Compile GSO library
CONFIG_RTE_LIBRTE_GSO=y
# Compile librte_meter
CONFIG_RTE_LIBRTE_METER=y
# Compile librte_classify
CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=n
# Compile librte_sched
CONFIG_RTE_LIBRTE_SCHED=y
CONFIG_RTE_SCHED_DEBUG=n
CONFIG_RTE_SCHED_RED=n
CONFIG_RTE_SCHED_COLLECT_STATS=n
CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
CONFIG_RTE_SCHED_VECTOR=n
# Compile architecture we compile for. distributor library
CONFIG_RTE_LIBRTE_DISTRIBUTOR=n
# Compile architecture we compile for. reorder library
CONFIG_RTE_LIBRTE_REORDER=n
# Compile librte_port
CONFIG_RTE_LIBRTE_PORT=y
CONFIG_RTE_PORT_STATS_COLLECT=n
CONFIG_RTE_PORT_PCAP=n
# Compile librte_table
CONFIG_RTE_LIBRTE_TABLE=y
CONFIG_RTE_TABLE_STATS_COLLECT=n
# Compile librte_pipeline
CONFIG_RTE_LIBRTE_PIPELINE=y
CONFIG_RTE_PIPELINE_STATS_COLLECT=n
# Compile librte_kni
CONFIG_RTE_LIBRTE_KNI=n
CONFIG_RTE_LIBRTE_PMD_KNI=n
CONFIG_RTE_KNI_KMOD=n
CONFIG_RTE_KNI_KMOD_ETHTOOL=n
CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
# Compile architecture we compile for. pdump library
CONFIG_RTE_LIBRTE_PDUMP=y
# Compile vhost user library
CONFIG_RTE_LIBRTE_VHOST=y
CONFIG_RTE_LIBRTE_VHOST_NUMA=y
CONFIG_RTE_LIBRTE_VHOST_DEBUG=n
# Compile vhost PMD
# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled.
CONFIG_RTE_LIBRTE_PMD_VHOST=n
# Compile architecture we compile for. test application
CONFIG_RTE_APP_TEST=y
CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
# Compile architecture we compile for. PMD test application
CONFIG_RTE_TEST_PMD=n
CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
# Compile architecture we compile for. crypto performance application
CONFIG_RTE_APP_CRYPTO_PERF=y
# Compile architecture we compile for. eventdev application
CONFIG_RTE_APP_EVENTDEV=y
CONFIG_RTE_EXEC_ENV_LINUXAPP=y
CONFIG_RTE_ARCH_X86_64=y
CONFIG_RTE_ARCH_X86=y
CONFIG_RTE_ARCH_64=y
CONFIG_RTE_TOOLCHAIN_GCC=y
CONFIG_RTE_LIBRTE_PMD_XENVIRT=n