From ab30dcb7fb248a58c672f35e830f97634db4c8ae Mon Sep 17 00:00:00 2001 From: Guo Ruijing Date: Fri, 5 Aug 2016 09:45:04 +0800 Subject: [PATCH] Add dpdk 16.04 debian spec 1. download dpdk 2.2.0 debian spec wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0.orig.tar.gz wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.debian.tar.xz dpkg-source -x dpdk_2.2.0-0ubuntu8.dsc 2. remove patch and update debian spec wget -c http://fast.dpdk.org/rel/dpdk-16.04.tar.xz cd dpdk-2.2.0; rm -rf debian/patches/; uupdate -v 16.04 ../dpdk-16.04.tar.xz 3. update changelog cat << EOF > debian/changelog dpdk (16.04-1) unstable; urgency=low * DPDK 16.04 -- DPDK team EOF Change-Id: Ie4b4ef441d77b1dfb60897b972a08a1c86c0f0e2 Signed-off-by: Guo Ruijing --- ovs_build/dpdk-16.04/debian/changelog | 3 + ovs_build/dpdk-16.04/debian/compat | 1 + ovs_build/dpdk-16.04/debian/control | 81 +++ ovs_build/dpdk-16.04/debian/copyright | 48 ++ ovs_build/dpdk-16.04/debian/dpdk-dev.dirs | 1 + ovs_build/dpdk-16.04/debian/dpdk-dev.install | 1 + .../dpdk-16.04/debian/dpdk-doc.README.Debian | 52 ++ ovs_build/dpdk-16.04/debian/dpdk-doc.dirs | 1 + ovs_build/dpdk-16.04/debian/dpdk-init | 251 ++++++++ ovs_build/dpdk-16.04/debian/dpdk-sdk-env.sh | 3 + ovs_build/dpdk-16.04/debian/dpdk.conf | 54 ++ ovs_build/dpdk-16.04/debian/dpdk.dirs | 5 + ovs_build/dpdk-16.04/debian/dpdk.init | 57 ++ ovs_build/dpdk-16.04/debian/dpdk.install | 2 + ovs_build/dpdk-16.04/debian/dpdk.interfaces | 13 + ovs_build/dpdk-16.04/debian/dpdk.service | 12 + ovs_build/dpdk-16.04/debian/libdpdk-dev.dirs | 1 + ovs_build/dpdk-16.04/debian/libdpdk0.dirs | 1 + .../dpdk-16.04/debian/libdpdk0.symbols.amd64 | 580 ++++++++++++++++++ .../dpdk-16.04/debian/libdpdk0.symbols.i386 | 569 +++++++++++++++++ ovs_build/dpdk-16.04/debian/patches/series | 0 ovs_build/dpdk-16.04/debian/rules | 159 +++++ ovs_build/dpdk-16.04/debian/source/format | 1 + .../debian/tests/check-dpdk-supported-arch.sh | 12 + ovs_build/dpdk-16.04/debian/tests/control | 8 + .../dpdk-16.04/debian/tests/test-initscripts | 143 +++++ .../dpdk-16.04/debian/tests/test-linkage | 41 ++ ovs_build/dpdk-16.04/debian/watch | 2 + 28 files changed, 2102 insertions(+) create mode 100644 ovs_build/dpdk-16.04/debian/changelog create mode 100644 ovs_build/dpdk-16.04/debian/compat create mode 100644 ovs_build/dpdk-16.04/debian/control create mode 100644 ovs_build/dpdk-16.04/debian/copyright create mode 100644 ovs_build/dpdk-16.04/debian/dpdk-dev.dirs create mode 100644 ovs_build/dpdk-16.04/debian/dpdk-dev.install create mode 100644 ovs_build/dpdk-16.04/debian/dpdk-doc.README.Debian create mode 100644 ovs_build/dpdk-16.04/debian/dpdk-doc.dirs create mode 100755 ovs_build/dpdk-16.04/debian/dpdk-init create mode 100755 ovs_build/dpdk-16.04/debian/dpdk-sdk-env.sh create mode 100644 ovs_build/dpdk-16.04/debian/dpdk.conf create mode 100644 ovs_build/dpdk-16.04/debian/dpdk.dirs create mode 100644 ovs_build/dpdk-16.04/debian/dpdk.init create mode 100644 ovs_build/dpdk-16.04/debian/dpdk.install create mode 100644 ovs_build/dpdk-16.04/debian/dpdk.interfaces create mode 100644 ovs_build/dpdk-16.04/debian/dpdk.service create mode 100644 ovs_build/dpdk-16.04/debian/libdpdk-dev.dirs create mode 100644 ovs_build/dpdk-16.04/debian/libdpdk0.dirs create mode 100644 ovs_build/dpdk-16.04/debian/libdpdk0.symbols.amd64 create mode 100644 ovs_build/dpdk-16.04/debian/libdpdk0.symbols.i386 create mode 100644 ovs_build/dpdk-16.04/debian/patches/series create mode 100755 ovs_build/dpdk-16.04/debian/rules create mode 100644 ovs_build/dpdk-16.04/debian/source/format create mode 100644 ovs_build/dpdk-16.04/debian/tests/check-dpdk-supported-arch.sh create mode 100644 ovs_build/dpdk-16.04/debian/tests/control create mode 100644 ovs_build/dpdk-16.04/debian/tests/test-initscripts create mode 100644 ovs_build/dpdk-16.04/debian/tests/test-linkage create mode 100644 ovs_build/dpdk-16.04/debian/watch diff --git a/ovs_build/dpdk-16.04/debian/changelog b/ovs_build/dpdk-16.04/debian/changelog new file mode 100644 index 0000000..090d100 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/changelog @@ -0,0 +1,3 @@ +dpdk (16.04-1) unstable; urgency=low + * DPDK 16.04 + -- DPDK team diff --git a/ovs_build/dpdk-16.04/debian/compat b/ovs_build/dpdk-16.04/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/compat @@ -0,0 +1 @@ +9 diff --git a/ovs_build/dpdk-16.04/debian/control b/ovs_build/dpdk-16.04/debian/control new file mode 100644 index 0000000..60cf704 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/control @@ -0,0 +1,81 @@ +Source: dpdk +Priority: optional +Maintainer: Ubuntu Developers +Build-Depends: debhelper (>= 9), + dh-python, + dh-systemd (>= 1.5), + doxygen, + graphviz, + inkscape, + libcap-dev, + libpcap-dev, + libxen-dev, + libxenstore3.0, + python, + python-sphinx, + texlive-fonts-recommended, + texlive-latex-extra +Standards-Version: 3.9.6 +Section: libs +Homepage: http://www.dpdk.org +Vcs-Original-Git: git://dpdk.org/dpdk +Vcs-Original-Browser: http://www.dpdk.org/browse/dpdk/refs/ +Vcs-Git: https://git.launchpad.net/~ubuntu-server/dpdk +Vcs-Browser: https://code.launchpad.net/~ubuntu-server/dpdk/+git/dpdk + +Package: dpdk +Section: devel +Architecture: amd64 i386 +Depends: libdpdk0 (= ${binary:Version}), + lsb-base (>= 3.2-14), + ${misc:Depends}, + ${python:Depends}, + ${shlibs:Depends} +Suggests: linux-image-generic +Description: Data Plane Development Kit (runtime) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime environment to run DPDK applications. + +Package: dpdk-dev +Section: devel +Architecture: amd64 i386 +Depends: libdpdk0 (= ${binary:Version}), ${misc:Depends} +Description: Data Plane Development Kit (development files) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains examples and the upstream build environment. It is + not strictly required in order to build external applications. + +Package: dpdk-doc +Section: doc +Architecture: all +Depends: libjs-jquery, libjs-underscore, ${misc:Depends} +Description: Data Plane Development Kit (documentation) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the complete set of documentation and guides. + +Package: libdpdk0 +Architecture: amd64 i386 +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Description: Data Plane Development Kit (runtime libraries) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries which require at least SSE3 + support in the CPU. + +Package: libdpdk-dev +Section: libdevel +Architecture: amd64 i386 +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: libdpdk0 (= ${binary:Version}), ${misc:Depends} +Description: Data Plane Development Kit (basic development files) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the basic headers and library files required to + build external applications which will also require at least SSE3 support + when running. diff --git a/ovs_build/dpdk-16.04/debian/copyright b/ovs_build/dpdk-16.04/debian/copyright new file mode 100644 index 0000000..521df60 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/copyright @@ -0,0 +1,48 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: dpdk +Source: http://dpdk.org + +Files: * +Copyright: 2008-2014 Cisco Systems, Inc. + 2012-2014 6WIND S.A. + 1999-2015 Intel Corporation. + 2010-2013 Tilera Corporation. + 2012 Mellanox. + 2007 VMware, Inc. + 2007 Nuova Systems, Inc. + 2014 IBM Corporation. +License: BSD+GPLv2+LGPLv2 + On Debian systems, the complete text of the BSD License can be + found in "/usr/share/common-licenses/BSD". + . + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +Files: debian/* +Copyright: 2015 Canonical Ltd. +Copyright: 2015, 2016 Canonical Ltd. +License: GPL-3 + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License version 3, as published + by the Free Software Foundation. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranties of + MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License along + with this program. If not, see . diff --git a/ovs_build/dpdk-16.04/debian/dpdk-dev.dirs b/ovs_build/dpdk-16.04/debian/dpdk-dev.dirs new file mode 100644 index 0000000..bdac81a --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk-dev.dirs @@ -0,0 +1 @@ +usr/share/dpdk diff --git a/ovs_build/dpdk-16.04/debian/dpdk-dev.install b/ovs_build/dpdk-16.04/debian/dpdk-dev.install new file mode 100644 index 0000000..f6eba19 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk-dev.install @@ -0,0 +1 @@ +debian/dpdk-sdk-env.sh /usr/share/dpdk/ diff --git a/ovs_build/dpdk-16.04/debian/dpdk-doc.README.Debian b/ovs_build/dpdk-16.04/debian/dpdk-doc.README.Debian new file mode 100644 index 0000000..669bf39 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk-doc.README.Debian @@ -0,0 +1,52 @@ +dpdk for Debian +--------------- + +This package is currently compiled for the lowest possible CPU requirements. +Which still requires at least SSE3 to be supported by the CPU. + +dpdk (runtime) / libdpdk0: + +For runtime /etc/dpdk/interfaces holds a list of PCI devices to be assigned +to DPDK compatible drivers and /etc/dpdk/dpdk.conf allows one to define the +number of hugepages to be reserved at boot. +The runtime environment is not required to build applications that use +DPDK but if those applications get packaged they should depend on the +runtime. + +Since DPDK technically would be able to use all of your compatible card/driver +combination it is required that you take care of blacklisting / whitelisting +network cards to tell dpdk which it has to to initialize (especially true for +virtio-pci as the normal kernel driver is considered compatible). + +If you are working with virtio-pci network cards it isn't a hard requirement to +assign them to a dpdk compatible userspace driver like uio_pci_generic. But you +have to at least unbind them from the default kernel driver (virtio-pci) to +avoid bugs by dpdk and the kernel working on them simultaneously. It is +recommended to reassign them to dpdk compatible drivers using +/etc/dpdk/interfaces (just as you would with any physical card). + +libdpdk0 contains the shared object needed to run a program in terms of symbol +resolution, but none of the other runtime environment pieces. + +dpdk-dev / libdpdk-dev: + +The minimum requirement for developing external applications is libdpdk-dev, +which brings the headers and library files. + +In dpdk-dev is the upstream makefile environment. Sample applications, which +are shipped in dpdk-doc, are providing makefiles. +Those makefiles need to find the dpdk build system. To do so they need some +environment variables defined: + export RTE_TARGET="$(uname -m)-default-linuxapp-gcc" + export RTE_SDK="/usr/share/dpdk/" + export RTE_INCLUDE="/usr/include/dpdk" +Those can be set by the user to overwrite with a custom path/config. If no +custom environment is used it is recommended to source the file +/usr/share/dpdk/dpdk-sdk-env.sh which comes with dpdk-dev. +If the paths ever change or there will be more/less variables needed to build +against dpdk-dev that file will be adjusted for you. + +Alternatively /usr/include/dpdk/rte_config.h has to be pre-included: +CFLAGS += -I/usr/include/dpdk -irte_config.h + + -- Christian Ehrhardt Thu, 04 Feb 2016 09:16:11 +0100 diff --git a/ovs_build/dpdk-16.04/debian/dpdk-doc.dirs b/ovs_build/dpdk-16.04/debian/dpdk-doc.dirs new file mode 100644 index 0000000..fcd9dfe --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk-doc.dirs @@ -0,0 +1 @@ +usr/share/doc/dpdk diff --git a/ovs_build/dpdk-16.04/debian/dpdk-init b/ovs_build/dpdk-16.04/debian/dpdk-init new file mode 100755 index 0000000..86eda2c --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk-init @@ -0,0 +1,251 @@ +#!/bin/sh +# +# dpdk-init: startup script to initialize a dpdk runtime environment +# +# Copyright 2015-2016 Canonical Ltd. +# Autor: Stefan Bader +# Autor: Christian Ehrhardt +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +set -e + +DPDK_BIND="/sbin/dpdk_nic_bind" +DPDK_INTERF="/etc/dpdk/interfaces" + + +# pagesize supports [G|g]/[M|m]/[K|k] +get_kbytes() { + local unit + local num + unit=$(echo "${1}" | sed 's/[0-9]*//g') + num=$(echo "${1}" | sed 's/[^0-9]*//g') + case ${unit} in + *g | *G) + echo $((num*1024*1024)) + ;; + *m | *M) + echo $((num*1024)) + ;; + *k | *K) + echo $((num)) + ;; + *) + echo $((num/1024)) + ;; + esac +} + +get_default_hpgsz() { + default_hpgsz=$(grep "Hugepagesize:" /proc/meminfo \ + | sed 's/^Hugepagesize:\s*//g' | sed 's/\s*kB$//g') + echo "${default_hpgsz}" +} + +get_hugetlbfs_mountpoint() { + local requested_hpgsz + local mp_hpgsz + requested_hpgsz=$(get_kbytes "${1}") + + grep hugetlbfs /proc/mounts | while read \ + mntfrom mntpoint mntfstype mntopt mntdump mntfsck; do + + # check if the current muntpoint is of the requested huge page size + case ${mntopt} in + *pagesize=*) + mp_hpgsz=$(echo "${mntopt}" | sed 's/.*pagesize=//g' | sed 's/,.*//g') + mp_hpgsz=$(get_kbytes "${mp_hpgsz}") + ;; + *) + mp_hpgsz=$(get_default_hpgsz) + ;; + esac + if [ "${requested_hpgsz}" -eq "${mp_hpgsz}" ]; then + echo "${mntpoint}" + return + fi + done +} + +_mount_hugetlbfs() { + local MNT="/dev/hugepages" + local MNTOPTS="" + local requested_hpgsz + local default_hpgsz + requested_hpgsz=$(get_kbytes "${1}") + default_hpgsz=$(get_default_hpgsz) + + # kernel might not support the requested size + if [ ! -d "/sys/kernel/mm/hugepages/hugepages-${requested_hpgsz}kB" ]; then + echo "WARNING: requested page size of ${requested_hpgsz}kB " \ + "not supported by the kernel" + return 0 + fi + + # special case if this is not the default huge page size + if [ "${requested_hpgsz}" -ne "${default_hpgsz}" ]; then + MNT="${MNT}-${requested_hpgsz}" + MNTOPTS="pagesize=${requested_hpgsz}K" + fi + + if [ ! -e "${MNT}" ]; then + mkdir "${MNT}" + if [ $? -ne 0 ]; then + echo "Could not create directory ${MNT}!" >&2 + return 1 + fi + fi + mount -thugetlbfs hugetlbfs "${MNT}" -o "${MNTOPTS}" + return $? +} + +# +# The DPDK library will use the first mounted instance it finds for a given +# page size. so if there is already one for a given size there is no need to +# create another for the same huge page size. +# +mount_hugetlbfs() { + if [ ! -r /etc/dpdk/dpdk.conf ]; then + return 1 + fi + . /etc/dpdk/dpdk.conf + + # if a page size is requested, there has to be a mountpoint for that size + if [ -n "${NR_2M_PAGES}" -a -z "$(get_hugetlbfs_mountpoint '2M')" ]; then + _mount_hugetlbfs 2M + fi + if [ -n "${NR_1G_PAGES}" -a -z "$(get_hugetlbfs_mountpoint '1G')" ]; then + _mount_hugetlbfs 1G + fi +} + +_setup_hugepages() { + MMDIR="/sys/kernel/mm/hugepages/${1}" + PAGES=${2} + + if [ "$PAGES" != "" ]; then + if [ "$PAGES" -gt 0 ]; then + if [ -d "$MMDIR" -a -w "$MMDIR/nr_hugepages" ]; then + # increases the chance to allocate enough huge pages + # configurable, since it comes at a perf penality + if [ "$DROPCACHE_BEFORE_HP_ALLOC" = "1" ]; then + echo 3 > /proc/sys/vm/drop_caches + fi + + echo "$PAGES" > "$MMDIR/nr_hugepages" + + GOTPAGES=$(cat "$MMDIR/nr_hugepages") + if [ "$GOTPAGES" -lt "$PAGES" ]; then + echo "WARNING: could not allocate $PAGES at " \ + "$MMDIR/nr_hugepages (only got $GOTPAGES)." + fi + else + echo "WARNING: $MMDIR/nr_hugepages not found/writable" + fi + fi + fi +} + +# +# Reserve a certain amount of hugepages (defined in /etc/dpdk.conf) +# +setup_hugepages() { + if [ ! -r /etc/dpdk/dpdk.conf ]; then + return 1 + fi + . /etc/dpdk/dpdk.conf + + _setup_hugepages "hugepages-2048kB" "$NR_2M_PAGES" + _setup_hugepages "hugepages-1048576kB" "$NR_1G_PAGES" + + # dpdk uses 2*#hugepages mappings, increase for huge systems LP #1507921 + if [ -d /sys/kernel/mm/hugepages ]; then + max_map_count=$(awk -v pad=65530 '{tot+=$1}END{print tot*2+pad}' \ + /sys/kernel/mm/hugepages/hugepages-*/nr_hugepages) + sysctl -q vm.max_map_count="${max_map_count:-65530}" + fi + + return 0 +} + +# +# Allow NICs to be automatically bound to DPDK compatible drivers on boot. +# +bind_interfaces() { + if [ ! -r "$DPDK_INTERF" ]; then + return 0 + fi + grep -v '^[ \t]*#' "$DPDK_INTERF" | while read BUS ID MOD; do + if [ "$BUS" = "" -o "$ID" = "" -o "$MOD" = "" ]; then + echo "WARNING: incomplete spec in $DPDK_INTERF" \ + " - BUS '$BUS' ID '$ID' MOD '$MOD'" + continue + fi + if [ "$BUS" != "pci" ]; then + echo "WARNING: incompatible bus '$BUS' in $DPDK_INTERF" + continue + fi + + SYSFSPATH="/sys/bus/$BUS/devices/$ID" + if [ ! -e "$SYSFSPATH" ]; then + echo "WARNING: invalid pci ID '$ID' in $DPDK_INTERF" \ + " - '$SYSFSPATH' does not exist" + continue + fi + if [ -L "$SYSFSPATH/driver" ]; then + CUR=$(readlink "$SYSFSPATH/driver") + CUR=$(basename "$CUR") + else + # device existing, but currently unregistered + CUR="" + fi + if [ "$MOD" != "$CUR" ]; then + modprobe -q "$MOD" || true + # cloud img have no linux-image-extra initially (uip_pci_generic) + # so check if the module is available (loadable/built in) + if [ -e "/sys/bus/pci/drivers/${MOD}" ]; then + echo "Reassigning pci:$ID to $MOD" + $DPDK_BIND -b "$MOD" "$ID" + else + echo "Warning: failed assigning pci:$ID," \ + " module $MOD not available" + fi + else + echo "pci:$ID already assigned to $MOD" + fi + done +} + + + +case "$1" in +start) + mount_hugetlbfs + setup_hugepages + bind_interfaces + ;; +stop) + ;; +reload|force-reload) + setup_hugepages + bind_interfaces + ;; +status) + $DPDK_BIND --status + ;; +*) + echo "Usage: $0 {start|stop|reload|force-reload|status}" + exit 1 + ;; +esac + diff --git a/ovs_build/dpdk-16.04/debian/dpdk-sdk-env.sh b/ovs_build/dpdk-16.04/debian/dpdk-sdk-env.sh new file mode 100755 index 0000000..2fc5570 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk-sdk-env.sh @@ -0,0 +1,3 @@ +export RTE_TARGET="$(uname -m)-default-linuxapp-gcc" +export RTE_SDK="/usr/share/dpdk/" +export RTE_INCLUDE="/usr/include/dpdk" diff --git a/ovs_build/dpdk-16.04/debian/dpdk.conf b/ovs_build/dpdk-16.04/debian/dpdk.conf new file mode 100644 index 0000000..fb4572d --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk.conf @@ -0,0 +1,54 @@ +# +# The number of 2M hugepages to reserve on system boot +# +# Default is 0 +# To e.g. let it reserve 64x 2M Hugepages set: +# NR_2M_PAGES=64 + +# +# The number of 1G hugepages to reserve on system boot +# +# Default is 0 +# To e.g. let it reserve 2x 1G Hugepages set: +# NR_1G_PAGES=2 + +# +# Dropping slab and pagecache can help to successfully allocate hugepages, +# especially later in the lifecycle of a system. +# This comes at the cost of loosing all slab and pagecache on (re)start +# of the dpdk service - therefore the default is off. +# +# Default is 0 +# Set to 1 to enable it +#DROPCACHE_BEFORE_HP_ALLOC=0 + +# The DPDK library will use the first mounted hugetlbfs. +# The init scripts try to ensure there is at least one default hugetlbfs +# mountpoint on start. +# If you have multiple hugetlbfs mountpoints for a complex (e.g. specific numa +# policies) setup it should be controlled by the admin instead of this init +# script. In that case specific mountpoints can be provided as parameters to +# the DPDK library. + +# Hardware may support other granularities of hugepages (like 4M). But the +# larger the hugepages the earlier those should be allocated. +# Note: the dpdk init scripts will report warnings, but not fail if they could +# not allocate the requested amount of hugepages. +# The more or the larger the hugepages to be allocated are, the more it is +# recommended to do the reservation as kernel commandline arguments. +# To do so edit /etc/default/grub: GRUB_CMDLINE_LINUX_DEFAULT +# and add [hugepagesz=xx] hugepages=yy ... +# +# Kernel commandline config: +# hugepagesz sets the size for the next hugepages reservation (default 2M) +# hugepages reserves the given number of hugepages of the size set before +# +# After modifying /etc/default/grub, the command "update-grub" has to be +# run in order to re-generate the grub config files. The new values will +# be used after next reboot. +# +# example: +# GRUB_CMDLINE_LINUX_DEFAULT="... hugepages=16 hugepagesz=1G hugepages=2" +# +# If the system supports it, this will reserve 16x 2M pages and 2x 1G pages. +# diff --git a/ovs_build/dpdk-16.04/debian/dpdk.dirs b/ovs_build/dpdk-16.04/debian/dpdk.dirs new file mode 100644 index 0000000..29ca563 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk.dirs @@ -0,0 +1,5 @@ +etc/dpdk +lib/dpdk +sbin +usr/bin +usr/lib/dpdk diff --git a/ovs_build/dpdk-16.04/debian/dpdk.init b/ovs_build/dpdk-16.04/debian/dpdk.init new file mode 100644 index 0000000..921c38b --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk.init @@ -0,0 +1,57 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: dpdk +# Required-Start: $local_fs +# Required-Stop: $local_fs +# Default-Start: S +# Default-Stop: 0 1 6 +# Short-Description: start dpdk runtime environment +### END INIT INFO + +set -e + +PATH="/sbin:/bin:/usr/bin" + +[ -d /lib/dpdk ] || exit 0 + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.2-14) to ensure that this file is present +# and status_of_proc is working. +. /lib/lsb/init-functions + +error=0 +case "$1" in +start) + log_action_begin_msg "Starting DPDK environment" "dpdk" + output=$(/lib/dpdk/dpdk-init start 2>&1) || error="$?" + if [ ! -z "$output" ]; then + echo "$output" | while read line; do + log_action_cont_msg "$line" + done + fi + log_action_end_msg $error + exit $error + ;; +stop) + ;; +restart|force-reload) + ;; +status) + output=$(/lib/dpdk/dpdk-init --status 2>&1) || error="$?" + if [ ! -z "$output" ]; then + echo "$output" | while read line; do + log_action_cont_msg "$line" + done + fi + log_action_end_msg $error + exit $error + ;; +*) + echo "Usage: $0 {start|stop|restart|force-reload|status}" + exit 1 + ;; +esac + +exit 0 + diff --git a/ovs_build/dpdk-16.04/debian/dpdk.install b/ovs_build/dpdk-16.04/debian/dpdk.install new file mode 100644 index 0000000..24c8d45 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk.install @@ -0,0 +1,2 @@ +debian/dpdk-init lib/dpdk/ +debian/dpdk.conf etc/dpdk/ diff --git a/ovs_build/dpdk-16.04/debian/dpdk.interfaces b/ovs_build/dpdk-16.04/debian/dpdk.interfaces new file mode 100644 index 0000000..470a40e --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk.interfaces @@ -0,0 +1,13 @@ +# +# Currently only "pci" is supported +# Device ID on the specified bus +# Driver to bind against (vfio-pci or uio_pci_generic) +# +# Be aware that the two dpdk compatible drivers uio_pci_generic and vfio-pci are +# part of linux-image-extra- package. +# This package is not always installed by default - for example in cloud-images. +# So please install it in case you run into missing module issues. +# +# +# pci 0000:04:00.0 vfio-pci +# pci 0000:04:00.1 uio_pci_generic diff --git a/ovs_build/dpdk-16.04/debian/dpdk.service b/ovs_build/dpdk-16.04/debian/dpdk.service new file mode 100644 index 0000000..09ef8be --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/dpdk.service @@ -0,0 +1,12 @@ +[Unit] +Description=DPDK runtime environment +DefaultDependencies=false +After=network-pre.target local-fs.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/lib/dpdk/dpdk-init start + +[Install] +WantedBy=multi-user.target diff --git a/ovs_build/dpdk-16.04/debian/libdpdk-dev.dirs b/ovs_build/dpdk-16.04/debian/libdpdk-dev.dirs new file mode 100644 index 0000000..e43b95c --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/libdpdk-dev.dirs @@ -0,0 +1 @@ +usr/include diff --git a/ovs_build/dpdk-16.04/debian/libdpdk0.dirs b/ovs_build/dpdk-16.04/debian/libdpdk0.dirs new file mode 100644 index 0000000..6845771 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/libdpdk0.dirs @@ -0,0 +1 @@ +usr/lib diff --git a/ovs_build/dpdk-16.04/debian/libdpdk0.symbols.amd64 b/ovs_build/dpdk-16.04/debian/libdpdk0.symbols.amd64 new file mode 100644 index 0000000..743b1e9 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/libdpdk0.symbols.amd64 @@ -0,0 +1,580 @@ +libdpdk.so.0 libdpdk0 #MINVER# +* Build-Depends-Package: libdpdk-dev + DPDK_2.0@DPDK_2.0 2.2 + DPDK_2.1@DPDK_2.1 2.2 + DPDK_2.2@DPDK_2.2 2.2 + __rte_panic@DPDK_2.0 2.2 + _rte_eth_dev_callback_process@DPDK_2.2 2.2 + cirbuf_add_buf_head@DPDK_2.0 2.2 + cirbuf_add_buf_tail@DPDK_2.0 2.2 + cirbuf_add_head@DPDK_2.0 2.2 + cirbuf_add_head_safe@DPDK_2.0 2.2 + cirbuf_add_tail@DPDK_2.0 2.2 + cirbuf_add_tail_safe@DPDK_2.0 2.2 + cirbuf_align_left@DPDK_2.0 2.2 + cirbuf_align_right@DPDK_2.0 2.2 + cirbuf_del_buf_head@DPDK_2.0 2.2 + cirbuf_del_buf_tail@DPDK_2.0 2.2 + cirbuf_del_head@DPDK_2.0 2.2 + cirbuf_del_head_safe@DPDK_2.0 2.2 + cirbuf_del_tail@DPDK_2.0 2.2 + cirbuf_del_tail_safe@DPDK_2.0 2.2 + cirbuf_get_buf_head@DPDK_2.0 2.2 + cirbuf_get_buf_tail@DPDK_2.0 2.2 + cirbuf_get_head@DPDK_2.0 2.2 + cirbuf_get_tail@DPDK_2.0 2.2 + cirbuf_init@DPDK_2.0 2.2 + cmdline_complete@DPDK_2.0 2.2 + cmdline_complete_get_elt_string@DPDK_2.0 2.2 + cmdline_complete_get_nb_string@DPDK_2.0 2.2 + cmdline_file_new@DPDK_2.0 2.2 + cmdline_free@DPDK_2.0 2.2 + cmdline_get_help_etheraddr@DPDK_2.0 2.2 + cmdline_get_help_ipaddr@DPDK_2.0 2.2 + cmdline_get_help_num@DPDK_2.0 2.2 + cmdline_get_help_portlist@DPDK_2.0 2.2 + cmdline_get_help_string@DPDK_2.0 2.2 + cmdline_in@DPDK_2.0 2.2 + cmdline_interact@DPDK_2.0 2.2 + cmdline_isendoftoken@DPDK_2.0 2.2 + cmdline_new@DPDK_2.0 2.2 + cmdline_parse@DPDK_2.0 2.2 + cmdline_parse_etheraddr@DPDK_2.0 2.2 + cmdline_parse_ipaddr@DPDK_2.0 2.2 + cmdline_parse_num@DPDK_2.0 2.2 + cmdline_parse_portlist@DPDK_2.0 2.2 + cmdline_parse_string@DPDK_2.0 2.2 + cmdline_poll@DPDK_2.1 2.2 + cmdline_printf@DPDK_2.0 2.2 + cmdline_quit@DPDK_2.0 2.2 + cmdline_set_prompt@DPDK_2.0 2.2 + cmdline_stdin_exit@DPDK_2.0 2.2 + cmdline_stdin_new@DPDK_2.0 2.2 + cmdline_token_etheraddr_ops@DPDK_2.0 2.2 + cmdline_token_ipaddr_ops@DPDK_2.0 2.2 + cmdline_token_num_ops@DPDK_2.0 2.2 + cmdline_token_portlist_ops@DPDK_2.0 2.2 + cmdline_token_string_ops@DPDK_2.0 2.2 + cmdline_write_char@DPDK_2.0 2.2 + devargs_list@DPDK_2.0 2.2 + eal_parse_sysfs_value@DPDK_2.0 2.2 + eal_timer_source@DPDK_2.0 2.2 + eth_dev_null_create@DPDK_2.2 2.2 + lcore_config@DPDK_2.0 2.2 + pci_device_list@DPDK_2.0 2.2 + pci_driver_list@DPDK_2.0 2.2 + per_lcore__lcore_id@DPDK_2.0 2.2 + per_lcore__rte_errno@DPDK_2.0 2.2 + rdline_add_history@DPDK_2.0 2.2 + rdline_char_in@DPDK_2.0 2.2 + rdline_clear_history@DPDK_2.0 2.2 + rdline_get_buffer@DPDK_2.0 2.2 + rdline_get_history_item@DPDK_2.0 2.2 + rdline_init@DPDK_2.0 2.2 + rdline_newline@DPDK_2.0 2.2 + rdline_quit@DPDK_2.0 2.2 + rdline_redisplay@DPDK_2.0 2.2 + rdline_reset@DPDK_2.0 2.2 + rdline_restart@DPDK_2.0 2.2 + rdline_stop@DPDK_2.0 2.2 + rte_acl_add_rules@DPDK_2.0 2.2 + rte_acl_build@DPDK_2.0 2.2 + rte_acl_classify@DPDK_2.0 2.2 + rte_acl_classify_alg@DPDK_2.0 2.2 + rte_acl_classify_scalar@DPDK_2.0 2.2 + rte_acl_create@DPDK_2.0 2.2 + rte_acl_dump@DPDK_2.0 2.2 + rte_acl_find_existing@DPDK_2.0 2.2 + rte_acl_free@DPDK_2.0 2.2 + rte_acl_list_dump@DPDK_2.0 2.2 + rte_acl_reset@DPDK_2.0 2.2 + rte_acl_reset_rules@DPDK_2.0 2.2 + rte_acl_set_ctx_classify@DPDK_2.0 2.2 + rte_approx@DPDK_2.0 2.2 + rte_calloc@DPDK_2.0 2.2 + rte_calloc_socket@DPDK_2.0 2.2 + rte_cfgfile_close@DPDK_2.0 2.2 + rte_cfgfile_get_entry@DPDK_2.0 2.2 + rte_cfgfile_has_entry@DPDK_2.0 2.2 + rte_cfgfile_has_section@DPDK_2.0 2.2 + rte_cfgfile_load@DPDK_2.0 2.2 + rte_cfgfile_num_sections@DPDK_2.0 2.2 + rte_cfgfile_section_entries@DPDK_2.0 2.2 + rte_cfgfile_section_num_entries@DPDK_2.0 2.2 + rte_cfgfile_sections@DPDK_2.0 2.2 + rte_cpu_check_supported@DPDK_2.0 2.2 + rte_cryptodev_callback_register@DPDK_2.2 2.2 + rte_cryptodev_callback_unregister@DPDK_2.2 2.2 + rte_cryptodev_close@DPDK_2.2 2.2 + rte_cryptodev_configure@DPDK_2.2 2.2 + rte_cryptodev_count@DPDK_2.2 2.2 + rte_cryptodev_count_devtype@DPDK_2.2 2.2 + rte_cryptodev_create_vdev@DPDK_2.2 2.2 + rte_cryptodev_get_dev_id@DPDK_2.2 2.2 + rte_cryptodev_info_get@DPDK_2.2 2.2 + rte_cryptodev_pmd_allocate@DPDK_2.2 2.2 + rte_cryptodev_pmd_callback_process@DPDK_2.2 2.2 + rte_cryptodev_pmd_driver_register@DPDK_2.2 2.2 + rte_cryptodev_pmd_release_device@DPDK_2.2 2.2 + rte_cryptodev_pmd_virtual_dev_init@DPDK_2.2 2.2 + rte_cryptodev_queue_pair_count@DPDK_2.2 2.2 + rte_cryptodev_queue_pair_setup@DPDK_2.2 2.2 + rte_cryptodev_queue_pair_start@DPDK_2.2 2.2 + rte_cryptodev_queue_pair_stop@DPDK_2.2 2.2 + rte_cryptodev_session_create@DPDK_2.2 2.2 + rte_cryptodev_session_free@DPDK_2.2 2.2 + rte_cryptodev_socket_id@DPDK_2.2 2.2 + rte_cryptodev_start@DPDK_2.2 2.2 + rte_cryptodev_stats_get@DPDK_2.2 2.2 + rte_cryptodev_stats_reset@DPDK_2.2 2.2 + rte_cryptodev_stop@DPDK_2.2 2.2 + rte_cryptodevs@DPDK_2.2 2.2 + rte_ctrlmbuf_init@DPDK_2.0 2.2 + rte_cycles_vmware_tsc_map@DPDK_2.0 2.2 + rte_delay_us@DPDK_2.0 2.2 + rte_distributor_clear_returns@DPDK_2.0 2.2 + rte_distributor_create@DPDK_2.0 2.2 + rte_distributor_flush@DPDK_2.0 2.2 + rte_distributor_get_pkt@DPDK_2.0 2.2 + rte_distributor_poll_pkt@DPDK_2.0 2.2 + rte_distributor_process@DPDK_2.0 2.2 + rte_distributor_request_pkt@DPDK_2.0 2.2 + rte_distributor_return_pkt@DPDK_2.0 2.2 + rte_distributor_returned_pkts@DPDK_2.0 2.2 + rte_dom0_mempool_create@DPDK_2.0 2.2 + rte_dump_physmem_layout@DPDK_2.0 2.2 + rte_dump_registers@DPDK_2.0 2.2 + rte_dump_stack@DPDK_2.0 2.2 + rte_dump_tailq@DPDK_2.0 2.2 + rte_eal_alarm_cancel@DPDK_2.0 2.2 + rte_eal_alarm_set@DPDK_2.0 2.2 + rte_eal_dev_init@DPDK_2.0 2.2 + rte_eal_devargs_add@DPDK_2.0 2.2 + rte_eal_devargs_dump@DPDK_2.0 2.2 + rte_eal_devargs_type_count@DPDK_2.0 2.2 + rte_eal_driver_register@DPDK_2.0 2.2 + rte_eal_driver_unregister@DPDK_2.0 2.2 + rte_eal_get_configuration@DPDK_2.0 2.2 + rte_eal_get_lcore_state@DPDK_2.0 2.2 + rte_eal_get_physmem_layout@DPDK_2.0 2.2 + rte_eal_get_physmem_size@DPDK_2.0 2.2 + rte_eal_has_hugepages@DPDK_2.0 2.2 + rte_eal_init@DPDK_2.0 2.2 + rte_eal_iopl_init@DPDK_2.0 2.2 + rte_eal_lcore_role@DPDK_2.0 2.2 + rte_eal_mp_remote_launch@DPDK_2.0 2.2 + rte_eal_mp_wait_lcore@DPDK_2.0 2.2 + rte_eal_parse_devargs_str@DPDK_2.0 2.2 + rte_eal_pci_detach@DPDK_2.1 2.2 + rte_eal_pci_dump@DPDK_2.0 2.2 + rte_eal_pci_probe@DPDK_2.0 2.2 + rte_eal_pci_probe_one@DPDK_2.0 2.2 + rte_eal_pci_read_config@DPDK_2.1 2.2 + rte_eal_pci_register@DPDK_2.0 2.2 + rte_eal_pci_scan@DPDK_2.0 2.2 + rte_eal_pci_unregister@DPDK_2.0 2.2 + rte_eal_pci_write_config@DPDK_2.1 2.2 + rte_eal_process_type@DPDK_2.0 2.2 + rte_eal_remote_launch@DPDK_2.0 2.2 + rte_eal_tailq_lookup@DPDK_2.0 2.2 + rte_eal_tailq_register@DPDK_2.0 2.2 + rte_eal_vdev_init@DPDK_2.0 2.2 + rte_eal_vdev_uninit@DPDK_2.0 2.2 + rte_eal_wait_lcore@DPDK_2.0 2.2 + rte_epoll_ctl@DPDK_2.1 2.2 + rte_epoll_wait@DPDK_2.1 2.2 + rte_eth_add_rx_callback@DPDK_2.2 2.2 + rte_eth_add_tx_callback@DPDK_2.2 2.2 + rte_eth_allmulticast_disable@DPDK_2.2 2.2 + rte_eth_allmulticast_enable@DPDK_2.2 2.2 + rte_eth_allmulticast_get@DPDK_2.2 2.2 + rte_eth_bond_8023ad_conf_get@DPDK_2.0 2.2 + rte_eth_bond_8023ad_setup@DPDK_2.0 2.2 + rte_eth_bond_active_slaves_get@DPDK_2.0 2.2 + rte_eth_bond_create@DPDK_2.0 2.2 + rte_eth_bond_free@DPDK_2.1 2.2 + rte_eth_bond_link_monitoring_set@DPDK_2.0 2.2 + rte_eth_bond_mac_address_reset@DPDK_2.0 2.2 + rte_eth_bond_mac_address_set@DPDK_2.0 2.2 + rte_eth_bond_mode_get@DPDK_2.0 2.2 + rte_eth_bond_mode_set@DPDK_2.0 2.2 + rte_eth_bond_primary_get@DPDK_2.0 2.2 + rte_eth_bond_primary_set@DPDK_2.0 2.2 + rte_eth_bond_slave_add@DPDK_2.0 2.2 + rte_eth_bond_slave_remove@DPDK_2.0 2.2 + rte_eth_bond_slaves_get@DPDK_2.0 2.2 + rte_eth_bond_xmit_policy_get@DPDK_2.0 2.2 + rte_eth_bond_xmit_policy_set@DPDK_2.0 2.2 + rte_eth_copy_pci_info@DPDK_2.2 2.2 + rte_eth_dev_allocate@DPDK_2.2 2.2 + rte_eth_dev_allocated@DPDK_2.2 2.2 + rte_eth_dev_attach@DPDK_2.2 2.2 + rte_eth_dev_callback_register@DPDK_2.2 2.2 + rte_eth_dev_callback_unregister@DPDK_2.2 2.2 + rte_eth_dev_close@DPDK_2.2 2.2 + rte_eth_dev_configure@DPDK_2.2 2.2 + rte_eth_dev_count@DPDK_2.2 2.2 + rte_eth_dev_default_mac_addr_set@DPDK_2.2 2.2 + rte_eth_dev_detach@DPDK_2.2 2.2 + rte_eth_dev_filter_ctrl@DPDK_2.2 2.2 + rte_eth_dev_filter_supported@DPDK_2.2 2.2 + rte_eth_dev_flow_ctrl_get@DPDK_2.2 2.2 + rte_eth_dev_flow_ctrl_set@DPDK_2.2 2.2 + rte_eth_dev_get_dcb_info@DPDK_2.2 2.2 + rte_eth_dev_get_eeprom@DPDK_2.2 2.2 + rte_eth_dev_get_eeprom_length@DPDK_2.2 2.2 + rte_eth_dev_get_mtu@DPDK_2.2 2.2 + rte_eth_dev_get_reg_info@DPDK_2.2 2.2 + rte_eth_dev_get_reg_length@DPDK_2.2 2.2 + rte_eth_dev_get_vlan_offload@DPDK_2.2 2.2 + rte_eth_dev_info_get@DPDK_2.2 2.2 + rte_eth_dev_is_valid_port@DPDK_2.2 2.2 + rte_eth_dev_mac_addr_add@DPDK_2.2 2.2 + rte_eth_dev_mac_addr_remove@DPDK_2.2 2.2 + rte_eth_dev_priority_flow_ctrl_set@DPDK_2.2 2.2 + rte_eth_dev_release_port@DPDK_2.2 2.2 + rte_eth_dev_rss_hash_conf_get@DPDK_2.2 2.2 + rte_eth_dev_rss_hash_update@DPDK_2.2 2.2 + rte_eth_dev_rss_reta_query@DPDK_2.2 2.2 + rte_eth_dev_rss_reta_update@DPDK_2.2 2.2 + rte_eth_dev_rx_intr_ctl@DPDK_2.2 2.2 + rte_eth_dev_rx_intr_ctl_q@DPDK_2.2 2.2 + rte_eth_dev_rx_intr_disable@DPDK_2.2 2.2 + rte_eth_dev_rx_intr_enable@DPDK_2.2 2.2 + rte_eth_dev_rx_queue_start@DPDK_2.2 2.2 + rte_eth_dev_rx_queue_stop@DPDK_2.2 2.2 + rte_eth_dev_set_eeprom@DPDK_2.2 2.2 + rte_eth_dev_set_link_down@DPDK_2.2 2.2 + rte_eth_dev_set_link_up@DPDK_2.2 2.2 + rte_eth_dev_set_mc_addr_list@DPDK_2.2 2.2 + rte_eth_dev_set_mtu@DPDK_2.2 2.2 + rte_eth_dev_set_rx_queue_stats_mapping@DPDK_2.2 2.2 + rte_eth_dev_set_tx_queue_stats_mapping@DPDK_2.2 2.2 + rte_eth_dev_set_vf_rx@DPDK_2.2 2.2 + rte_eth_dev_set_vf_rxmode@DPDK_2.2 2.2 + rte_eth_dev_set_vf_tx@DPDK_2.2 2.2 + rte_eth_dev_set_vf_vlan_filter@DPDK_2.2 2.2 + rte_eth_dev_set_vlan_ether_type@DPDK_2.2 2.2 + rte_eth_dev_set_vlan_offload@DPDK_2.2 2.2 + rte_eth_dev_set_vlan_pvid@DPDK_2.2 2.2 + rte_eth_dev_set_vlan_strip_on_queue@DPDK_2.2 2.2 + rte_eth_dev_socket_id@DPDK_2.2 2.2 + rte_eth_dev_start@DPDK_2.2 2.2 + rte_eth_dev_stop@DPDK_2.2 2.2 + rte_eth_dev_tx_queue_start@DPDK_2.2 2.2 + rte_eth_dev_tx_queue_stop@DPDK_2.2 2.2 + rte_eth_dev_uc_all_hash_table_set@DPDK_2.2 2.2 + rte_eth_dev_uc_hash_table_set@DPDK_2.2 2.2 + rte_eth_dev_udp_tunnel_add@DPDK_2.2 2.2 + rte_eth_dev_udp_tunnel_delete@DPDK_2.2 2.2 + rte_eth_dev_vlan_filter@DPDK_2.2 2.2 + rte_eth_devices@DPDK_2.2 2.2 + rte_eth_dma_zone_reserve@DPDK_2.2 2.2 + rte_eth_driver_register@DPDK_2.2 2.2 + rte_eth_from_ring@DPDK_2.2 2.2 + rte_eth_from_rings@DPDK_2.0 2.2 + rte_eth_led_off@DPDK_2.2 2.2 + rte_eth_led_on@DPDK_2.2 2.2 + rte_eth_link_get@DPDK_2.2 2.2 + rte_eth_link_get_nowait@DPDK_2.2 2.2 + rte_eth_macaddr_get@DPDK_2.2 2.2 + rte_eth_mirror_rule_reset@DPDK_2.2 2.2 + rte_eth_mirror_rule_set@DPDK_2.2 2.2 + rte_eth_promiscuous_disable@DPDK_2.2 2.2 + rte_eth_promiscuous_enable@DPDK_2.2 2.2 + rte_eth_promiscuous_get@DPDK_2.2 2.2 + rte_eth_remove_rx_callback@DPDK_2.2 2.2 + rte_eth_remove_tx_callback@DPDK_2.2 2.2 + rte_eth_rx_queue_info_get@DPDK_2.2 2.2 + rte_eth_rx_queue_setup@DPDK_2.2 2.2 + rte_eth_set_queue_rate_limit@DPDK_2.2 2.2 + rte_eth_set_vf_rate_limit@DPDK_2.2 2.2 + rte_eth_stats_get@DPDK_2.2 2.2 + rte_eth_stats_reset@DPDK_2.2 2.2 + rte_eth_timesync_adjust_time@DPDK_2.2 2.2 + rte_eth_timesync_disable@DPDK_2.2 2.2 + rte_eth_timesync_enable@DPDK_2.2 2.2 + rte_eth_timesync_read_rx_timestamp@DPDK_2.2 2.2 + rte_eth_timesync_read_time@DPDK_2.2 2.2 + rte_eth_timesync_read_tx_timestamp@DPDK_2.2 2.2 + rte_eth_timesync_write_time@DPDK_2.2 2.2 + rte_eth_tx_queue_info_get@DPDK_2.2 2.2 + rte_eth_tx_queue_setup@DPDK_2.2 2.2 + rte_eth_xstats_get@DPDK_2.2 2.2 + rte_eth_xstats_reset@DPDK_2.2 2.2 + rte_exit@DPDK_2.0 2.2 + rte_fbk_hash_create@DPDK_2.0 2.2 + rte_fbk_hash_find_existing@DPDK_2.0 2.2 + rte_fbk_hash_free@DPDK_2.0 2.2 + rte_free@DPDK_2.0 2.2 + rte_get_rx_ol_flag_name@DPDK_2.0 2.2 + rte_get_tsc_hz@DPDK_2.0 2.2 + rte_get_tx_ol_flag_name@DPDK_2.0 2.2 + rte_hash_add_key@DPDK_2.0 2.2 + rte_hash_add_key_data@DPDK_2.1 2.2 + rte_hash_add_key_with_hash@DPDK_2.0 2.2 + rte_hash_add_key_with_hash_data@DPDK_2.1 2.2 + rte_hash_create@DPDK_2.0 2.2 + rte_hash_del_key@DPDK_2.0 2.2 + rte_hash_del_key_with_hash@DPDK_2.0 2.2 + rte_hash_find_existing@DPDK_2.0 2.2 + rte_hash_free@DPDK_2.0 2.2 + rte_hash_hash@DPDK_2.0 2.2 + rte_hash_iterate@DPDK_2.1 2.2 + rte_hash_lookup@DPDK_2.0 2.2 + rte_hash_lookup_bulk@DPDK_2.0 2.2 + rte_hash_lookup_bulk_data@DPDK_2.1 2.2 + rte_hash_lookup_data@DPDK_2.1 2.2 + rte_hash_lookup_with_hash@DPDK_2.0 2.2 + rte_hash_lookup_with_hash_data@DPDK_2.1 2.2 + rte_hash_reset@DPDK_2.1 2.2 + rte_hash_set_cmp_func@DPDK_2.2 2.2 + rte_hexdump@DPDK_2.0 2.2 + rte_intr_allow_others@DPDK_2.1 2.2 + rte_intr_callback_register@DPDK_2.0 2.2 + rte_intr_callback_unregister@DPDK_2.0 2.2 + rte_intr_cap_multiple@DPDK_2.2 2.2 + rte_intr_disable@DPDK_2.0 2.2 + rte_intr_dp_is_en@DPDK_2.1 2.2 + rte_intr_efd_disable@DPDK_2.1 2.2 + rte_intr_efd_enable@DPDK_2.1 2.2 + rte_intr_enable@DPDK_2.0 2.2 + rte_intr_rx_ctl@DPDK_2.1 2.2 + rte_intr_tls_epfd@DPDK_2.1 2.2 + rte_ip_frag_free_death_row@DPDK_2.0 2.2 + rte_ip_frag_table_create@DPDK_2.0 2.2 + rte_ip_frag_table_statistics_dump@DPDK_2.0 2.2 + rte_ipv4_frag_reassemble_packet@DPDK_2.0 2.2 + rte_ipv4_fragment_packet@DPDK_2.0 2.2 + rte_ipv6_frag_reassemble_packet@DPDK_2.0 2.2 + rte_ipv6_fragment_packet@DPDK_2.0 2.2 + rte_jobstats_context_finish@DPDK_2.0 2.2 + rte_jobstats_context_init@DPDK_2.0 2.2 + rte_jobstats_context_reset@DPDK_2.0 2.2 + rte_jobstats_context_start@DPDK_2.0 2.2 + rte_jobstats_finish@DPDK_2.0 2.2 + rte_jobstats_init@DPDK_2.0 2.2 + rte_jobstats_reset@DPDK_2.0 2.2 + rte_jobstats_set_max@DPDK_2.0 2.2 + rte_jobstats_set_min@DPDK_2.0 2.2 + rte_jobstats_set_period@DPDK_2.0 2.2 + rte_jobstats_set_target@DPDK_2.0 2.2 + rte_jobstats_set_update_period_function@DPDK_2.0 2.2 + rte_jobstats_start@DPDK_2.0 2.2 + rte_keepalive_create@DPDK_2.2 2.2 + rte_keepalive_dispatch_pings@DPDK_2.2 2.2 + rte_keepalive_register_core@DPDK_2.2 2.2 + rte_kni_alloc@DPDK_2.0 2.2 + rte_kni_close@DPDK_2.0 2.2 + rte_kni_get@DPDK_2.0 2.2 + rte_kni_get_name@DPDK_2.0 2.2 + rte_kni_handle_request@DPDK_2.0 2.2 + rte_kni_init@DPDK_2.0 2.2 + rte_kni_register_handlers@DPDK_2.0 2.2 + rte_kni_release@DPDK_2.0 2.2 + rte_kni_rx_burst@DPDK_2.0 2.2 + rte_kni_tx_burst@DPDK_2.0 2.2 + rte_kni_unregister_handlers@DPDK_2.0 2.2 + rte_kvargs_count@DPDK_2.0 2.2 + rte_kvargs_free@DPDK_2.0 2.2 + rte_kvargs_parse@DPDK_2.0 2.2 + rte_kvargs_process@DPDK_2.0 2.2 + rte_log@DPDK_2.0 2.2 + rte_log_add_in_history@DPDK_2.0 2.2 + rte_log_cur_msg_loglevel@DPDK_2.0 2.2 + rte_log_cur_msg_logtype@DPDK_2.0 2.2 + rte_log_dump_history@DPDK_2.0 2.2 + rte_log_set_history@DPDK_2.0 2.2 + rte_logs@DPDK_2.0 2.2 + rte_lpm6_add@DPDK_2.0 2.2 + rte_lpm6_create@DPDK_2.0 2.2 + rte_lpm6_delete@DPDK_2.0 2.2 + rte_lpm6_delete_all@DPDK_2.0 2.2 + rte_lpm6_delete_bulk_func@DPDK_2.0 2.2 + rte_lpm6_find_existing@DPDK_2.0 2.2 + rte_lpm6_free@DPDK_2.0 2.2 + rte_lpm6_is_rule_present@DPDK_2.0 2.2 + rte_lpm6_lookup@DPDK_2.0 2.2 + rte_lpm6_lookup_bulk_func@DPDK_2.0 2.2 + rte_lpm_add@DPDK_2.0 2.2 + rte_lpm_create@DPDK_2.0 2.2 + rte_lpm_delete@DPDK_2.0 2.2 + rte_lpm_delete_all@DPDK_2.0 2.2 + rte_lpm_find_existing@DPDK_2.0 2.2 + rte_lpm_free@DPDK_2.0 2.2 + rte_lpm_is_rule_present@DPDK_2.0 2.2 + rte_malloc@DPDK_2.0 2.2 + rte_malloc_dump_stats@DPDK_2.0 2.2 + rte_malloc_get_socket_stats@DPDK_2.0 2.2 + rte_malloc_set_limit@DPDK_2.0 2.2 + rte_malloc_socket@DPDK_2.0 2.2 + rte_malloc_validate@DPDK_2.0 2.2 + rte_malloc_virt2phy@DPDK_2.0 2.2 + rte_mbuf_sanity_check@DPDK_2.0 2.2 + rte_mem_lock_page@DPDK_2.0 2.2 + rte_mem_virt2phy@DPDK_2.0 2.2 + rte_memdump@DPDK_2.0 2.2 + rte_memory_get_nchannel@DPDK_2.0 2.2 + rte_memory_get_nrank@DPDK_2.0 2.2 + rte_mempool_audit@DPDK_2.0 2.2 + rte_mempool_calc_obj_size@DPDK_2.0 2.2 + rte_mempool_count@DPDK_2.0 2.2 + rte_mempool_create@DPDK_2.0 2.2 + rte_mempool_dump@DPDK_2.0 2.2 + rte_mempool_gntalloc_create@DPDK_2.0 2.2 + rte_mempool_list_dump@DPDK_2.0 2.2 + rte_mempool_lookup@DPDK_2.0 2.2 + rte_mempool_obj_iter@DPDK_2.0 2.2 + rte_mempool_walk@DPDK_2.0 2.2 + rte_mempool_xmem_create@DPDK_2.0 2.2 + rte_mempool_xmem_size@DPDK_2.0 2.2 + rte_mempool_xmem_usage@DPDK_2.0 2.2 + rte_memzone_dump@DPDK_2.0 2.2 + rte_memzone_free@DPDK_2.1 2.2 + rte_memzone_lookup@DPDK_2.0 2.2 + rte_memzone_reserve@DPDK_2.0 2.2 + rte_memzone_reserve_aligned@DPDK_2.0 2.2 + rte_memzone_reserve_bounded@DPDK_2.0 2.2 + rte_memzone_walk@DPDK_2.0 2.2 + rte_meter_srtcm_config@DPDK_2.0 2.2 + rte_meter_trtcm_config@DPDK_2.0 2.2 + rte_openlog_stream@DPDK_2.0 2.2 + rte_pipeline_check@DPDK_2.0 2.2 + rte_pipeline_create@DPDK_2.0 2.2 + rte_pipeline_flush@DPDK_2.0 2.2 + rte_pipeline_free@DPDK_2.0 2.2 + rte_pipeline_port_in_connect_to_table@DPDK_2.0 2.2 + rte_pipeline_port_in_create@DPDK_2.0 2.2 + rte_pipeline_port_in_disable@DPDK_2.0 2.2 + rte_pipeline_port_in_enable@DPDK_2.0 2.2 + rte_pipeline_port_in_stats_read@DPDK_2.1 2.2 + rte_pipeline_port_out_create@DPDK_2.0 2.2 + rte_pipeline_port_out_packet_insert@DPDK_2.0 2.2 + rte_pipeline_port_out_stats_read@DPDK_2.1 2.2 + rte_pipeline_run@DPDK_2.0 2.2 + rte_pipeline_table_create@DPDK_2.0 2.2 + rte_pipeline_table_default_entry_add@DPDK_2.0 2.2 + rte_pipeline_table_default_entry_delete@DPDK_2.0 2.2 + rte_pipeline_table_entry_add@DPDK_2.0 2.2 + rte_pipeline_table_entry_add_bulk@DPDK_2.2 2.2 + rte_pipeline_table_entry_delete@DPDK_2.0 2.2 + rte_pipeline_table_entry_delete_bulk@DPDK_2.2 2.2 + rte_pipeline_table_stats_read@DPDK_2.1 2.2 + rte_pktmbuf_dump@DPDK_2.0 2.2 + rte_pktmbuf_init@DPDK_2.0 2.2 + rte_pktmbuf_offload_pool_create@DPDK_2.2 2.2 + rte_pktmbuf_pool_create@DPDK_2.1 2.2 + rte_pktmbuf_pool_init@DPDK_2.0 2.2 + rte_pmd_af_packet_devinit@DPDK_2.0 2.2 + rte_port_ethdev_reader_ops@DPDK_2.0 2.2 + rte_port_ethdev_writer_nodrop_ops@DPDK_2.1 2.2 + rte_port_ethdev_writer_ops@DPDK_2.0 2.2 + rte_port_ring_multi_reader_ops@DPDK_2.2 2.2 + rte_port_ring_multi_writer_nodrop_ops@DPDK_2.2 2.2 + rte_port_ring_multi_writer_ops@DPDK_2.2 2.2 + rte_port_ring_reader_ipv4_frag_ops@DPDK_2.0 2.2 + rte_port_ring_reader_ipv6_frag_ops@DPDK_2.1 2.2 + rte_port_ring_reader_ops@DPDK_2.0 2.2 + rte_port_ring_writer_ipv4_ras_ops@DPDK_2.0 2.2 + rte_port_ring_writer_ipv6_ras_ops@DPDK_2.1 2.2 + rte_port_ring_writer_nodrop_ops@DPDK_2.1 2.2 + rte_port_ring_writer_ops@DPDK_2.0 2.2 + rte_port_sched_reader_ops@DPDK_2.0 2.2 + rte_port_sched_writer_ops@DPDK_2.0 2.2 + rte_port_sink_ops@DPDK_2.0 2.2 + rte_port_source_ops@DPDK_2.0 2.2 + rte_power_exit@DPDK_2.0 2.2 + rte_power_freq_down@DPDK_2.0 2.2 + rte_power_freq_max@DPDK_2.0 2.2 + rte_power_freq_min@DPDK_2.0 2.2 + rte_power_freq_up@DPDK_2.0 2.2 + rte_power_freqs@DPDK_2.0 2.2 + rte_power_get_env@DPDK_2.0 2.2 + rte_power_get_freq@DPDK_2.0 2.2 + rte_power_init@DPDK_2.0 2.2 + rte_power_set_env@DPDK_2.0 2.2 + rte_power_set_freq@DPDK_2.0 2.2 + rte_power_unset_env@DPDK_2.0 2.2 + rte_realloc@DPDK_2.0 2.2 + rte_red_config_init@DPDK_2.0 2.2 + rte_red_log2_1_minus_Wq@DPDK_2.0 2.2 + rte_red_pow2_frac_inv@DPDK_2.0 2.2 + rte_red_rand_seed@DPDK_2.0 2.2 + rte_red_rand_val@DPDK_2.0 2.2 + rte_red_rt_data_init@DPDK_2.0 2.2 + rte_reorder_create@DPDK_2.0 2.2 + rte_reorder_drain@DPDK_2.0 2.2 + rte_reorder_find_existing@DPDK_2.0 2.2 + rte_reorder_free@DPDK_2.0 2.2 + rte_reorder_init@DPDK_2.0 2.2 + rte_reorder_insert@DPDK_2.0 2.2 + rte_reorder_reset@DPDK_2.0 2.2 + rte_ring_create@DPDK_2.0 2.2 + rte_ring_dump@DPDK_2.0 2.2 + rte_ring_free@DPDK_2.2 2.2 + rte_ring_get_memsize@DPDK_2.0 2.2 + rte_ring_init@DPDK_2.0 2.2 + rte_ring_list_dump@DPDK_2.0 2.2 + rte_ring_lookup@DPDK_2.0 2.2 + rte_ring_set_water_mark@DPDK_2.0 2.2 + rte_sched_pipe_config@DPDK_2.0 2.2 + rte_sched_port_config@DPDK_2.0 2.2 + rte_sched_port_dequeue@DPDK_2.0 2.2 + rte_sched_port_enqueue@DPDK_2.0 2.2 + rte_sched_port_free@DPDK_2.0 2.2 + rte_sched_port_get_memory_footprint@DPDK_2.0 2.2 + rte_sched_port_pkt_read_color@DPDK_2.1 2.2 + rte_sched_port_pkt_read_tree_path@DPDK_2.1 2.2 + rte_sched_port_pkt_write@DPDK_2.1 2.2 + rte_sched_queue_read_stats@DPDK_2.0 2.2 + rte_sched_subport_config@DPDK_2.0 2.2 + rte_sched_subport_read_stats@DPDK_2.0 2.2 + rte_set_application_usage_hook@DPDK_2.0 2.2 + rte_set_log_level@DPDK_2.0 2.2 + rte_set_log_type@DPDK_2.0 2.2 + rte_socket_id@DPDK_2.0 2.2 + rte_strerror@DPDK_2.0 2.2 + rte_strsplit@DPDK_2.0 2.2 + rte_sys_gettid@DPDK_2.0 2.2 + rte_table_acl_ops@DPDK_2.0 2.2 + rte_table_array_ops@DPDK_2.0 2.2 + rte_table_hash_ext_ops@DPDK_2.0 2.2 + rte_table_hash_key16_ext_dosig_ops@DPDK_2.2 2.2 + rte_table_hash_key16_ext_ops@DPDK_2.0 2.2 + rte_table_hash_key16_lru_ops@DPDK_2.0 2.2 + rte_table_hash_key32_ext_ops@DPDK_2.0 2.2 + rte_table_hash_key32_lru_ops@DPDK_2.0 2.2 + rte_table_hash_key8_ext_dosig_ops@DPDK_2.0 2.2 + rte_table_hash_key8_ext_ops@DPDK_2.0 2.2 + rte_table_hash_key8_lru_dosig_ops@DPDK_2.0 2.2 + rte_table_hash_key8_lru_ops@DPDK_2.0 2.2 + rte_table_hash_lru_ops@DPDK_2.0 2.2 + rte_table_lpm_ipv6_ops@DPDK_2.0 2.2 + rte_table_lpm_ops@DPDK_2.0 2.2 + rte_table_stub_ops@DPDK_2.0 2.2 + rte_thread_get_affinity@DPDK_2.0 2.2 + rte_thread_set_affinity@DPDK_2.0 2.2 + rte_timer_dump_stats@DPDK_2.0 2.2 + rte_timer_init@DPDK_2.0 2.2 + rte_timer_manage@DPDK_2.0 2.2 + rte_timer_pending@DPDK_2.0 2.2 + rte_timer_reset@DPDK_2.0 2.2 + rte_timer_reset_sync@DPDK_2.0 2.2 + rte_timer_stop@DPDK_2.0 2.2 + rte_timer_stop_sync@DPDK_2.0 2.2 + rte_timer_subsystem_init@DPDK_2.0 2.2 + rte_vhost_dequeue_burst@DPDK_2.0 2.2 + rte_vhost_driver_callback_register@DPDK_2.0 2.2 + rte_vhost_driver_register@DPDK_2.0 2.2 + rte_vhost_driver_session_start@DPDK_2.0 2.2 + rte_vhost_driver_unregister@DPDK_2.1 2.2 + rte_vhost_enable_guest_notification@DPDK_2.0 2.2 + rte_vhost_enqueue_burst@DPDK_2.0 2.2 + rte_vhost_feature_disable@DPDK_2.0 2.2 + rte_vhost_feature_enable@DPDK_2.0 2.2 + rte_vhost_feature_get@DPDK_2.0 2.2 + rte_vlog@DPDK_2.0 2.2 + rte_zmalloc@DPDK_2.0 2.2 + rte_zmalloc_socket@DPDK_2.0 2.2 + vt100_init@DPDK_2.0 2.2 + vt100_parser@DPDK_2.0 2.2 diff --git a/ovs_build/dpdk-16.04/debian/libdpdk0.symbols.i386 b/ovs_build/dpdk-16.04/debian/libdpdk0.symbols.i386 new file mode 100644 index 0000000..7d450aa --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/libdpdk0.symbols.i386 @@ -0,0 +1,569 @@ +libdpdk.so.0 libdpdk0 #MINVER# +* Build-Depends-Package: libdpdk-dev + DPDK_2.0@DPDK_2.0 2.2 + DPDK_2.1@DPDK_2.1 2.2 + DPDK_2.2@DPDK_2.2 2.2 + __rte_panic@DPDK_2.0 2.2 + _rte_eth_dev_callback_process@DPDK_2.2 2.2 + cirbuf_add_buf_head@DPDK_2.0 2.2 + cirbuf_add_buf_tail@DPDK_2.0 2.2 + cirbuf_add_head@DPDK_2.0 2.2 + cirbuf_add_head_safe@DPDK_2.0 2.2 + cirbuf_add_tail@DPDK_2.0 2.2 + cirbuf_add_tail_safe@DPDK_2.0 2.2 + cirbuf_align_left@DPDK_2.0 2.2 + cirbuf_align_right@DPDK_2.0 2.2 + cirbuf_del_buf_head@DPDK_2.0 2.2 + cirbuf_del_buf_tail@DPDK_2.0 2.2 + cirbuf_del_head@DPDK_2.0 2.2 + cirbuf_del_head_safe@DPDK_2.0 2.2 + cirbuf_del_tail@DPDK_2.0 2.2 + cirbuf_del_tail_safe@DPDK_2.0 2.2 + cirbuf_get_buf_head@DPDK_2.0 2.2 + cirbuf_get_buf_tail@DPDK_2.0 2.2 + cirbuf_get_head@DPDK_2.0 2.2 + cirbuf_get_tail@DPDK_2.0 2.2 + cirbuf_init@DPDK_2.0 2.2 + cmdline_complete@DPDK_2.0 2.2 + cmdline_complete_get_elt_string@DPDK_2.0 2.2 + cmdline_complete_get_nb_string@DPDK_2.0 2.2 + cmdline_file_new@DPDK_2.0 2.2 + cmdline_free@DPDK_2.0 2.2 + cmdline_get_help_etheraddr@DPDK_2.0 2.2 + cmdline_get_help_ipaddr@DPDK_2.0 2.2 + cmdline_get_help_num@DPDK_2.0 2.2 + cmdline_get_help_portlist@DPDK_2.0 2.2 + cmdline_get_help_string@DPDK_2.0 2.2 + cmdline_in@DPDK_2.0 2.2 + cmdline_interact@DPDK_2.0 2.2 + cmdline_isendoftoken@DPDK_2.0 2.2 + cmdline_new@DPDK_2.0 2.2 + cmdline_parse@DPDK_2.0 2.2 + cmdline_parse_etheraddr@DPDK_2.0 2.2 + cmdline_parse_ipaddr@DPDK_2.0 2.2 + cmdline_parse_num@DPDK_2.0 2.2 + cmdline_parse_portlist@DPDK_2.0 2.2 + cmdline_parse_string@DPDK_2.0 2.2 + cmdline_poll@DPDK_2.1 2.2 + cmdline_printf@DPDK_2.0 2.2 + cmdline_quit@DPDK_2.0 2.2 + cmdline_set_prompt@DPDK_2.0 2.2 + cmdline_stdin_exit@DPDK_2.0 2.2 + cmdline_stdin_new@DPDK_2.0 2.2 + cmdline_token_etheraddr_ops@DPDK_2.0 2.2 + cmdline_token_ipaddr_ops@DPDK_2.0 2.2 + cmdline_token_num_ops@DPDK_2.0 2.2 + cmdline_token_portlist_ops@DPDK_2.0 2.2 + cmdline_token_string_ops@DPDK_2.0 2.2 + cmdline_write_char@DPDK_2.0 2.2 + devargs_list@DPDK_2.0 2.2 + eal_parse_sysfs_value@DPDK_2.0 2.2 + eal_timer_source@DPDK_2.0 2.2 + eth_dev_null_create@DPDK_2.2 2.2 + lcore_config@DPDK_2.0 2.2 + pci_device_list@DPDK_2.0 2.2 + pci_driver_list@DPDK_2.0 2.2 + per_lcore__lcore_id@DPDK_2.0 2.2 + per_lcore__rte_errno@DPDK_2.0 2.2 + rdline_add_history@DPDK_2.0 2.2 + rdline_char_in@DPDK_2.0 2.2 + rdline_clear_history@DPDK_2.0 2.2 + rdline_get_buffer@DPDK_2.0 2.2 + rdline_get_history_item@DPDK_2.0 2.2 + rdline_init@DPDK_2.0 2.2 + rdline_newline@DPDK_2.0 2.2 + rdline_quit@DPDK_2.0 2.2 + rdline_redisplay@DPDK_2.0 2.2 + rdline_reset@DPDK_2.0 2.2 + rdline_restart@DPDK_2.0 2.2 + rdline_stop@DPDK_2.0 2.2 + rte_acl_add_rules@DPDK_2.0 2.2 + rte_acl_build@DPDK_2.0 2.2 + rte_acl_classify@DPDK_2.0 2.2 + rte_acl_classify_alg@DPDK_2.0 2.2 + rte_acl_classify_scalar@DPDK_2.0 2.2 + rte_acl_create@DPDK_2.0 2.2 + rte_acl_dump@DPDK_2.0 2.2 + rte_acl_find_existing@DPDK_2.0 2.2 + rte_acl_free@DPDK_2.0 2.2 + rte_acl_list_dump@DPDK_2.0 2.2 + rte_acl_reset@DPDK_2.0 2.2 + rte_acl_reset_rules@DPDK_2.0 2.2 + rte_acl_set_ctx_classify@DPDK_2.0 2.2 + rte_approx@DPDK_2.0 2.2 + rte_calloc@DPDK_2.0 2.2 + rte_calloc_socket@DPDK_2.0 2.2 + rte_cfgfile_close@DPDK_2.0 2.2 + rte_cfgfile_get_entry@DPDK_2.0 2.2 + rte_cfgfile_has_entry@DPDK_2.0 2.2 + rte_cfgfile_has_section@DPDK_2.0 2.2 + rte_cfgfile_load@DPDK_2.0 2.2 + rte_cfgfile_num_sections@DPDK_2.0 2.2 + rte_cfgfile_section_entries@DPDK_2.0 2.2 + rte_cfgfile_section_num_entries@DPDK_2.0 2.2 + rte_cfgfile_sections@DPDK_2.0 2.2 + rte_cpu_check_supported@DPDK_2.0 2.2 + rte_cryptodev_callback_register@DPDK_2.2 2.2 + rte_cryptodev_callback_unregister@DPDK_2.2 2.2 + rte_cryptodev_close@DPDK_2.2 2.2 + rte_cryptodev_configure@DPDK_2.2 2.2 + rte_cryptodev_count@DPDK_2.2 2.2 + rte_cryptodev_count_devtype@DPDK_2.2 2.2 + rte_cryptodev_create_vdev@DPDK_2.2 2.2 + rte_cryptodev_get_dev_id@DPDK_2.2 2.2 + rte_cryptodev_info_get@DPDK_2.2 2.2 + rte_cryptodev_pmd_allocate@DPDK_2.2 2.2 + rte_cryptodev_pmd_callback_process@DPDK_2.2 2.2 + rte_cryptodev_pmd_driver_register@DPDK_2.2 2.2 + rte_cryptodev_pmd_release_device@DPDK_2.2 2.2 + rte_cryptodev_pmd_virtual_dev_init@DPDK_2.2 2.2 + rte_cryptodev_queue_pair_count@DPDK_2.2 2.2 + rte_cryptodev_queue_pair_setup@DPDK_2.2 2.2 + rte_cryptodev_queue_pair_start@DPDK_2.2 2.2 + rte_cryptodev_queue_pair_stop@DPDK_2.2 2.2 + rte_cryptodev_session_create@DPDK_2.2 2.2 + rte_cryptodev_session_free@DPDK_2.2 2.2 + rte_cryptodev_socket_id@DPDK_2.2 2.2 + rte_cryptodev_start@DPDK_2.2 2.2 + rte_cryptodev_stats_get@DPDK_2.2 2.2 + rte_cryptodev_stats_reset@DPDK_2.2 2.2 + rte_cryptodev_stop@DPDK_2.2 2.2 + rte_cryptodevs@DPDK_2.2 2.2 + rte_ctrlmbuf_init@DPDK_2.0 2.2 + rte_cycles_vmware_tsc_map@DPDK_2.0 2.2 + rte_delay_us@DPDK_2.0 2.2 + rte_distributor_clear_returns@DPDK_2.0 2.2 + rte_distributor_create@DPDK_2.0 2.2 + rte_distributor_flush@DPDK_2.0 2.2 + rte_distributor_get_pkt@DPDK_2.0 2.2 + rte_distributor_poll_pkt@DPDK_2.0 2.2 + rte_distributor_process@DPDK_2.0 2.2 + rte_distributor_request_pkt@DPDK_2.0 2.2 + rte_distributor_return_pkt@DPDK_2.0 2.2 + rte_distributor_returned_pkts@DPDK_2.0 2.2 + rte_dom0_mempool_create@DPDK_2.0 2.2 + rte_dump_physmem_layout@DPDK_2.0 2.2 + rte_dump_registers@DPDK_2.0 2.2 + rte_dump_stack@DPDK_2.0 2.2 + rte_dump_tailq@DPDK_2.0 2.2 + rte_eal_alarm_cancel@DPDK_2.0 2.2 + rte_eal_alarm_set@DPDK_2.0 2.2 + rte_eal_dev_init@DPDK_2.0 2.2 + rte_eal_devargs_add@DPDK_2.0 2.2 + rte_eal_devargs_dump@DPDK_2.0 2.2 + rte_eal_devargs_type_count@DPDK_2.0 2.2 + rte_eal_driver_register@DPDK_2.0 2.2 + rte_eal_driver_unregister@DPDK_2.0 2.2 + rte_eal_get_configuration@DPDK_2.0 2.2 + rte_eal_get_lcore_state@DPDK_2.0 2.2 + rte_eal_get_physmem_layout@DPDK_2.0 2.2 + rte_eal_get_physmem_size@DPDK_2.0 2.2 + rte_eal_has_hugepages@DPDK_2.0 2.2 + rte_eal_init@DPDK_2.0 2.2 + rte_eal_iopl_init@DPDK_2.0 2.2 + rte_eal_lcore_role@DPDK_2.0 2.2 + rte_eal_mp_remote_launch@DPDK_2.0 2.2 + rte_eal_mp_wait_lcore@DPDK_2.0 2.2 + rte_eal_parse_devargs_str@DPDK_2.0 2.2 + rte_eal_pci_detach@DPDK_2.1 2.2 + rte_eal_pci_dump@DPDK_2.0 2.2 + rte_eal_pci_probe@DPDK_2.0 2.2 + rte_eal_pci_probe_one@DPDK_2.0 2.2 + rte_eal_pci_read_config@DPDK_2.1 2.2 + rte_eal_pci_register@DPDK_2.0 2.2 + rte_eal_pci_scan@DPDK_2.0 2.2 + rte_eal_pci_unregister@DPDK_2.0 2.2 + rte_eal_pci_write_config@DPDK_2.1 2.2 + rte_eal_process_type@DPDK_2.0 2.2 + rte_eal_remote_launch@DPDK_2.0 2.2 + rte_eal_tailq_lookup@DPDK_2.0 2.2 + rte_eal_tailq_register@DPDK_2.0 2.2 + rte_eal_vdev_init@DPDK_2.0 2.2 + rte_eal_vdev_uninit@DPDK_2.0 2.2 + rte_eal_wait_lcore@DPDK_2.0 2.2 + rte_epoll_ctl@DPDK_2.1 2.2 + rte_epoll_wait@DPDK_2.1 2.2 + rte_eth_add_rx_callback@DPDK_2.2 2.2 + rte_eth_add_tx_callback@DPDK_2.2 2.2 + rte_eth_allmulticast_disable@DPDK_2.2 2.2 + rte_eth_allmulticast_enable@DPDK_2.2 2.2 + rte_eth_allmulticast_get@DPDK_2.2 2.2 + rte_eth_bond_8023ad_conf_get@DPDK_2.0 2.2 + rte_eth_bond_8023ad_setup@DPDK_2.0 2.2 + rte_eth_bond_active_slaves_get@DPDK_2.0 2.2 + rte_eth_bond_create@DPDK_2.0 2.2 + rte_eth_bond_free@DPDK_2.1 2.2 + rte_eth_bond_link_monitoring_set@DPDK_2.0 2.2 + rte_eth_bond_mac_address_reset@DPDK_2.0 2.2 + rte_eth_bond_mac_address_set@DPDK_2.0 2.2 + rte_eth_bond_mode_get@DPDK_2.0 2.2 + rte_eth_bond_mode_set@DPDK_2.0 2.2 + rte_eth_bond_primary_get@DPDK_2.0 2.2 + rte_eth_bond_primary_set@DPDK_2.0 2.2 + rte_eth_bond_slave_add@DPDK_2.0 2.2 + rte_eth_bond_slave_remove@DPDK_2.0 2.2 + rte_eth_bond_slaves_get@DPDK_2.0 2.2 + rte_eth_bond_xmit_policy_get@DPDK_2.0 2.2 + rte_eth_bond_xmit_policy_set@DPDK_2.0 2.2 + rte_eth_copy_pci_info@DPDK_2.2 2.2 + rte_eth_dev_allocate@DPDK_2.2 2.2 + rte_eth_dev_allocated@DPDK_2.2 2.2 + rte_eth_dev_attach@DPDK_2.2 2.2 + rte_eth_dev_callback_register@DPDK_2.2 2.2 + rte_eth_dev_callback_unregister@DPDK_2.2 2.2 + rte_eth_dev_close@DPDK_2.2 2.2 + rte_eth_dev_configure@DPDK_2.2 2.2 + rte_eth_dev_count@DPDK_2.2 2.2 + rte_eth_dev_default_mac_addr_set@DPDK_2.2 2.2 + rte_eth_dev_detach@DPDK_2.2 2.2 + rte_eth_dev_filter_ctrl@DPDK_2.2 2.2 + rte_eth_dev_filter_supported@DPDK_2.2 2.2 + rte_eth_dev_flow_ctrl_get@DPDK_2.2 2.2 + rte_eth_dev_flow_ctrl_set@DPDK_2.2 2.2 + rte_eth_dev_get_dcb_info@DPDK_2.2 2.2 + rte_eth_dev_get_eeprom@DPDK_2.2 2.2 + rte_eth_dev_get_eeprom_length@DPDK_2.2 2.2 + rte_eth_dev_get_mtu@DPDK_2.2 2.2 + rte_eth_dev_get_reg_info@DPDK_2.2 2.2 + rte_eth_dev_get_reg_length@DPDK_2.2 2.2 + rte_eth_dev_get_vlan_offload@DPDK_2.2 2.2 + rte_eth_dev_info_get@DPDK_2.2 2.2 + rte_eth_dev_is_valid_port@DPDK_2.2 2.2 + rte_eth_dev_mac_addr_add@DPDK_2.2 2.2 + rte_eth_dev_mac_addr_remove@DPDK_2.2 2.2 + rte_eth_dev_priority_flow_ctrl_set@DPDK_2.2 2.2 + rte_eth_dev_release_port@DPDK_2.2 2.2 + rte_eth_dev_rss_hash_conf_get@DPDK_2.2 2.2 + rte_eth_dev_rss_hash_update@DPDK_2.2 2.2 + rte_eth_dev_rss_reta_query@DPDK_2.2 2.2 + rte_eth_dev_rss_reta_update@DPDK_2.2 2.2 + rte_eth_dev_rx_intr_ctl@DPDK_2.2 2.2 + rte_eth_dev_rx_intr_ctl_q@DPDK_2.2 2.2 + rte_eth_dev_rx_intr_disable@DPDK_2.2 2.2 + rte_eth_dev_rx_intr_enable@DPDK_2.2 2.2 + rte_eth_dev_rx_queue_start@DPDK_2.2 2.2 + rte_eth_dev_rx_queue_stop@DPDK_2.2 2.2 + rte_eth_dev_set_eeprom@DPDK_2.2 2.2 + rte_eth_dev_set_link_down@DPDK_2.2 2.2 + rte_eth_dev_set_link_up@DPDK_2.2 2.2 + rte_eth_dev_set_mc_addr_list@DPDK_2.2 2.2 + rte_eth_dev_set_mtu@DPDK_2.2 2.2 + rte_eth_dev_set_rx_queue_stats_mapping@DPDK_2.2 2.2 + rte_eth_dev_set_tx_queue_stats_mapping@DPDK_2.2 2.2 + rte_eth_dev_set_vf_rx@DPDK_2.2 2.2 + rte_eth_dev_set_vf_rxmode@DPDK_2.2 2.2 + rte_eth_dev_set_vf_tx@DPDK_2.2 2.2 + rte_eth_dev_set_vf_vlan_filter@DPDK_2.2 2.2 + rte_eth_dev_set_vlan_ether_type@DPDK_2.2 2.2 + rte_eth_dev_set_vlan_offload@DPDK_2.2 2.2 + rte_eth_dev_set_vlan_pvid@DPDK_2.2 2.2 + rte_eth_dev_set_vlan_strip_on_queue@DPDK_2.2 2.2 + rte_eth_dev_socket_id@DPDK_2.2 2.2 + rte_eth_dev_start@DPDK_2.2 2.2 + rte_eth_dev_stop@DPDK_2.2 2.2 + rte_eth_dev_tx_queue_start@DPDK_2.2 2.2 + rte_eth_dev_tx_queue_stop@DPDK_2.2 2.2 + rte_eth_dev_uc_all_hash_table_set@DPDK_2.2 2.2 + rte_eth_dev_uc_hash_table_set@DPDK_2.2 2.2 + rte_eth_dev_udp_tunnel_add@DPDK_2.2 2.2 + rte_eth_dev_udp_tunnel_delete@DPDK_2.2 2.2 + rte_eth_dev_vlan_filter@DPDK_2.2 2.2 + rte_eth_devices@DPDK_2.2 2.2 + rte_eth_dma_zone_reserve@DPDK_2.2 2.2 + rte_eth_driver_register@DPDK_2.2 2.2 + rte_eth_from_ring@DPDK_2.2 2.2 + rte_eth_from_rings@DPDK_2.0 2.2 + rte_eth_led_off@DPDK_2.2 2.2 + rte_eth_led_on@DPDK_2.2 2.2 + rte_eth_link_get@DPDK_2.2 2.2 + rte_eth_link_get_nowait@DPDK_2.2 2.2 + rte_eth_macaddr_get@DPDK_2.2 2.2 + rte_eth_mirror_rule_reset@DPDK_2.2 2.2 + rte_eth_mirror_rule_set@DPDK_2.2 2.2 + rte_eth_promiscuous_disable@DPDK_2.2 2.2 + rte_eth_promiscuous_enable@DPDK_2.2 2.2 + rte_eth_promiscuous_get@DPDK_2.2 2.2 + rte_eth_remove_rx_callback@DPDK_2.2 2.2 + rte_eth_remove_tx_callback@DPDK_2.2 2.2 + rte_eth_rx_queue_info_get@DPDK_2.2 2.2 + rte_eth_rx_queue_setup@DPDK_2.2 2.2 + rte_eth_set_queue_rate_limit@DPDK_2.2 2.2 + rte_eth_set_vf_rate_limit@DPDK_2.2 2.2 + rte_eth_stats_get@DPDK_2.2 2.2 + rte_eth_stats_reset@DPDK_2.2 2.2 + rte_eth_timesync_adjust_time@DPDK_2.2 2.2 + rte_eth_timesync_disable@DPDK_2.2 2.2 + rte_eth_timesync_enable@DPDK_2.2 2.2 + rte_eth_timesync_read_rx_timestamp@DPDK_2.2 2.2 + rte_eth_timesync_read_time@DPDK_2.2 2.2 + rte_eth_timesync_read_tx_timestamp@DPDK_2.2 2.2 + rte_eth_timesync_write_time@DPDK_2.2 2.2 + rte_eth_tx_queue_info_get@DPDK_2.2 2.2 + rte_eth_tx_queue_setup@DPDK_2.2 2.2 + rte_eth_xstats_get@DPDK_2.2 2.2 + rte_eth_xstats_reset@DPDK_2.2 2.2 + rte_exit@DPDK_2.0 2.2 + rte_fbk_hash_create@DPDK_2.0 2.2 + rte_fbk_hash_find_existing@DPDK_2.0 2.2 + rte_fbk_hash_free@DPDK_2.0 2.2 + rte_free@DPDK_2.0 2.2 + rte_get_rx_ol_flag_name@DPDK_2.0 2.2 + rte_get_tsc_hz@DPDK_2.0 2.2 + rte_get_tx_ol_flag_name@DPDK_2.0 2.2 + rte_hash_add_key@DPDK_2.0 2.2 + rte_hash_add_key_data@DPDK_2.1 2.2 + rte_hash_add_key_with_hash@DPDK_2.0 2.2 + rte_hash_add_key_with_hash_data@DPDK_2.1 2.2 + rte_hash_create@DPDK_2.0 2.2 + rte_hash_del_key@DPDK_2.0 2.2 + rte_hash_del_key_with_hash@DPDK_2.0 2.2 + rte_hash_find_existing@DPDK_2.0 2.2 + rte_hash_free@DPDK_2.0 2.2 + rte_hash_hash@DPDK_2.0 2.2 + rte_hash_iterate@DPDK_2.1 2.2 + rte_hash_lookup@DPDK_2.0 2.2 + rte_hash_lookup_bulk@DPDK_2.0 2.2 + rte_hash_lookup_bulk_data@DPDK_2.1 2.2 + rte_hash_lookup_data@DPDK_2.1 2.2 + rte_hash_lookup_with_hash@DPDK_2.0 2.2 + rte_hash_lookup_with_hash_data@DPDK_2.1 2.2 + rte_hash_reset@DPDK_2.1 2.2 + rte_hash_set_cmp_func@DPDK_2.2 2.2 + rte_hexdump@DPDK_2.0 2.2 + rte_intr_allow_others@DPDK_2.1 2.2 + rte_intr_callback_register@DPDK_2.0 2.2 + rte_intr_callback_unregister@DPDK_2.0 2.2 + rte_intr_cap_multiple@DPDK_2.2 2.2 + rte_intr_disable@DPDK_2.0 2.2 + rte_intr_dp_is_en@DPDK_2.1 2.2 + rte_intr_efd_disable@DPDK_2.1 2.2 + rte_intr_efd_enable@DPDK_2.1 2.2 + rte_intr_enable@DPDK_2.0 2.2 + rte_intr_rx_ctl@DPDK_2.1 2.2 + rte_intr_tls_epfd@DPDK_2.1 2.2 + rte_ip_frag_free_death_row@DPDK_2.0 2.2 + rte_ip_frag_table_create@DPDK_2.0 2.2 + rte_ip_frag_table_statistics_dump@DPDK_2.0 2.2 + rte_ipv4_frag_reassemble_packet@DPDK_2.0 2.2 + rte_ipv4_fragment_packet@DPDK_2.0 2.2 + rte_ipv6_frag_reassemble_packet@DPDK_2.0 2.2 + rte_ipv6_fragment_packet@DPDK_2.0 2.2 + rte_jobstats_context_finish@DPDK_2.0 2.2 + rte_jobstats_context_init@DPDK_2.0 2.2 + rte_jobstats_context_reset@DPDK_2.0 2.2 + rte_jobstats_context_start@DPDK_2.0 2.2 + rte_jobstats_finish@DPDK_2.0 2.2 + rte_jobstats_init@DPDK_2.0 2.2 + rte_jobstats_reset@DPDK_2.0 2.2 + rte_jobstats_set_max@DPDK_2.0 2.2 + rte_jobstats_set_min@DPDK_2.0 2.2 + rte_jobstats_set_period@DPDK_2.0 2.2 + rte_jobstats_set_target@DPDK_2.0 2.2 + rte_jobstats_set_update_period_function@DPDK_2.0 2.2 + rte_jobstats_start@DPDK_2.0 2.2 + rte_keepalive_create@DPDK_2.2 2.2 + rte_keepalive_dispatch_pings@DPDK_2.2 2.2 + rte_keepalive_register_core@DPDK_2.2 2.2 + rte_kvargs_count@DPDK_2.0 2.2 + rte_kvargs_free@DPDK_2.0 2.2 + rte_kvargs_parse@DPDK_2.0 2.2 + rte_kvargs_process@DPDK_2.0 2.2 + rte_log@DPDK_2.0 2.2 + rte_log_add_in_history@DPDK_2.0 2.2 + rte_log_cur_msg_loglevel@DPDK_2.0 2.2 + rte_log_cur_msg_logtype@DPDK_2.0 2.2 + rte_log_dump_history@DPDK_2.0 2.2 + rte_log_set_history@DPDK_2.0 2.2 + rte_logs@DPDK_2.0 2.2 + rte_lpm6_add@DPDK_2.0 2.2 + rte_lpm6_create@DPDK_2.0 2.2 + rte_lpm6_delete@DPDK_2.0 2.2 + rte_lpm6_delete_all@DPDK_2.0 2.2 + rte_lpm6_delete_bulk_func@DPDK_2.0 2.2 + rte_lpm6_find_existing@DPDK_2.0 2.2 + rte_lpm6_free@DPDK_2.0 2.2 + rte_lpm6_is_rule_present@DPDK_2.0 2.2 + rte_lpm6_lookup@DPDK_2.0 2.2 + rte_lpm6_lookup_bulk_func@DPDK_2.0 2.2 + rte_lpm_add@DPDK_2.0 2.2 + rte_lpm_create@DPDK_2.0 2.2 + rte_lpm_delete@DPDK_2.0 2.2 + rte_lpm_delete_all@DPDK_2.0 2.2 + rte_lpm_find_existing@DPDK_2.0 2.2 + rte_lpm_free@DPDK_2.0 2.2 + rte_lpm_is_rule_present@DPDK_2.0 2.2 + rte_malloc@DPDK_2.0 2.2 + rte_malloc_dump_stats@DPDK_2.0 2.2 + rte_malloc_get_socket_stats@DPDK_2.0 2.2 + rte_malloc_set_limit@DPDK_2.0 2.2 + rte_malloc_socket@DPDK_2.0 2.2 + rte_malloc_validate@DPDK_2.0 2.2 + rte_malloc_virt2phy@DPDK_2.0 2.2 + rte_mbuf_sanity_check@DPDK_2.0 2.2 + rte_mem_lock_page@DPDK_2.0 2.2 + rte_mem_virt2phy@DPDK_2.0 2.2 + rte_memdump@DPDK_2.0 2.2 + rte_memory_get_nchannel@DPDK_2.0 2.2 + rte_memory_get_nrank@DPDK_2.0 2.2 + rte_mempool_audit@DPDK_2.0 2.2 + rte_mempool_calc_obj_size@DPDK_2.0 2.2 + rte_mempool_count@DPDK_2.0 2.2 + rte_mempool_create@DPDK_2.0 2.2 + rte_mempool_dump@DPDK_2.0 2.2 + rte_mempool_gntalloc_create@DPDK_2.0 2.2 + rte_mempool_list_dump@DPDK_2.0 2.2 + rte_mempool_lookup@DPDK_2.0 2.2 + rte_mempool_obj_iter@DPDK_2.0 2.2 + rte_mempool_walk@DPDK_2.0 2.2 + rte_mempool_xmem_create@DPDK_2.0 2.2 + rte_mempool_xmem_size@DPDK_2.0 2.2 + rte_mempool_xmem_usage@DPDK_2.0 2.2 + rte_memzone_dump@DPDK_2.0 2.2 + rte_memzone_free@DPDK_2.1 2.2 + rte_memzone_lookup@DPDK_2.0 2.2 + rte_memzone_reserve@DPDK_2.0 2.2 + rte_memzone_reserve_aligned@DPDK_2.0 2.2 + rte_memzone_reserve_bounded@DPDK_2.0 2.2 + rte_memzone_walk@DPDK_2.0 2.2 + rte_meter_srtcm_config@DPDK_2.0 2.2 + rte_meter_trtcm_config@DPDK_2.0 2.2 + rte_openlog_stream@DPDK_2.0 2.2 + rte_pipeline_check@DPDK_2.0 2.2 + rte_pipeline_create@DPDK_2.0 2.2 + rte_pipeline_flush@DPDK_2.0 2.2 + rte_pipeline_free@DPDK_2.0 2.2 + rte_pipeline_port_in_connect_to_table@DPDK_2.0 2.2 + rte_pipeline_port_in_create@DPDK_2.0 2.2 + rte_pipeline_port_in_disable@DPDK_2.0 2.2 + rte_pipeline_port_in_enable@DPDK_2.0 2.2 + rte_pipeline_port_in_stats_read@DPDK_2.1 2.2 + rte_pipeline_port_out_create@DPDK_2.0 2.2 + rte_pipeline_port_out_packet_insert@DPDK_2.0 2.2 + rte_pipeline_port_out_stats_read@DPDK_2.1 2.2 + rte_pipeline_run@DPDK_2.0 2.2 + rte_pipeline_table_create@DPDK_2.0 2.2 + rte_pipeline_table_default_entry_add@DPDK_2.0 2.2 + rte_pipeline_table_default_entry_delete@DPDK_2.0 2.2 + rte_pipeline_table_entry_add@DPDK_2.0 2.2 + rte_pipeline_table_entry_add_bulk@DPDK_2.2 2.2 + rte_pipeline_table_entry_delete@DPDK_2.0 2.2 + rte_pipeline_table_entry_delete_bulk@DPDK_2.2 2.2 + rte_pipeline_table_stats_read@DPDK_2.1 2.2 + rte_pktmbuf_dump@DPDK_2.0 2.2 + rte_pktmbuf_init@DPDK_2.0 2.2 + rte_pktmbuf_offload_pool_create@DPDK_2.2 2.2 + rte_pktmbuf_pool_create@DPDK_2.1 2.2 + rte_pktmbuf_pool_init@DPDK_2.0 2.2 + rte_pmd_af_packet_devinit@DPDK_2.0 2.2 + rte_port_ethdev_reader_ops@DPDK_2.0 2.2 + rte_port_ethdev_writer_nodrop_ops@DPDK_2.1 2.2 + rte_port_ethdev_writer_ops@DPDK_2.0 2.2 + rte_port_ring_multi_reader_ops@DPDK_2.2 2.2 + rte_port_ring_multi_writer_nodrop_ops@DPDK_2.2 2.2 + rte_port_ring_multi_writer_ops@DPDK_2.2 2.2 + rte_port_ring_reader_ipv4_frag_ops@DPDK_2.0 2.2 + rte_port_ring_reader_ipv6_frag_ops@DPDK_2.1 2.2 + rte_port_ring_reader_ops@DPDK_2.0 2.2 + rte_port_ring_writer_ipv4_ras_ops@DPDK_2.0 2.2 + rte_port_ring_writer_ipv6_ras_ops@DPDK_2.1 2.2 + rte_port_ring_writer_nodrop_ops@DPDK_2.1 2.2 + rte_port_ring_writer_ops@DPDK_2.0 2.2 + rte_port_sched_reader_ops@DPDK_2.0 2.2 + rte_port_sched_writer_ops@DPDK_2.0 2.2 + rte_port_sink_ops@DPDK_2.0 2.2 + rte_port_source_ops@DPDK_2.0 2.2 + rte_power_exit@DPDK_2.0 2.2 + rte_power_freq_down@DPDK_2.0 2.2 + rte_power_freq_max@DPDK_2.0 2.2 + rte_power_freq_min@DPDK_2.0 2.2 + rte_power_freq_up@DPDK_2.0 2.2 + rte_power_freqs@DPDK_2.0 2.2 + rte_power_get_env@DPDK_2.0 2.2 + rte_power_get_freq@DPDK_2.0 2.2 + rte_power_init@DPDK_2.0 2.2 + rte_power_set_env@DPDK_2.0 2.2 + rte_power_set_freq@DPDK_2.0 2.2 + rte_power_unset_env@DPDK_2.0 2.2 + rte_realloc@DPDK_2.0 2.2 + rte_red_config_init@DPDK_2.0 2.2 + rte_red_log2_1_minus_Wq@DPDK_2.0 2.2 + rte_red_pow2_frac_inv@DPDK_2.0 2.2 + rte_red_rand_seed@DPDK_2.0 2.2 + rte_red_rand_val@DPDK_2.0 2.2 + rte_red_rt_data_init@DPDK_2.0 2.2 + rte_reorder_create@DPDK_2.0 2.2 + rte_reorder_drain@DPDK_2.0 2.2 + rte_reorder_find_existing@DPDK_2.0 2.2 + rte_reorder_free@DPDK_2.0 2.2 + rte_reorder_init@DPDK_2.0 2.2 + rte_reorder_insert@DPDK_2.0 2.2 + rte_reorder_reset@DPDK_2.0 2.2 + rte_ring_create@DPDK_2.0 2.2 + rte_ring_dump@DPDK_2.0 2.2 + rte_ring_free@DPDK_2.2 2.2 + rte_ring_get_memsize@DPDK_2.0 2.2 + rte_ring_init@DPDK_2.0 2.2 + rte_ring_list_dump@DPDK_2.0 2.2 + rte_ring_lookup@DPDK_2.0 2.2 + rte_ring_set_water_mark@DPDK_2.0 2.2 + rte_sched_pipe_config@DPDK_2.0 2.2 + rte_sched_port_config@DPDK_2.0 2.2 + rte_sched_port_dequeue@DPDK_2.0 2.2 + rte_sched_port_enqueue@DPDK_2.0 2.2 + rte_sched_port_free@DPDK_2.0 2.2 + rte_sched_port_get_memory_footprint@DPDK_2.0 2.2 + rte_sched_port_pkt_read_color@DPDK_2.1 2.2 + rte_sched_port_pkt_read_tree_path@DPDK_2.1 2.2 + rte_sched_port_pkt_write@DPDK_2.1 2.2 + rte_sched_queue_read_stats@DPDK_2.0 2.2 + rte_sched_subport_config@DPDK_2.0 2.2 + rte_sched_subport_read_stats@DPDK_2.0 2.2 + rte_set_application_usage_hook@DPDK_2.0 2.2 + rte_set_log_level@DPDK_2.0 2.2 + rte_set_log_type@DPDK_2.0 2.2 + rte_socket_id@DPDK_2.0 2.2 + rte_strerror@DPDK_2.0 2.2 + rte_strsplit@DPDK_2.0 2.2 + rte_sys_gettid@DPDK_2.0 2.2 + rte_table_acl_ops@DPDK_2.0 2.2 + rte_table_array_ops@DPDK_2.0 2.2 + rte_table_hash_ext_ops@DPDK_2.0 2.2 + rte_table_hash_key16_ext_dosig_ops@DPDK_2.2 2.2 + rte_table_hash_key16_ext_ops@DPDK_2.0 2.2 + rte_table_hash_key16_lru_ops@DPDK_2.0 2.2 + rte_table_hash_key32_ext_ops@DPDK_2.0 2.2 + rte_table_hash_key32_lru_ops@DPDK_2.0 2.2 + rte_table_hash_key8_ext_dosig_ops@DPDK_2.0 2.2 + rte_table_hash_key8_ext_ops@DPDK_2.0 2.2 + rte_table_hash_key8_lru_dosig_ops@DPDK_2.0 2.2 + rte_table_hash_key8_lru_ops@DPDK_2.0 2.2 + rte_table_hash_lru_ops@DPDK_2.0 2.2 + rte_table_lpm_ipv6_ops@DPDK_2.0 2.2 + rte_table_lpm_ops@DPDK_2.0 2.2 + rte_table_stub_ops@DPDK_2.0 2.2 + rte_thread_get_affinity@DPDK_2.0 2.2 + rte_thread_set_affinity@DPDK_2.0 2.2 + rte_timer_dump_stats@DPDK_2.0 2.2 + rte_timer_init@DPDK_2.0 2.2 + rte_timer_manage@DPDK_2.0 2.2 + rte_timer_pending@DPDK_2.0 2.2 + rte_timer_reset@DPDK_2.0 2.2 + rte_timer_reset_sync@DPDK_2.0 2.2 + rte_timer_stop@DPDK_2.0 2.2 + rte_timer_stop_sync@DPDK_2.0 2.2 + rte_timer_subsystem_init@DPDK_2.0 2.2 + rte_vhost_dequeue_burst@DPDK_2.0 2.2 + rte_vhost_driver_callback_register@DPDK_2.0 2.2 + rte_vhost_driver_register@DPDK_2.0 2.2 + rte_vhost_driver_session_start@DPDK_2.0 2.2 + rte_vhost_driver_unregister@DPDK_2.1 2.2 + rte_vhost_enable_guest_notification@DPDK_2.0 2.2 + rte_vhost_enqueue_burst@DPDK_2.0 2.2 + rte_vhost_feature_disable@DPDK_2.0 2.2 + rte_vhost_feature_enable@DPDK_2.0 2.2 + rte_vhost_feature_get@DPDK_2.0 2.2 + rte_vlog@DPDK_2.0 2.2 + rte_zmalloc@DPDK_2.0 2.2 + rte_zmalloc_socket@DPDK_2.0 2.2 + vt100_init@DPDK_2.0 2.2 + vt100_parser@DPDK_2.0 2.2 diff --git a/ovs_build/dpdk-16.04/debian/patches/series b/ovs_build/dpdk-16.04/debian/patches/series new file mode 100644 index 0000000..e69de29 diff --git a/ovs_build/dpdk-16.04/debian/rules b/ovs_build/dpdk-16.04/debian/rules new file mode 100755 index 0000000..a479f02 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/rules @@ -0,0 +1,159 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + +# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/default.mk + +DEB_HOST_GNU_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) + +# see FEATURE AREAS in dpkg-buildflags(1) +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# build with debug symbols, dh_strip will create -dgbsyms packages by that +export EXTRA_CFLAGS = -g + +# see ENVIRONMENT in dpkg-buildflags(1) +# package maintainers to append CFLAGS +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# package maintainers to append LDFLAGS +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + +DPDK_CONFIG = "$(DEB_HOST_GNU_CPU)-native-linuxapp-gcc" +DPDK_STATIC_DIR = "debian/build/static-root" +DPDK_SHARED_DIR = "debian/build/shared-root" + +clean: + dh_testdir + rm -rf debian/build debian/tmp + dh_clean + +build-config: + dh_testdir + $(MAKE) O=$(DPDK_STATIC_DIR) T=$(DPDK_CONFIG) config + sed -ri -e 's,(RTE_MACHINE=).*,\1"default",' \ + -e 's,(RTE_NEXT_ABI=).*,\1n,' \ + -e 's,(RTE_APP_TEST=).*,\1n,' \ + -e 's,(CONFIG_RTE_EAL_IGB_UIO=).*,\1n,' \ + -e 's,(CONFIG_RTE_KNI_KMOD=).*,\1n,' \ + -e 's,(CONFIG_RTE_BUILD_COMBINE_LIBS=).*,\1y,' \ + -e 's,(LIBRTE_PMD_PCAP=).*,\1y,' \ + -e 's,(LIBRTE_PMD_XENVIRT=).*,\1y,' \ + $(DPDK_STATIC_DIR)/.config + +build-indep: build-config + dh_testdir + $(MAKE) O=$(DPDK_STATIC_DIR) doc-api-html doc-guides-html + +build-arch: build-config + dh_testdir + $(MAKE) O=$(DPDK_STATIC_DIR) build + # Unfortunately the decision about having static or shared libraries is + # made for the whole build, which then produces only .a or .so files + # (but not both). + # And the target layout for target selection has no field for the + # type of library. + # Right now I hack this by doing a second build which only differs in + # the selection of shared libs. + # Shared libs should be default, so the previous static build is only + # used to get static libraries. + cp -a $(DPDK_STATIC_DIR) $(DPDK_SHARED_DIR) + sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\1y,' \ + $(DPDK_SHARED_DIR)/.config + $(MAKE) O=$(DPDK_SHARED_DIR) build + +build: build-arch build-indep + +binary-indep: PACKAGE_NAME=dpdk-doc +binary-indep: DOCDIR=usr/share/doc/dpdk +binary-indep: export DH_OPTIONS=--indep +binary-indep: + dh_testroot + dh_prep + dh_testdir + dh_installdirs + dh_install + dh_installdocs + dh_installchangelogs + dh_lintian + # Package: dpdk-doc + # All files based on the install-doc rule (includes examples) + $(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \ + DESTDIR=debian/dpdk-doc install-doc + dh_link + dh_compress + dh_fixperms + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary-arch: LIBDIR=usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +binary-arch: export DH_OPTIONS=--arch +binary-arch: + dh_testroot + dh_prep + dh_testdir + dh_installdirs + dh_install + dh_installdocs + dh_installchangelogs + dh_lintian + dh_systemd_enable + dh_installinit --no-start --no-restart-on-upgrade + dh_systemd_start --no-start --no-restart-on-upgrade + # Package: dpdk (runtime) + $(MAKE) O=$(DPDK_STATIC_DIR) prefix=/usr \ + DESTDIR=debian/dpdk install-runtime + $(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \ + DESTDIR=debian/dpdk install-runtime + cp debian/dpdk.interfaces debian/dpdk/etc/dpdk/interfaces + rm debian/dpdk/usr/sbin/dpdk_nic_bind + ln -s /usr/share/dpdk/tools/dpdk_nic_bind.py \ + debian/dpdk/sbin/dpdk_nic_bind + # Package: libdpdk0 (bare runtime libs) + mkdir -p debian/libdpdk0/$(LIBDIR) + # NOTE so far upstream dpdk has not settled on really versioning the + # combined lib. There are discussions ongoing and various alternative + # approaches. + # We have to wait until that is clarified upstream (in a follow on dpdk + # version). + # One likely solution will make us ship the non combined .so and a + # linker script which replaces the combined lib. + # To easen package management a few notes how this will change if that + # happens: + # NOTE: linker script - this becomes a nop (linker skript has no sover + # on its own) + rm debian/dpdk/usr/lib/libdpdk.so + cp $(DPDK_SHARED_DIR)/lib/libdpdk.so.0 debian/libdpdk0/$(LIBDIR)/ + # NOTE: linker script - insert basenames loop for all .so's + # NOTE: linker script - we also will need multiple symbol files then + # Package: dpdk-dev (build environment) + $(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \ + DESTDIR=debian/dpdk-dev install-sdk + cp $(DPDK_SHARED_DIR)/.config debian/dpdk-dev/usr/share/dpdk/config + # Package: libdpdk-dev (bare headers and static devel libs) + mkdir -p debian/libdpdk-dev/$(LIBDIR) + # NOTE: linker script - insert basenames loop for all .a's + ln -s /$(LIBDIR)/libdpdk.so.0 \ + debian/libdpdk-dev/$(LIBDIR)/libdpdk.so + mv debian/dpdk/usr/lib/libdpdk.a debian/libdpdk-dev/$(LIBDIR)/ + mv debian/dpdk-dev/usr/include/dpdk debian/libdpdk-dev/usr/include/ + # NOTE: linker script - package instead of removing all sublibs + rm -rf debian/dpdk/usr/lib* + dh_python2 + dh_perl + dh_link + dh_compress + dh_fixperms + dh_strip + dh_makeshlibs + dh_shlibdeps + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-arch binary-indep diff --git a/ovs_build/dpdk-16.04/debian/source/format b/ovs_build/dpdk-16.04/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/ovs_build/dpdk-16.04/debian/tests/check-dpdk-supported-arch.sh b/ovs_build/dpdk-16.04/debian/tests/check-dpdk-supported-arch.sh new file mode 100644 index 0000000..4361d2d --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/tests/check-dpdk-supported-arch.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +arch=$(dpkg --print-architecture) +case $arch in + amd64|i386) + echo "Architecture ${arch} supported, go on with test" + ;; + *) + echo "Architecture ${arch} not supported, SKIP test" + exit 0 + ;; +esac diff --git a/ovs_build/dpdk-16.04/debian/tests/control b/ovs_build/dpdk-16.04/debian/tests/control new file mode 100644 index 0000000..addb2d5 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/tests/control @@ -0,0 +1,8 @@ +Tests: test-initscripts +Restrictions: allow-stderr, isolation-machine, needs-root +Depends: dpdk [amd64 i386], gawk, mount, systemd, sysvinit-utils + +Tests: test-linkage +Restrictions: allow-stderr +Depends: libdpdk0 [amd64 i386], libdpdk-dev [amd64 i386], libc6, libc6-dev, gcc, + grep, libpcap-dev, libxenstore3.0 [amd64 i386] diff --git a/ovs_build/dpdk-16.04/debian/tests/test-initscripts b/ovs_build/dpdk-16.04/debian/tests/test-initscripts new file mode 100644 index 0000000..f465d6d --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/tests/test-initscripts @@ -0,0 +1,143 @@ +#!/bin/sh +set -e + +basedir=$(dirname "$0") +. "${basedir}"/check-dpdk-supported-arch.sh + +# Overall that could require up to 1.2G for hugepages in the test environment +EXPECT2MHP=10 +# Some page sizes like e.g. 1G might not be available in all test environments +# The test still configures 1 page of 1G size. +# One of two things will happen, depending on the test environment: +# - has 1G huge page size => they will tried to be allocated (usually env is +# too small, but we want to see it fail gracefully for that) +# We will not check for the 1G alloc, as we know it often fails in small adt's +# - has no 1G huge page size (HW feature) => we check if it fails gracefully +EXPECT1GHP=1 + +DPDK_CONF="/etc/dpdk/dpdk.conf" +DPDK_INTERF="/etc/dpdk/interfaces" + +checkhp() { + MMDIR="/sys/kernel/mm/hugepages/${1}" + EXPECTHP="${2}" + if [ -d "$MMDIR" -a -r "$MMDIR/nr_hugepages" ]; then + hpcount=$(cat "$MMDIR/nr_hugepages") + if [ "${hpcount}" -ne "${EXPECTHP}" ]; then + echo "Hugepages (${hpcount}) not as expected (${EXPECTHP})" + exit 1 + else + echo "Hugepages ok (${hpcount})" + fi + fi +} + +checkstatus() { + MARK=${1} + EXPMPCOUNT=${2} + PRE=${3} + POST=${4} + EXPECTEDSTATUS=${5} + echo "Status after ${MARK}" + echo "Status of the Service" + ${PRE} status "${POST}" || true + + GOTSTATUS=$(${PRE} status "${POST}" | awk '/^ *Active: / { print $2 }') + if [ "${GOTSTATUS}" != "${EXPECTEDSTATUS}" ]; then + echo "Service status (${GOTSTATUS}) not as expected (${EXPECTEDSTATUS})" + exit 1 + else + echo "Service status (${GOTSTATUS}) as expected" + fi + + echo "Status of hugetlbfs mount points" + # this section is ok to create bad RCs when no mounts are available + set +e + grep hugetlbfs < /proc/mounts + htlbfscount=$(grep -c hugetlbfs < /proc/mounts) + set -e + + # we have to reduce the expected mountpoint count in case some sizes are + # not supported by the current kernel/environment + if [ ${EXPMPCOUNT} -gt 0 ]; then + if [ ! -d /sys/kernel/mm/hugepages/hugepages-2048kB ]; then + EXPMPCOUNT=$((EXPMPCOUNT-1)) + fi + if [ ! -d /sys/kernel/mm/hugepages/hugepages-1048576kB ]; then + EXPMPCOUNT=$((EXPMPCOUNT-1)) + fi + fi + + if [ "${htlbfscount}" -eq "${EXPMPCOUNT}" ]; then + echo "MP Count (${htlbfscount}) as expected (${EXPMPCOUNT})" + else + echo "MP Count (${htlbfscount}) not as expected (${EXPMPCOUNT})" + exit 1 + fi + + # check if setting HP worked + if [ "${EXPMPCOUNT}" -ne "0" ]; then + checkhp "hugepages-2048kB" "${EXPECT2MHP}" + # We do not check 1G alloc, as it is known to be often not available + fi +} + +resetservice() { + # help a bit with memory fragmentation regarding huge page allocation + sync + echo 3 > /proc/sys/vm/drop_caches + + # stopping and resetting Service + systemctl stop dpdk.service + systemctl reset-failed dpdk.service + + echo "Unmounting all potential hugetlbfs mounts" + awk '/hugetlbfs/ {print $2}' /proc/mounts | while read hugetlbmount; do + umount -v "$hugetlbmount" + done +} + +checkinitstyle() { + # We want to verify that + # - initially our environment has no hugetlbfs mount + # - a system without hugetlbfs mount gets it mounted + # - a restart of the service does neither drop nor duplicate the mount + PRE=${1} + POST=${2} + TYPE=${3} + printf "\n\n### Checking Type %s ###\n" "${TYPE}" + resetservice + checkstatus "${TYPE}-BEGIN" 0 "${PRE}" "${POST}" "inactive" + echo "### Starting Service ###" + ${PRE} start "${POST}" + checkstatus "${TYPE}-START" 2 "${PRE}" "${POST}" "active" + echo "### Restarting Service ###" + ${PRE} restart "${POST}" + checkstatus "${TYPE}-RESTART" 2 "${PRE}" "${POST}" "active" +} + +echo "NR_2M_PAGES=$EXPECT2MHP" >> ${DPDK_CONF} +echo "NR_1G_PAGES=$EXPECT1GHP" >> ${DPDK_CONF} + +# We can't rely on any real device for DPDK tests in adt-* environments. But +# we can expect all kind of broken configuration not to break it (would be +# detected via set -e). +# So add all kind of known-to-be-broken definitions and expect it not to fail. +cat < ${DPDK_INTERF} +# wrong bus +pTi 0000:04:00.0 uio-pci-generic +# not enough parms +0000:04:00.0 uio-pci-generic +# empty line + +# non existing device +pci 1234:56:78.9 uio-pci-generic +EOF + +# some had issues in the past caused by different init systems, so we test all +# Direct Calls +checkinitstyle "/etc/init.d/dpdk" "" "Direct" +# System V style init +checkinitstyle "service dpdk" "" "SysV" +# SystemD style init +checkinitstyle "systemctl" "dpdk.service" "SystemD" diff --git a/ovs_build/dpdk-16.04/debian/tests/test-linkage b/ovs_build/dpdk-16.04/debian/tests/test-linkage new file mode 100644 index 0000000..30d7642 --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/tests/test-linkage @@ -0,0 +1,41 @@ +#!/bin/bash +set -eu + +basedir=$(dirname "$0") +. "${basedir}"/check-dpdk-supported-arch.sh + +cat > testlinkage.c << EOF +#include +#include "dpdk/rte_common.h" + +int main() +{ + printf("Hello rte_exit %p\n", rte_exit); + return 0; +} +EOF + +# with broken linkage this will fail with undefined symbols +printf "\n\nChecking compile with link against DPDK\n" +gcc -v testlinkage.c -o testlinkage.bin -Wall -Werror -ldpdk +echo "OK" + +printf "\n\nChecking for expected libraries\n" +# The binary should inherit dependencies from the .so +# check one of the libs that came in due to features +ldd testlinkage.bin | grep libpcap +# check one of the libs that came in due to basic dpdp linuxapp config +ldd testlinkage.bin | grep libm +# one that it uses implicitly +ldd testlinkage.bin | grep libpthread +echo "OK" + +printf "\n\nChecking test execution\n" +# It doesn't do much, but it should work - so calling it is a minor extra test. +# It is known to fail without SSE3 in e.g. some adt environments, in that +# case check at least that we get the correct error message (this will trigger +# a test fail if it neither finds the success nor the expected error message) +(./testlinkage.bin 2>&1 || /bin/true ) | \ +grep -E 'ERROR: This system does not support "SSSE3".|Hello rte_exit 0x' + +echo "OK" diff --git a/ovs_build/dpdk-16.04/debian/watch b/ovs_build/dpdk-16.04/debian/watch new file mode 100644 index 0000000..418ce0c --- /dev/null +++ b/ovs_build/dpdk-16.04/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://www.dpdk.org/download /browse/dpdk/snapshot/dpdk-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))