From aef45c9d17118ee24ece01db2a95a064ac010e7c Mon Sep 17 00:00:00 2001 From: Guo Ruijing Date: Wed, 28 Dec 2016 12:41:43 -0500 Subject: [PATCH] clean up code 1. change openvswitch-dpdk_2.5.90 to openvswitch_2.6-dpdk_16.07 2. delete dpdk_2.2.0 3. delete openvswitch-nsh-dpdk_2.5.90 Change-Id: Ib0bfea31332a94b68da0c15844edf74ce9cf11b1 Signed-off-by: Guo Ruijing --- ovs_build/build-ovs-dpdk.sh | 2 +- ovs_build/build-ovs-nsh-dpdk.sh | 2 +- ovs_build/dpdk_2.2.0/debian/changelog | 236 ------ ovs_build/dpdk_2.2.0/debian/control | 81 -- ovs_build/dpdk_2.2.0/debian/copyright | 48 -- ovs_build/dpdk_2.2.0/debian/dpdk-dev.dirs | 1 - ovs_build/dpdk_2.2.0/debian/dpdk-dev.install | 1 - .../dpdk_2.2.0/debian/dpdk-doc.README.Debian | 52 -- ovs_build/dpdk_2.2.0/debian/dpdk-doc.dirs | 1 - ovs_build/dpdk_2.2.0/debian/dpdk-init | 251 ------ ovs_build/dpdk_2.2.0/debian/dpdk-sdk-env.sh | 3 - ovs_build/dpdk_2.2.0/debian/dpdk.conf | 54 -- ovs_build/dpdk_2.2.0/debian/dpdk.dirs | 5 - ovs_build/dpdk_2.2.0/debian/dpdk.init | 57 -- ovs_build/dpdk_2.2.0/debian/dpdk.install | 2 - ovs_build/dpdk_2.2.0/debian/dpdk.interfaces | 13 - ovs_build/dpdk_2.2.0/debian/dpdk.service | 12 - ovs_build/dpdk_2.2.0/debian/libdpdk-dev.dirs | 1 - ovs_build/dpdk_2.2.0/debian/libdpdk0.dirs | 1 - .../dpdk_2.2.0/debian/libdpdk0.symbols.amd64 | 580 -------------- .../dpdk_2.2.0/debian/libdpdk0.symbols.i386 | 569 -------------- ovs_build/dpdk_2.2.0/debian/patches/series | 44 -- ...pp-testpmd-handle-SIGINT-and-SIGTERM.patch | 146 ---- ...ples-l3fwd-handle-SIGINT-and-SIGTERM.patch | 134 ---- ...tools-fix-unbinding-failure-handling.patch | 35 - ...ools-support-Python-3-in-bind-script.patch | 259 ------- ...t-binding-to-built-in-kernel-modules.patch | 75 -- ...inux-support-built-in-kernel-modules.patch | 89 --- ...mempool-fix-leak-when-creation-fails.patch | 95 --- ...t-08-vhost-fix-leak-of-fds-and-mmaps.patch | 154 ---- ...ort-fix-crash-for-ring-writer-nodrop.patch | 80 -- ...t-fix-crash-for-ethdev-writer-nodrop.patch | 55 -- ...ubuntu-backport-11-i40e-fix-overflow.patch | 45 -- ...e-fix-inverted-check-for-no-refcount.patch | 36 - ...-backport-13-i40e-fix-VLAN-filtering.patch | 150 ---- ...issing-check-for-stopped-admin-queue.patch | 55 -- ...15-i40e-base-fix-driver-load-failure.patch | 44 -- ...-fm10k-fix-VLAN-flag-in-scattered-Rx.patch | 38 - ...rt-17-pcap-fix-captured-frame-length.patch | 64 -- ...-bonding-fix-detach-of-bonded-device.patch | 56 -- ...-bonding-fix-detach-of-slave-devices.patch | 150 ---- ...py-entire-config-structure-in-mode-4.patch | 40 - ...ng-do-not-ignore-multicast-in-mode-4.patch | 59 -- ...ng-fix-active-slaves-with-no-primary.patch | 49 -- ...-bonding-do-not-activate-slave-twice.patch | 47 -- ...nding-fix-crash-when-no-slave-device.patch | 42 - ...io-fix-crash-in-statistics-functions.patch | 53 -- ...criptors-pointing-to-the-same-buffer.patch | 37 - ...buntu-backport-27-virtio-fix-restart.patch | 72 -- ...fix-allocation-of-an-existing-object.patch | 79 -- ...rt-29-hash-fix-multi-process-support.patch | 260 ------- ...fix-allocation-of-an-existing-object.patch | 177 ----- ...-hash-fix-race-condition-at-creation.patch | 160 ---- ...tu-backport-32-eal-fix-resource-leak.patch | 36 - ...-user-add-error-handling-for-fd-1023.patch | 141 ---- ...port-fix-ring-writer-buffer-overflow.patch | 54 -- ...ort-35-port-fix-burst-size-mask-type.patch | 84 -- ...ices-not-managed-by-any-kernel-drive.patch | 34 - ...es-already-managed-in-Linux-when-map.patch | 94 --- ...hen-adding-removing-vhost_user-ports.patch | 77 -- ...buntu-combined-shared-lib-abiversion.patch | 51 -- .../patches/ubuntu-fix-doc-installpath.patch | 16 - .../patches/ubuntu-fix-library-linkage.patch | 33 - ...untu-fix-lpm-use-after-free-and-leak.patch | 75 -- .../ubuntu-fix-testpmd-without-xen.patch | 77 -- ...ntu-fix-vhost-user-socket-permission.patch | 350 --------- ovs_build/dpdk_2.2.0/debian/rules | 159 ---- .../debian/tests/check-dpdk-supported-arch.sh | 12 - ovs_build/dpdk_2.2.0/debian/tests/control | 8 - .../dpdk_2.2.0/debian/tests/test-initscripts | 143 ---- .../dpdk_2.2.0/debian/tests/test-linkage | 41 - ovs_build/dpdk_2.2.0/debian/watch | 2 - .../openvswitch-dpdk_2.5.90/debian/compat | 1 - .../debian/source/format | 1 - .../debian/automake.mk | 19 - .../debian/changelog | 3 - .../openvswitch-nsh-dpdk_2.5.90/debian/compat | 1 - .../debian/control | 54 -- .../debian/copyright | 716 ------------------ .../debian/copyright.in | 716 ------------------ .../openvswitch-switch-dpdk.README.Debian | 42 - .../debian/openvswitch-switch-dpdk.postinst | 10 - .../debian/openvswitch-switch-dpdk.prerm | 10 - .../debian/ovs-monitor-ipsec | 494 ------------ .../debian/patches/ovs-ctl-dpdk.patch | 15 - .../debian/patches/series | 1 - .../openvswitch-nsh-dpdk_2.5.90/debian/rules | 68 -- .../debian/source/format | 1 - .../debian/tests/common | 23 - .../debian/tests/control | 4 - .../debian/tests/kernel | 5 - .../debian/tests/openflow | 7 - .../debian/tests/openflow.py | 66 -- .../openvswitch-nsh-dpdk_2.5.90/debian/watch | 2 - .../debian/automake.mk | 0 .../debian/compat | 0 .../debian/control | 0 .../debian/copyright | 0 .../debian/copyright.in | 0 .../openvswitch-switch-dpdk.README.Debian | 0 .../debian/openvswitch-switch-dpdk.postinst | 0 .../debian/openvswitch-switch-dpdk.prerm | 0 .../debian/ovs-monitor-ipsec | 0 .../debian/patches/series | 0 .../debian/rules | 0 .../debian/source/format | 0 .../debian/tests/common | 0 .../debian/tests/control | 0 .../debian/tests/kernel | 0 .../debian/tests/openflow | 0 .../debian/tests/openflow.py | 0 .../debian/watch | 0 112 files changed, 2 insertions(+), 8595 deletions(-) delete mode 100644 ovs_build/dpdk_2.2.0/debian/changelog delete mode 100644 ovs_build/dpdk_2.2.0/debian/control delete mode 100644 ovs_build/dpdk_2.2.0/debian/copyright delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk-dev.dirs delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk-dev.install delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk-doc.README.Debian delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk-doc.dirs delete mode 100755 ovs_build/dpdk_2.2.0/debian/dpdk-init delete mode 100755 ovs_build/dpdk_2.2.0/debian/dpdk-sdk-env.sh delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk.conf delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk.dirs delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk.init delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk.install delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk.interfaces delete mode 100644 ovs_build/dpdk_2.2.0/debian/dpdk.service delete mode 100644 ovs_build/dpdk_2.2.0/debian/libdpdk-dev.dirs delete mode 100644 ovs_build/dpdk_2.2.0/debian/libdpdk0.dirs delete mode 100644 ovs_build/dpdk_2.2.0/debian/libdpdk0.symbols.amd64 delete mode 100644 ovs_build/dpdk_2.2.0/debian/libdpdk0.symbols.i386 delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/series delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-01-app-testpmd-handle-SIGINT-and-SIGTERM.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-02-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-03-tools-fix-unbinding-failure-handling.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-04-tools-support-Python-3-in-bind-script.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-05-tools-support-binding-to-built-in-kernel-modules.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-06-eal-linux-support-built-in-kernel-modules.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-07-mempool-fix-leak-when-creation-fails.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-08-vhost-fix-leak-of-fds-and-mmaps.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-09-port-fix-crash-for-ring-writer-nodrop.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-10-port-fix-crash-for-ethdev-writer-nodrop.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-11-i40e-fix-overflow.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-12-i40e-fix-inverted-check-for-no-refcount.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-13-i40e-fix-VLAN-filtering.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-14-i40e-base-fix-missing-check-for-stopped-admin-queue.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-15-i40e-base-fix-driver-load-failure.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-16-fm10k-fix-VLAN-flag-in-scattered-Rx.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-17-pcap-fix-captured-frame-length.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-18-bonding-fix-detach-of-bonded-device.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-19-bonding-fix-detach-of-slave-devices.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-20-bonding-copy-entire-config-structure-in-mode-4.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-21-bonding-do-not-ignore-multicast-in-mode-4.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-22-bonding-fix-active-slaves-with-no-primary.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-23-bonding-do-not-activate-slave-twice.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-24-bonding-fix-crash-when-no-slave-device.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-25-virtio-fix-crash-in-statistics-functions.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-26-virtio-fix-descriptors-pointing-to-the-same-buffer.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-27-virtio-fix-restart.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-28-lpm-fix-allocation-of-an-existing-object.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-29-hash-fix-multi-process-support.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-30-hash-fix-allocation-of-an-existing-object.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-31-hash-fix-race-condition-at-creation.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-32-eal-fix-resource-leak.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-34-port-fix-ring-writer-buffer-overflow.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-35-port-fix-burst-size-mask-type.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-36-pci-identify-devices-not-managed-by-any-kernel-drive.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-37-pci-ignore-devices-already-managed-in-Linux-when-map.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-combined-shared-lib-abiversion.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-doc-installpath.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-library-linkage.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-lpm-use-after-free-and-leak.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-testpmd-without-xen.patch delete mode 100644 ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-vhost-user-socket-permission.patch delete mode 100755 ovs_build/dpdk_2.2.0/debian/rules delete mode 100644 ovs_build/dpdk_2.2.0/debian/tests/check-dpdk-supported-arch.sh delete mode 100644 ovs_build/dpdk_2.2.0/debian/tests/control delete mode 100644 ovs_build/dpdk_2.2.0/debian/tests/test-initscripts delete mode 100644 ovs_build/dpdk_2.2.0/debian/tests/test-linkage delete mode 100644 ovs_build/dpdk_2.2.0/debian/watch delete mode 100644 ovs_build/openvswitch-dpdk_2.5.90/debian/compat delete mode 100644 ovs_build/openvswitch-dpdk_2.5.90/debian/source/format delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/automake.mk delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/changelog delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/compat delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/control delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/copyright delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/copyright.in delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.README.Debian delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.prerm delete mode 100755 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/ovs-monitor-ipsec delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/patches/ovs-ctl-dpdk.patch delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/patches/series delete mode 100755 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/rules delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/source/format delete mode 100755 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/common delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/control delete mode 100755 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/kernel delete mode 100755 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/openflow delete mode 100755 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/openflow.py delete mode 100644 ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/watch rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/automake.mk (100%) rename ovs_build/{dpdk_2.2.0 => openvswitch_2.6-dpdk_16.07}/debian/compat (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/control (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/copyright (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/copyright.in (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/openvswitch-switch-dpdk.README.Debian (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/openvswitch-switch-dpdk.postinst (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/openvswitch-switch-dpdk.prerm (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/ovs-monitor-ipsec (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/patches/series (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/rules (100%) rename ovs_build/{dpdk_2.2.0 => openvswitch_2.6-dpdk_16.07}/debian/source/format (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/tests/common (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/tests/control (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/tests/kernel (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/tests/openflow (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/tests/openflow.py (100%) rename ovs_build/{openvswitch-dpdk_2.5.90 => openvswitch_2.6-dpdk_16.07}/debian/watch (100%) diff --git a/ovs_build/build-ovs-dpdk.sh b/ovs_build/build-ovs-dpdk.sh index 86225c5..3c05a83 100755 --- a/ovs_build/build-ovs-dpdk.sh +++ b/ovs_build/build-ovs-dpdk.sh @@ -66,7 +66,7 @@ cd ovs; git checkout ${OVS_COMMIT}; rm -rf .git cd ${BUILD_HOME}; cp -r ovs ovs-dpdk cd ovs-dpdk -cp -r ${BUILD_SRC}/openvswitch-dpdk_2.5.90/debian . +cp -r ${BUILD_SRC}/openvswitch_2.6-dpdk_16.07/debian . cat << EOF > debian/changelog openvswitch-dpdk (${OVS_VER}-1) unstable; urgency=low [ Open vSwitch team ] diff --git a/ovs_build/build-ovs-nsh-dpdk.sh b/ovs_build/build-ovs-nsh-dpdk.sh index 11dce5d..e2d52e4 100755 --- a/ovs_build/build-ovs-nsh-dpdk.sh +++ b/ovs_build/build-ovs-nsh-dpdk.sh @@ -71,7 +71,7 @@ done cd ${BUILD_HOME}; cp -r ovs ovs-dpdk cd ovs-dpdk -cp -r ${BUILD_SRC}/openvswitch-dpdk_2.5.90/debian . +cp -r ${BUILD_SRC}/openvswitch_2.6-dpdk_16.07/debian . cat << EOF > debian/changelog openvswitch-dpdk (${OVS_VER}-1.nsh) unstable; urgency=low [ Open vSwitch team ] diff --git a/ovs_build/dpdk_2.2.0/debian/changelog b/ovs_build/dpdk_2.2.0/debian/changelog deleted file mode 100644 index f359ba0..0000000 --- a/ovs_build/dpdk_2.2.0/debian/changelog +++ /dev/null @@ -1,236 +0,0 @@ -dpdk (2.2.0-0ubuntu8) xenial; urgency=medium - - * d/p/ubuntu-backport-[36-37] fix virtio issues (LP: #1570195): - - don't let DPDK initialize virtio devices still in use by the kernel - - this avoids conflicts between kernel and dpdk usage of those devices - - an admin now has to unbind/bind devices as on physical hardware - - this is in the dpdk 16.04 release and delta can then be dropped - - d/dpdk-doc.README.Debian update for changes in virtio-pci handling - - d/dpdk.interfaces update for changes in virtio-pci handling - * d/p/ubuntu-backport-38... fix for memory leak (LP: #1570466): - - call vhost_destroy_device on removing vhost user ports to fix memory leak - - this likely is in the dpdk 16.07 release and delta can then be dropped - * d/p/ubuntu-fix-vhost-user-socket-permission.patch fox (LP: #1546565): - - when vhost_user sockets are created they are owner:group of the process - - the DPDK api to create those has no way to specify owner:group - - to fix that without breaking the API and potential workaround code in - consumers of the library like openvswitch 2.6 for example. This patch - adds an EAL commandline option to specify user:group created vhost_user - sockets should have. - - -- Christian Ehrhardt Mon, 25 Apr 2016 11:42:40 +0200 - -dpdk (2.2.0-0ubuntu7) xenial; urgency=medium - - * Increase max_map_count after setting huge pages (LP: #1507921): - - The default config of 65530 would cause issues as soon as about 64GB or - more are used as 2M huge pages for dpdk. - - Increase this value to base+2*#hugepages to avoid issues on huge systems. - * d/p/ubuntu-backport-[28-32,34-35] backports for stability (LP: #1568838): - - these will be in the 16.04 dpdk release, delta can then be dropped. - - 5 fixes that do not change api/behaviour but fix serious issues. - - 01 f82f705b lpm: fix allocation of an existing object - - 02 f9bd3342 hash: fix multi-process support - - 03 1aadacb5 hash: fix allocation of an existing object - - 04 5d7bfb73 hash: fix race condition at creation - - 05 fe671356 vfio: fix resource leak - - 06 356445f9 port: fix ring writer buffer overflow - - 07 52f7a5ae port: fix burst size mask type - * d/p/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch - - this will likely be in dpdk release 16.07 and delta can then be dropped. - - fixes a crash on using fd's >1023 (LP: #1566874) - * d/p/ubuntu-fix-lpm-use-after-free-and-leak.patch fix lpm_free (LP: #1569375) - - the old patches had an error freeing a pointer which had no meta data - - that lead to a crash on any lpm_free call - - folded into the fix that generally covers the lpm allocation and free - weaknesses already (also there this particular mistake was added) - - -- Christian Ehrhardt Tue, 12 Apr 2016 16:13:47 +0200 - -dpdk (2.2.0-0ubuntu6) xenial; urgency=medium - - * d/dpdk-init fix handling of multiple huge page sizes (LP: #1557532): - - dpdk-init now ensures non-default-hugepage-size mountpoints are - available as well. - - extra mountpoints are only created if requested in dpdk.conf and not yet - available (e.g. by the admin). - * d/dpdk-init fix issues with unassigned devices (LP: #1558485): - - dpdk-init no more checks /sys/.../driver of the device unconditionally - - removed the superfluous tr call in that path - * d/p/ubuntu-fix-lpm-use-after-free-and-leak.patch lpm/lpm6 (LP: #1554009): - - lpm/lpm6 fix use after free on lpm[6]_create - - lpm/lpm6 fix missing frees of rules_tbl substructure - - lpm/lpm6 fix missing free of lpm due to early exit - - make RTE_LOG messages of the failed allocation unique - * d/p/ubuntu-backport-[01-26] backport for stability (LP: #1559981): - - these will be in the following dpdk release and delta can then be dropped - - 26 fixes that do not change api/behaviour but fix serious issues - - 01 d3a274ce app/testpmd: handle SIGINT and SIGTERM - - 02 308df2bf Handle SIGINT and SIGTERM in l3fwd. - - 03 da82ee17 tools: fix unbinding failure handling - - 04 16c1814c tools: support Python 3 in bind script - - 05 bb9f4085 tools: support binding to built-in kernel modules - - 06 6e7caa1a eal/linux: support built-in kernel modules - - 07 86f36ff9 mempool: fix leak when creation fails - - 08 ca67ed28 vhost: fix leak of fds and mmaps - - 09 fa11a8a7 port: fix crash for ring writer nodrop - - 10 04f36690 port: fix crash for ethdev writer nodrop - - 11 c7a4ff80 i40e: fix overflow - - 12 097e920c i40e: fix inverted check for no refcount - - 13 330aa319 i40e: fix VLAN filtering - - 14 9f44dd3d i40e/base: fix missing check for stopped admin queue - - 15 8a880736 i40e/base: fix driver load failure - - 16 7656a546 fm10k: fix VLAN flag in scattered Rx - - 17 c6fb0e55 pcap: fix captured frame length - - 18 6e027237 bonding: fix detach of bonded device - - 19 df3e8ad7 bonding: fix detach of slave devices - - 20 786c990a bonding: copy entire config structure in mode 4 - - 21 6698820b bonding: do not ignore multicast in mode 4 - - 22 8997a10b bonding: fix active slaves with no primary - - 23 7a7122ed bonding: do not activate slave twice - - 24 2186fff3 bonding: fix crash when no slave device - - 25 c680a4a8 virtio: fix crash in statistics functions - - 26 3b1e3e4e virtio: fix descriptors pointing to the same buffer - * d/p/ubuntu-backport-27-virtio-fix-restart.patch for (LP: #1559981): - - fixing re-initializing the ethdev as openvswitch-dpdk does in the - virtio pmd driver by moving the detection of already being initialized - from virtio_dev_close to virtio_dev_start/stop - - this will be in the following dpdk release and delta can then be dropped - * d/rules build with debuginfo (LP: #1560839): - - exporting CFLAGS for all dpdk build processes - - dh_strip will automatically and create -dbgsym packages accordingly - - -- Christian Ehrhardt Wed, 23 Mar 2016 10:34:50 +0100 - -dpdk (2.2.0-0ubuntu5) xenial; urgency=medium - - * d/t/test-initscripts fix issues regarding 1G hugepages - - the dep8 was already taking care of 1G hugepages being not supported in - some environments. But it was failing when supported, but not enough - memory available. - - -- Christian Ehrhardt Wed, 09 Mar 2016 17:19:24 +0000 - -dpdk (2.2.0-0ubuntu4) xenial; urgency=medium - - * harden d/dpdk-init for configuration issues (LP: #1551601): - - detect and warn about bad bus specifications. - - detect and warn about incomplete device specifications. - - detect and warn about non existing pci IDs. - - avoid failing when working with unassigned devices. - - d/t/test-initscripts now testing various misconfigs. - - d/t/test-initscripts now also verifying service status. - * d/dpdk-init d/dpdk.conf now also support 1G hugepages (LP: #1551767): - - detect and warn if 1G pages are not available but configured. - - d/t/test-initscripts now also testing hugepage allocations. - - d/dpdk.conf has an option to drop caches to incease the likeliness of - successful 1G hugepage allocations (default off). - * d/rules replaced uname -m with DEB_HOST_GNU_CPU (LP: #1551796): - * fix testpmd to run without Xen environment (LP: #1551752): - - upstream discussion is slow, but we need a fix now. We can drop this - and change to the upstream solution when it is available. - * avoid errors due to missing modules (LP: #1554397): - - d/dpdk-init gracefully warns about missing modules. - - d/control now suggests linux-image-generic. - - d/dpdk.interfaces has a comment that makes the user aware. - * d/dpdk-init fix failure loading vfio-pci (LP: #1554214): - - d/dpdk-init no more converts "-" to "_" to make vfio-pci work - - d/dpdk.interfaces enhanced comments and updated examples - - d/dpdk-doc.README.debian got extra notes about using some modules - * unify whitespace/tabs in packaging and scripts - - tabs/spaces to just spaces in d/dpdk-init and d/dpdk.init. - - few remaining spaces to tabs in d/rules - * d/t/test-* now satisfy shellcheck - * d/* fix various comments and guides to be more readable - * d/dpdk-init and d/copyright updated copyright information - - -- Christian Ehrhardt Wed, 09 Mar 2016 08:48:58 +0000 - -dpdk (2.2.0-0ubuntu3) xenial; urgency=medium - - * Guard dep8 tests against non supported platforms (LP: #1551158): - - d/t/control now avoids failing due to "dependencies are unsatisfiable" - when fetching packages. The packages architecture restrictions got added - to avoid that. - - d/t/check-dpdk-supported-arch.sh is called by all DPDK tests to ensure - the platform is supported. If not it skips the test. - - -- Christian Ehrhardt Mon, 29 Feb 2016 11:03:39 +0000 - -dpdk (2.2.0-0ubuntu2) xenial; urgency=medium - - [ Christian Ehrhardt ] - * fix libdpdk.so library linking (LP: #1547517) - - libdpdk.so now has proper linkage information (was underlinked) - Note: this can be dropped when moving to DPDK 2.3 with linker script - instead of combined shared lib. - - remove reference to extra linkage needed when building against -ldpdk - in dpdk-doc README. - - add dep8 d/t/test-linkage to verify linking dpdk works as expected. - * d/control remove ${shlibs:Depends} on package with no linked binary - avoiding dpkg-gencontrol build warning about unknown ${shlibs:Depends}. - * d/dpdk-doc.README.debian fix path to DPDK build environment variable - helper script in README file. - * Update VCS Info in d/control to include our repositories. - - [ James Page ] - * d/*: wrap-and-sort. - * d/control: Trim trailing whitespace. - - -- Christian Ehrhardt Thu, 25 Feb 2016 16:07:21 +0000 - -dpdk (2.2.0-0ubuntu1) xenial; urgency=low - - * Merge from Upstream to DPDK 2.2 - Remaining changes: - - Set soabi for the combined shared library - * Drop changes: - - configuring RTE_LIBNAME to dpdk as it is the upstream default now - - enabled formerly non building components as they build properly in 2.2 - - d/p/ubunut-avoid-texlive-fonts-extra, d/control: - Replace use of DejaVuSansMono is no more needed as upstream changed the - font. Thereby we can drop our delta. - - d/p/ubuntu-fix-gcc5-ftbs.patch no more needed with DPDK 2.2 - * Added changes - - Disable CONFIG_RTE_NEXT_ABI as required for packaging (git 506f51cc) - - Enable LIBRTE_PMD_PCAP which is useful for some DPDK testcase examples - this adds a build dependency to libpcap-dev - - Fully support DH_VERBOSE for build debugging convenience - - adapt to new make infrastructure of dpdk 2.2 - - d/README.debian: convert into d/dpdk-doc.README.debian - - d/dpdk-doc.README.debian: update recommendations about sdk env variables - - d/dpdk-sdk-env.sh: now deployed in /usr/share/dpdk to be opt in - - enable XEN support for dpdk (LP: #1521289). - - -- Christian Ehrhardt Wed, 17 Feb 2016 09:29:28 +0100 - -dpdk (2.0.0-0ubuntu3) xenial; urgency=medium - - * Only generate HTML documentation, easing backports to 14.04 and - reducing the time to build and size of the -doc package (LP: #1524700). - - -- James Page Thu, 10 Dec 2015 10:23:51 +0000 - -dpdk (2.0.0-0ubuntu2) xenial; urgency=low - - * d/p/ubunut-avoid-texlive-fonts-extra, d/control: - Replace use of DejaVuSansMono by courier and drop dependency on the - texlive-fonts-extra package (which is in universe). - * d/watch added to allow use of uscan to check for upstream releases. - * d/dpdk-init: fix error if bash variables could not be resolved that - appeared as "[: -gt: unexpected operator" (had no functional impact) - * d/dpdk-init: - Replace use of head and cut (in /usr/bin) commands with sed (in /bin) - while also adding /usr/bin to the PATH used on direct /etc/init.d/dpdk - invocation. The PATH is only updated to be on the safe side, there - should be no other commands from /usr/bin used (LP: #1516543). - * d/t/test-mountpoint: add dep8 test to cover the issue of LP #1517075. - * d/dpdk-dev.install: Copy the SDK makefiles into place (LP: #1517075). - - -- Stefan Bader Tue, 17 Nov 2015 11:50:15 +0100 - -dpdk (2.0.0-0ubuntu1) wily; urgency=low - - * Initial release (LP: #1487538) - - -- Stefan Bader Mon, 01 Jun 2015 18:46:38 +0200 diff --git a/ovs_build/dpdk_2.2.0/debian/control b/ovs_build/dpdk_2.2.0/debian/control deleted file mode 100644 index 60cf704..0000000 --- a/ovs_build/dpdk_2.2.0/debian/control +++ /dev/null @@ -1,81 +0,0 @@ -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_2.2.0/debian/copyright b/ovs_build/dpdk_2.2.0/debian/copyright deleted file mode 100644 index 521df60..0000000 --- a/ovs_build/dpdk_2.2.0/debian/copyright +++ /dev/null @@ -1,48 +0,0 @@ -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_2.2.0/debian/dpdk-dev.dirs b/ovs_build/dpdk_2.2.0/debian/dpdk-dev.dirs deleted file mode 100644 index bdac81a..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk-dev.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/share/dpdk diff --git a/ovs_build/dpdk_2.2.0/debian/dpdk-dev.install b/ovs_build/dpdk_2.2.0/debian/dpdk-dev.install deleted file mode 100644 index f6eba19..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk-dev.install +++ /dev/null @@ -1 +0,0 @@ -debian/dpdk-sdk-env.sh /usr/share/dpdk/ diff --git a/ovs_build/dpdk_2.2.0/debian/dpdk-doc.README.Debian b/ovs_build/dpdk_2.2.0/debian/dpdk-doc.README.Debian deleted file mode 100644 index 669bf39..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk-doc.README.Debian +++ /dev/null @@ -1,52 +0,0 @@ -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_2.2.0/debian/dpdk-doc.dirs b/ovs_build/dpdk_2.2.0/debian/dpdk-doc.dirs deleted file mode 100644 index fcd9dfe..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk-doc.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/share/doc/dpdk diff --git a/ovs_build/dpdk_2.2.0/debian/dpdk-init b/ovs_build/dpdk_2.2.0/debian/dpdk-init deleted file mode 100755 index 86eda2c..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk-init +++ /dev/null @@ -1,251 +0,0 @@ -#!/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_2.2.0/debian/dpdk-sdk-env.sh b/ovs_build/dpdk_2.2.0/debian/dpdk-sdk-env.sh deleted file mode 100755 index 2fc5570..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk-sdk-env.sh +++ /dev/null @@ -1,3 +0,0 @@ -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_2.2.0/debian/dpdk.conf b/ovs_build/dpdk_2.2.0/debian/dpdk.conf deleted file mode 100644 index fb4572d..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk.conf +++ /dev/null @@ -1,54 +0,0 @@ -# -# 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_2.2.0/debian/dpdk.dirs b/ovs_build/dpdk_2.2.0/debian/dpdk.dirs deleted file mode 100644 index 29ca563..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk.dirs +++ /dev/null @@ -1,5 +0,0 @@ -etc/dpdk -lib/dpdk -sbin -usr/bin -usr/lib/dpdk diff --git a/ovs_build/dpdk_2.2.0/debian/dpdk.init b/ovs_build/dpdk_2.2.0/debian/dpdk.init deleted file mode 100644 index 921c38b..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk.init +++ /dev/null @@ -1,57 +0,0 @@ -#!/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_2.2.0/debian/dpdk.install b/ovs_build/dpdk_2.2.0/debian/dpdk.install deleted file mode 100644 index 24c8d45..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk.install +++ /dev/null @@ -1,2 +0,0 @@ -debian/dpdk-init lib/dpdk/ -debian/dpdk.conf etc/dpdk/ diff --git a/ovs_build/dpdk_2.2.0/debian/dpdk.interfaces b/ovs_build/dpdk_2.2.0/debian/dpdk.interfaces deleted file mode 100644 index 470a40e..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk.interfaces +++ /dev/null @@ -1,13 +0,0 @@ -# -# 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_2.2.0/debian/dpdk.service b/ovs_build/dpdk_2.2.0/debian/dpdk.service deleted file mode 100644 index 09ef8be..0000000 --- a/ovs_build/dpdk_2.2.0/debian/dpdk.service +++ /dev/null @@ -1,12 +0,0 @@ -[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_2.2.0/debian/libdpdk-dev.dirs b/ovs_build/dpdk_2.2.0/debian/libdpdk-dev.dirs deleted file mode 100644 index e43b95c..0000000 --- a/ovs_build/dpdk_2.2.0/debian/libdpdk-dev.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/include diff --git a/ovs_build/dpdk_2.2.0/debian/libdpdk0.dirs b/ovs_build/dpdk_2.2.0/debian/libdpdk0.dirs deleted file mode 100644 index 6845771..0000000 --- a/ovs_build/dpdk_2.2.0/debian/libdpdk0.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/lib diff --git a/ovs_build/dpdk_2.2.0/debian/libdpdk0.symbols.amd64 b/ovs_build/dpdk_2.2.0/debian/libdpdk0.symbols.amd64 deleted file mode 100644 index 743b1e9..0000000 --- a/ovs_build/dpdk_2.2.0/debian/libdpdk0.symbols.amd64 +++ /dev/null @@ -1,580 +0,0 @@ -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_2.2.0/debian/libdpdk0.symbols.i386 b/ovs_build/dpdk_2.2.0/debian/libdpdk0.symbols.i386 deleted file mode 100644 index 7d450aa..0000000 --- a/ovs_build/dpdk_2.2.0/debian/libdpdk0.symbols.i386 +++ /dev/null @@ -1,569 +0,0 @@ -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_2.2.0/debian/patches/series b/ovs_build/dpdk_2.2.0/debian/patches/series deleted file mode 100644 index 28d08d4..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/series +++ /dev/null @@ -1,44 +0,0 @@ -ubuntu-fix-doc-installpath.patch -ubuntu-combined-shared-lib-abiversion.patch -ubuntu-fix-library-linkage.patch -ubuntu-fix-testpmd-without-xen.patch -ubuntu-fix-lpm-use-after-free-and-leak.patch -ubuntu-backport-01-app-testpmd-handle-SIGINT-and-SIGTERM.patch -ubuntu-backport-02-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch -ubuntu-backport-03-tools-fix-unbinding-failure-handling.patch -ubuntu-backport-04-tools-support-Python-3-in-bind-script.patch -ubuntu-backport-05-tools-support-binding-to-built-in-kernel-modules.patch -ubuntu-backport-06-eal-linux-support-built-in-kernel-modules.patch -ubuntu-backport-07-mempool-fix-leak-when-creation-fails.patch -ubuntu-backport-08-vhost-fix-leak-of-fds-and-mmaps.patch -ubuntu-backport-09-port-fix-crash-for-ring-writer-nodrop.patch -ubuntu-backport-10-port-fix-crash-for-ethdev-writer-nodrop.patch -ubuntu-backport-11-i40e-fix-overflow.patch -ubuntu-backport-12-i40e-fix-inverted-check-for-no-refcount.patch -ubuntu-backport-13-i40e-fix-VLAN-filtering.patch -ubuntu-backport-14-i40e-base-fix-missing-check-for-stopped-admin-queue.patch -ubuntu-backport-15-i40e-base-fix-driver-load-failure.patch -ubuntu-backport-16-fm10k-fix-VLAN-flag-in-scattered-Rx.patch -ubuntu-backport-17-pcap-fix-captured-frame-length.patch -ubuntu-backport-18-bonding-fix-detach-of-bonded-device.patch -ubuntu-backport-19-bonding-fix-detach-of-slave-devices.patch -ubuntu-backport-20-bonding-copy-entire-config-structure-in-mode-4.patch -ubuntu-backport-21-bonding-do-not-ignore-multicast-in-mode-4.patch -ubuntu-backport-22-bonding-fix-active-slaves-with-no-primary.patch -ubuntu-backport-23-bonding-do-not-activate-slave-twice.patch -ubuntu-backport-24-bonding-fix-crash-when-no-slave-device.patch -ubuntu-backport-25-virtio-fix-crash-in-statistics-functions.patch -ubuntu-backport-26-virtio-fix-descriptors-pointing-to-the-same-buffer.patch -ubuntu-backport-27-virtio-fix-restart.patch -ubuntu-backport-28-lpm-fix-allocation-of-an-existing-object.patch -ubuntu-backport-29-hash-fix-multi-process-support.patch -ubuntu-backport-30-hash-fix-allocation-of-an-existing-object.patch -ubuntu-backport-31-hash-fix-race-condition-at-creation.patch -ubuntu-backport-32-eal-fix-resource-leak.patch -ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch -ubuntu-backport-34-port-fix-ring-writer-buffer-overflow.patch -ubuntu-backport-35-port-fix-burst-size-mask-type.patch -ubuntu-backport-36-pci-identify-devices-not-managed-by-any-kernel-drive.patch -ubuntu-backport-37-pci-ignore-devices-already-managed-in-Linux-when-map.patch -ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch -ubuntu-fix-vhost-user-socket-permission.patch diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-01-app-testpmd-handle-SIGINT-and-SIGTERM.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-01-app-testpmd-handle-SIGINT-and-SIGTERM.patch deleted file mode 100644 index 9c8e86a..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-01-app-testpmd-handle-SIGINT-and-SIGTERM.patch +++ /dev/null @@ -1,146 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From d3a274ce9dee28118b8647e0db72ef0f4b6a6323 Mon Sep 17 00:00:00 2001 -From: Zhihong Wang -Date: Wed, 30 Dec 2015 16:59:49 -0500 -Subject: [PATCH] app/testpmd: handle SIGINT and SIGTERM - -Handle SIGINT and SIGTERM in testpmd. - -Signed-off-by: Zhihong Wang -Acked-by: Michael Qiu ---- - app/test-pmd/cmdline.c | 20 +++++++++++++------- - app/test-pmd/testpmd.c | 39 +++++++++++++++++++++++++++++++++------ - app/test-pmd/testpmd.h | 1 + - 3 files changed, 47 insertions(+), 13 deletions(-) - -Index: dpdk/app/test-pmd/cmdline.c -=================================================================== ---- dpdk.orig/app/test-pmd/cmdline.c -+++ dpdk/app/test-pmd/cmdline.c -@@ -90,6 +90,8 @@ - - #include "testpmd.h" - -+static struct cmdline *testpmd_cl; -+ - static void cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue); - - #ifdef RTE_NIC_BYPASS -@@ -9778,17 +9780,21 @@ cmdline_parse_ctx_t main_ctx[] = { - void - prompt(void) - { -- struct cmdline *cl; -- - /* initialize non-constant commands */ - cmd_set_fwd_mode_init(); - -- cl = cmdline_stdin_new(main_ctx, "testpmd> "); -- if (cl == NULL) { -+ testpmd_cl = cmdline_stdin_new(main_ctx, "testpmd> "); -+ if (testpmd_cl == NULL) - return; -- } -- cmdline_interact(cl); -- cmdline_stdin_exit(cl); -+ cmdline_interact(testpmd_cl); -+ cmdline_stdin_exit(testpmd_cl); -+} -+ -+void -+prompt_exit(void) -+{ -+ if (testpmd_cl != NULL) -+ cmdline_quit(testpmd_cl); - } - - static void -Index: dpdk/app/test-pmd/testpmd.c -=================================================================== ---- dpdk.orig/app/test-pmd/testpmd.c -+++ dpdk/app/test-pmd/testpmd.c -@@ -1569,13 +1569,16 @@ pmd_test_exit(void) - if (test_done == 0) - stop_packet_forwarding(); - -- FOREACH_PORT(pt_id, ports) { -- printf("Stopping port %d...", pt_id); -- fflush(stdout); -- rte_eth_dev_close(pt_id); -- printf("done\n"); -+ if (ports != NULL) { -+ no_link_check = 1; -+ FOREACH_PORT(pt_id, ports) { -+ printf("\nShutting down port %d...\n", pt_id); -+ fflush(stdout); -+ stop_port(pt_id); -+ close_port(pt_id); -+ } - } -- printf("bye...\n"); -+ printf("\nBye...\n"); - } - - typedef void (*cmd_func_t)(void); -@@ -1983,12 +1986,35 @@ init_port(void) - ports[pid].enabled = 1; - } - -+static void -+force_quit(void) -+{ -+ pmd_test_exit(); -+ prompt_exit(); -+} -+ -+static void -+signal_handler(int signum) -+{ -+ if (signum == SIGINT || signum == SIGTERM) { -+ printf("\nSignal %d received, preparing to exit...\n", -+ signum); -+ force_quit(); -+ /* exit with the expected status */ -+ signal(signum, SIG_DFL); -+ kill(getpid(), signum); -+ } -+} -+ - int - main(int argc, char** argv) - { - int diag; - uint8_t port_id; - -+ signal(SIGINT, signal_handler); -+ signal(SIGTERM, signal_handler); -+ - diag = rte_eal_init(argc, argv); - if (diag < 0) - rte_panic("Cannot init EAL\n"); -@@ -2040,6 +2066,7 @@ main(int argc, char** argv) - start_packet_forwarding(0); - printf("Press enter to exit\n"); - rc = read(0, &c, 1); -+ pmd_test_exit(); - if (rc < 0) - return 1; - } -Index: dpdk/app/test-pmd/testpmd.h -=================================================================== ---- dpdk.orig/app/test-pmd/testpmd.h -+++ dpdk/app/test-pmd/testpmd.h -@@ -462,6 +462,7 @@ unsigned int parse_item_list(char* str, - unsigned int *parsed_items, int check_unique_values); - void launch_args_parse(int argc, char** argv); - void prompt(void); -+void prompt_exit(void); - void nic_stats_display(portid_t port_id); - void nic_stats_clear(portid_t port_id); - void nic_xstats_display(portid_t port_id); diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-02-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-02-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch deleted file mode 100644 index acf23b7..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-02-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch +++ /dev/null @@ -1,134 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 308df2bfba3d238fc1d2d16cc10c84681803b408 Mon Sep 17 00:00:00 2001 -From: Zhihong Wang -Date: Wed, 30 Dec 2015 16:59:51 -0500 -Subject: [PATCH] examples/l3fwd: handle SIGINT and SIGTERM - -Handle SIGINT and SIGTERM in l3fwd. - -Signed-off-by: Zhihong Wang -Acked-by: Michael Qiu -Acked-by: Konstantin Ananyev ---- - examples/l3fwd/main.c | 46 ++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 42 insertions(+), 4 deletions(-) - -diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c -index 5b0c2dd..21a5782 100644 ---- a/examples/l3fwd/main.c -+++ b/examples/l3fwd/main.c -@@ -41,6 +41,8 @@ - #include - #include - #include -+#include -+#include - - #include - #include -@@ -75,6 +77,8 @@ - #include - #include - -+static volatile bool force_quit; -+ - #define APP_LOOKUP_EXACT_MATCH 0 - #define APP_LOOKUP_LPM 1 - #define DO_RFC_1812_CHECKS -@@ -1553,7 +1557,7 @@ main_loop(__attribute__((unused)) void *dummy) - portid, queueid); - } - -- while (1) { -+ while (!force_quit) { - - cur_tsc = rte_rdtsc(); - -@@ -1781,6 +1785,8 @@ main_loop(__attribute__((unused)) void *dummy) - - } - } -+ -+ return 0; - } - - static int -@@ -2516,8 +2522,12 @@ check_all_ports_link_status(uint8_t port_num, uint32_t port_mask) - printf("\nChecking link status"); - fflush(stdout); - for (count = 0; count <= MAX_CHECK_TIME; count++) { -+ if (force_quit) -+ return; - all_ports_up = 1; - for (portid = 0; portid < port_num; portid++) { -+ if (force_quit) -+ return; - if ((port_mask & (1 << portid)) == 0) - continue; - memset(&link, 0, sizeof(link)); -@@ -2559,6 +2569,16 @@ check_all_ports_link_status(uint8_t port_num, uint32_t port_mask) - } - } - -+static void -+signal_handler(int signum) -+{ -+ if (signum == SIGINT || signum == SIGTERM) { -+ printf("\n\nSignal %d received, preparing to exit...\n", -+ signum); -+ force_quit = true; -+ } -+} -+ - int - main(int argc, char **argv) - { -@@ -2579,6 +2599,10 @@ main(int argc, char **argv) - argc -= ret; - argv += ret; - -+ force_quit = false; -+ signal(SIGINT, signal_handler); -+ signal(SIGTERM, signal_handler); -+ - /* pre-init dst MACs for all ports to 02:00:00:00:00:xx */ - for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++) { - dest_eth_addr[portid] = ETHER_LOCAL_ADMIN_ADDR + ((uint64_t)portid << 40); -@@ -2733,12 +2757,26 @@ main(int argc, char **argv) - - check_all_ports_link_status((uint8_t)nb_ports, enabled_port_mask); - -+ ret = 0; - /* launch per-lcore init on every lcore */ - rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER); - RTE_LCORE_FOREACH_SLAVE(lcore_id) { -- if (rte_eal_wait_lcore(lcore_id) < 0) -- return -1; -+ if (rte_eal_wait_lcore(lcore_id) < 0) { -+ ret = -1; -+ break; -+ } - } - -- return 0; -+ /* stop ports */ -+ for (portid = 0; portid < nb_ports; portid++) { -+ if ((enabled_port_mask & (1 << portid)) == 0) -+ continue; -+ printf("Closing port %d...", portid); -+ rte_eth_dev_stop(portid); -+ rte_eth_dev_close(portid); -+ printf(" Done\n"); -+ } -+ printf("Bye...\n"); -+ -+ return ret; - } --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-03-tools-fix-unbinding-failure-handling.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-03-tools-fix-unbinding-failure-handling.patch deleted file mode 100644 index c50ad3f..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-03-tools-fix-unbinding-failure-handling.patch +++ /dev/null @@ -1,35 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From da82ee17e6ea99bf2931383ac33b0caccaaaefce Mon Sep 17 00:00:00 2001 -From: Jeff Shaw -Date: Mon, 8 Feb 2016 16:33:46 -0800 -Subject: [PATCH] tools: fix unbinding failure handling - -We should call sys.exit(), not divide sys by exit(). - -Signed-off-by: Jeff Shaw -Acked-by: Bruce Richardson ---- - tools/dpdk_nic_bind.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py -index f02454e..a1923c5 100755 ---- a/tools/dpdk_nic_bind.py -+++ b/tools/dpdk_nic_bind.py -@@ -317,7 +317,7 @@ def unbind_one(dev_id, force): - f = open(filename, "a") - except: - print "Error: unbind failed for %s - Cannot open %s" % (dev_id, filename) -- sys/exit(1) -+ sys.exit(1) - f.write(dev_id) - f.close() - --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-04-tools-support-Python-3-in-bind-script.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-04-tools-support-Python-3-in-bind-script.patch deleted file mode 100644 index b3ccd6a..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-04-tools-support-Python-3-in-bind-script.patch +++ /dev/null @@ -1,259 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 16c1814c802c205f6d3c32e3d3d10de9f87e7f22 Mon Sep 17 00:00:00 2001 -From: Dawid Jurczak -Date: Wed, 27 Jan 2016 20:59:44 +0100 -Subject: [PATCH] tools: support Python 3 in bind script - -This patch fixes syntax errors during binding ethernet device -on systems where Python 3 is default. -Backward compatibility with Python 2 is preserved. - -Signed-off-by: Dawid Jurczak ---- - tools/dpdk_nic_bind.py | 74 +++++++++++++++++++++++++------------------------- - 1 file changed, 37 insertions(+), 37 deletions(-) - -diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py -index a1923c5..dfefdae 100755 ---- a/tools/dpdk_nic_bind.py -+++ b/tools/dpdk_nic_bind.py -@@ -54,7 +54,7 @@ args = [] - def usage(): - '''Print usage information for the program''' - argv0 = basename(sys.argv[0]) -- print """ -+ print (""" - Usage: - ------ - -@@ -110,7 +110,7 @@ To unbind 0000:01:00.0 from using any driver - To bind 0000:02:00.0 and 0000:02:00.1 to the ixgbe kernel driver - %(argv0)s -b ixgbe 02:00.0 02:00.1 - -- """ % locals() # replace items from local variables -+ """ % locals()) # replace items from local variables - - # This is roughly compatible with check_output function in subprocess module - # which is only available in python 2.7. -@@ -156,7 +156,7 @@ def check_modules(): - '''Checks that igb_uio is loaded''' - global dpdk_drivers - -- fd = file("/proc/modules") -+ fd = open("/proc/modules", 'r') - loaded_mods = fd.readlines() - fd.close() - -@@ -176,10 +176,10 @@ def check_modules(): - # check if we have at least one loaded module - if True not in [mod["Found"] for mod in mods] and b_flag is not None: - if b_flag in dpdk_drivers: -- print "Error - no supported modules(DPDK driver) are loaded" -+ print ("Error - no supported modules(DPDK driver) are loaded") - sys.exit(1) - else: -- print "Warning - no supported modules(DPDK driver) are loaded" -+ print ("Warning - no supported modules(DPDK driver) are loaded") - - # change DPDK driver list to only contain drivers that are loaded - dpdk_drivers = [mod["Name"] for mod in mods if mod["Found"]] -@@ -198,7 +198,7 @@ def get_pci_device_details(dev_id): - for line in extra_info: - if len(line) == 0: - continue -- name, value = line.split("\t", 1) -+ name, value = line.decode().split("\t", 1) - name = name.strip(":") + "_str" - device[name] = value - # check for a unix interface name -@@ -234,7 +234,7 @@ def get_nic_details(): - dev["Device"] = int(dev["Device"],16) - devices[dev["Slot"]] = dict(dev) # use dict to make copy of dev - else: -- name, value = dev_line.split("\t", 1) -+ name, value = dev_line.decode().split("\t", 1) - dev[name.rstrip(":")] = value - - # check what is the interface if any for an ssh connection if -@@ -243,17 +243,17 @@ def get_nic_details(): - route = check_output(["ip", "-o", "route"]) - # filter out all lines for 169.254 routes - route = "\n".join(filter(lambda ln: not ln.startswith("169.254"), -- route.splitlines())) -+ route.decode().splitlines())) - rt_info = route.split() -- for i in xrange(len(rt_info) - 1): -+ for i in range(len(rt_info) - 1): - if rt_info[i] == "dev": - ssh_if.append(rt_info[i+1]) - - # based on the basic info, get extended text details - for d in devices.keys(): - # get additional info and add it to existing data -- devices[d] = dict(devices[d].items() + -- get_pci_device_details(d).items()) -+ devices[d] = devices[d].copy() -+ devices[d].update(get_pci_device_details(d).items()) - - for _if in ssh_if: - if _if in devices[d]["Interface"].split(","): -@@ -293,22 +293,22 @@ def dev_id_from_dev_name(dev_name): - if dev_name in devices[d]["Interface"].split(","): - return devices[d]["Slot"] - # if nothing else matches - error -- print "Unknown device: %s. " \ -- "Please specify device in \"bus:slot.func\" format" % dev_name -+ print ("Unknown device: %s. " \ -+ "Please specify device in \"bus:slot.func\" format" % dev_name) - sys.exit(1) - - def unbind_one(dev_id, force): - '''Unbind the device identified by "dev_id" from its current driver''' - dev = devices[dev_id] - if not has_driver(dev_id): -- print "%s %s %s is not currently managed by any driver\n" % \ -- (dev["Slot"], dev["Device_str"], dev["Interface"]) -+ print ("%s %s %s is not currently managed by any driver\n" % \ -+ (dev["Slot"], dev["Device_str"], dev["Interface"])) - return - - # prevent us disconnecting ourselves - if dev["Ssh_if"] and not force: -- print "Routing table indicates that interface %s is active" \ -- ". Skipping unbind" % (dev_id) -+ print ("Routing table indicates that interface %s is active" \ -+ ". Skipping unbind" % (dev_id)) - return - - # write to /sys to unbind -@@ -316,7 +316,7 @@ def unbind_one(dev_id, force): - try: - f = open(filename, "a") - except: -- print "Error: unbind failed for %s - Cannot open %s" % (dev_id, filename) -+ print ("Error: unbind failed for %s - Cannot open %s" % (dev_id, filename)) - sys.exit(1) - f.write(dev_id) - f.close() -@@ -329,14 +329,14 @@ def bind_one(dev_id, driver, force): - - # prevent disconnection of our ssh session - if dev["Ssh_if"] and not force: -- print "Routing table indicates that interface %s is active" \ -- ". Not modifying" % (dev_id) -+ print ("Routing table indicates that interface %s is active" \ -+ ". Not modifying" % (dev_id)) - return - - # unbind any existing drivers we don't want - if has_driver(dev_id): - if dev["Driver_str"] == driver: -- print "%s already bound to driver %s, skipping\n" % (dev_id, driver) -+ print ("%s already bound to driver %s, skipping\n" % (dev_id, driver)) - return - else: - saved_driver = dev["Driver_str"] -@@ -349,14 +349,14 @@ def bind_one(dev_id, driver, force): - try: - f = open(filename, "w") - except: -- print "Error: bind failed for %s - Cannot open %s" % (dev_id, filename) -+ print ("Error: bind failed for %s - Cannot open %s" % (dev_id, filename)) - return - try: - f.write("%04x %04x" % (dev["Vendor"], dev["Device"])) - f.close() - except: -- print "Error: bind failed for %s - Cannot write new PCI ID to " \ -- "driver %s" % (dev_id, driver) -+ print ("Error: bind failed for %s - Cannot write new PCI ID to " \ -+ "driver %s" % (dev_id, driver)) - return - - # do the bind by writing to /sys -@@ -364,7 +364,7 @@ def bind_one(dev_id, driver, force): - try: - f = open(filename, "a") - except: -- print "Error: bind failed for %s - Cannot open %s" % (dev_id, filename) -+ print ("Error: bind failed for %s - Cannot open %s" % (dev_id, filename)) - if saved_driver is not None: # restore any previous driver - bind_one(dev_id, saved_driver, force) - return -@@ -378,7 +378,7 @@ def bind_one(dev_id, driver, force): - tmp = get_pci_device_details(dev_id) - if "Driver_str" in tmp and tmp["Driver_str"] == driver: - return -- print "Error: bind failed for %s - Cannot bind to driver %s" % (dev_id, driver) -+ print ("Error: bind failed for %s - Cannot bind to driver %s" % (dev_id, driver)) - if saved_driver is not None: # restore any previous driver - bind_one(dev_id, saved_driver, force) - return -@@ -423,8 +423,8 @@ def display_devices(title, dev_list, extra_params = None): - %()s fields in it for replacement by the named fields in each device's - dictionary.''' - strings = [] # this holds the strings to print. We sort before printing -- print "\n%s" % title -- print "="*len(title) -+ print ("\n%s" % title) -+ print ("="*len(title)) - if len(dev_list) == 0: - strings.append("") - else: -@@ -436,7 +436,7 @@ def display_devices(title, dev_list, extra_params = None): - strings.append("%s '%s'" % (dev["Slot"], dev["Device_str"])) - # sort before printing, so that the entries appear in PCI order - strings.sort() -- print "\n".join(strings) # print one per line -+ print ("\n".join(strings)) # print one per line - - def show_status(): - '''Function called when the script is passed the "--status" option. Displays -@@ -480,9 +480,9 @@ def parse_args(): - opts, args = getopt.getopt(sys.argv[1:], "b:us", - ["help", "usage", "status", "force", - "bind=", "unbind"]) -- except getopt.GetoptError, error: -- print str(error) -- print "Run '%s --usage' for further information" % sys.argv[0] -+ except (getopt.GetoptError, error): -+ print (str(error)) -+ print ("Run '%s --usage' for further information" % sys.argv[0]) - sys.exit(1) - - for opt, arg in opts: -@@ -495,7 +495,7 @@ def parse_args(): - force_flag = True - if opt == "-b" or opt == "-u" or opt == "--bind" or opt == "--unbind": - if b_flag is not None: -- print "Error - Only one bind or unbind may be specified\n" -+ print ("Error - Only one bind or unbind may be specified\n") - sys.exit(1) - if opt == "-u" or opt == "--unbind": - b_flag = "none" -@@ -510,13 +510,13 @@ def do_arg_actions(): - global args - - if b_flag is None and not status_flag: -- print "Error: No action specified for devices. Please give a -b or -u option" -- print "Run '%s --usage' for further information" % sys.argv[0] -+ print ("Error: No action specified for devices. Please give a -b or -u option") -+ print ("Run '%s --usage' for further information" % sys.argv[0]) - sys.exit(1) - - if b_flag is not None and len(args) == 0: -- print "Error: No devices specified." -- print "Run '%s --usage' for further information" % sys.argv[0] -+ print ("Error: No devices specified.") -+ print ("Run '%s --usage' for further information" % sys.argv[0]) - sys.exit(1) - - if b_flag == "none" or b_flag == "None": --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-05-tools-support-binding-to-built-in-kernel-modules.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-05-tools-support-binding-to-built-in-kernel-modules.patch deleted file mode 100644 index 25f79b7..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-05-tools-support-binding-to-built-in-kernel-modules.patch +++ /dev/null @@ -1,75 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From bb9f408550d13af6c1da104b0d9d9b9837f69bde Mon Sep 17 00:00:00 2001 -From: Kamil Rytarowski -Date: Thu, 28 Jan 2016 14:13:53 +0100 -Subject: [PATCH] tools: support binding to built-in kernel modules - -Currently dpdk_nic_bind.py detects Linux kernel modules via reading -/proc/modules. Built-in ones aren't listed there and therefore they are -not being found by the script. - -Add support for checking built-in modules with parsing the sysfs files. - -This commit obsoletes the /proc/modules parsing approach. - -Signed-off-by: Kamil Rytarowski -Acked-by: Yuanhan Liu ---- - tools/dpdk_nic_bind.py | 30 ++++++++++++++++++++---------- - 1 file changed, 20 insertions(+), 10 deletions(-) - -diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py -index dfefdae..14c5311 100755 ---- a/tools/dpdk_nic_bind.py -+++ b/tools/dpdk_nic_bind.py -@@ -156,22 +156,32 @@ def check_modules(): - '''Checks that igb_uio is loaded''' - global dpdk_drivers - -- fd = open("/proc/modules", 'r') -- loaded_mods = fd.readlines() -- fd.close() -- - # list of supported modules - mods = [{"Name" : driver, "Found" : False} for driver in dpdk_drivers] - - # first check if module is loaded -- for line in loaded_mods: -+ try: -+ # Get list of sysfs modules (both built-in and dynamically loaded) -+ sysfs_path = '/sys/module/' -+ -+ # Get the list of directories in sysfs_path -+ sysfs_mods = [os.path.join(sysfs_path, o) for o -+ in os.listdir(sysfs_path) -+ if os.path.isdir(os.path.join(sysfs_path, o))] -+ -+ # Extract the last element of '/sys/module/abc' in the array -+ sysfs_mods = [a.split('/')[-1] for a in sysfs_mods] -+ -+ # special case for vfio_pci (module is named vfio-pci, -+ # but its .ko is named vfio_pci) -+ sysfs_mods = map(lambda a: -+ a if a != 'vfio_pci' else 'vfio-pci', sysfs_mods) -+ - for mod in mods: -- if line.startswith(mod["Name"]): -- mod["Found"] = True -- # special case for vfio_pci (module is named vfio-pci, -- # but its .ko is named vfio_pci) -- elif line.replace("_", "-").startswith(mod["Name"]): -+ if mod["Name"] in sysfs_mods: - mod["Found"] = True -+ except: -+ pass - - # check if we have at least one loaded module - if True not in [mod["Found"] for mod in mods] and b_flag is not None: --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-06-eal-linux-support-built-in-kernel-modules.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-06-eal-linux-support-built-in-kernel-modules.patch deleted file mode 100644 index 1790f37..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-06-eal-linux-support-built-in-kernel-modules.patch +++ /dev/null @@ -1,89 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 6e7caa1ad9d597fed0a49468af25ae6e68b8c443 Mon Sep 17 00:00:00 2001 -From: Kamil Rytarowski -Date: Thu, 28 Jan 2016 14:13:54 +0100 -Subject: [PATCH] eal/linux: support built-in kernel modules - -Currently rte_eal_check_module() detects Linux kernel modules via reading -/proc/modules. Built-in ones aren't listed there and therefore they are not -being found. - -Add support for checking built-in modules with parsing the sysfs files - -This commit obsoletes the /proc/modules parsing approach. - -Signed-off-by: Kamil Rytarowski -Acked-by: David Marchand -Acked-by: Yuanhan Liu ---- - lib/librte_eal/linuxapp/eal/eal.c | 35 +++++++++++++++++++++-------------- - 1 file changed, 21 insertions(+), 14 deletions(-) - -diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c -index 635ec36..4d3e0de 100644 ---- a/lib/librte_eal/linuxapp/eal/eal.c -+++ b/lib/librte_eal/linuxapp/eal/eal.c -@@ -49,6 +49,7 @@ - #include - #include - #include -+#include - #if defined(RTE_ARCH_X86_64) || defined(RTE_ARCH_I686) - #include - #endif -@@ -901,27 +902,33 @@ int rte_eal_has_hugepages(void) - int - rte_eal_check_module(const char *module_name) - { -- char mod_name[30]; /* Any module names can be longer than 30 bytes? */ -- int ret = 0; -+ char sysfs_mod_name[PATH_MAX]; -+ struct stat st; - int n; - - if (NULL == module_name) - return -1; - -- FILE *fd = fopen("/proc/modules", "r"); -- if (NULL == fd) { -- RTE_LOG(ERR, EAL, "Open /proc/modules failed!" -- " error %i (%s)\n", errno, strerror(errno)); -+ /* Check if there is sysfs mounted */ -+ if (stat("/sys/module", &st) != 0) { -+ RTE_LOG(DEBUG, EAL, "sysfs is not mounted! error %i (%s)\n", -+ errno, strerror(errno)); - return -1; - } -- while (!feof(fd)) { -- n = fscanf(fd, "%29s %*[^\n]", mod_name); -- if ((n == 1) && !strcmp(mod_name, module_name)) { -- ret = 1; -- break; -- } -+ -+ /* A module might be built-in, therefore try sysfs */ -+ n = snprintf(sysfs_mod_name, PATH_MAX, "/sys/module/%s", module_name); -+ if (n < 0 || n > PATH_MAX) { -+ RTE_LOG(DEBUG, EAL, "Could not format module path\n"); -+ return -1; - } -- fclose(fd); - -- return ret; -+ if (stat(sysfs_mod_name, &st) != 0) { -+ RTE_LOG(DEBUG, EAL, "Module %s not found! error %i (%s)\n", -+ sysfs_mod_name, errno, strerror(errno)); -+ return 0; -+ } -+ -+ /* Module has been found */ -+ return 1; - } --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-07-mempool-fix-leak-when-creation-fails.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-07-mempool-fix-leak-when-creation-fails.patch deleted file mode 100644 index 6d4230b..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-07-mempool-fix-leak-when-creation-fails.patch +++ /dev/null @@ -1,95 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 86f36ff9578b5f3d697c8fcf6072dcb70e2b246f Mon Sep 17 00:00:00 2001 -From: Olivier Matz -Date: Tue, 16 Feb 2016 15:40:10 +0100 -Subject: [PATCH] mempool: fix leak when creation fails - -Since commits ff909fe21f and 4e32101f9b, it is now possible to free -memzones and rings. - -The rte_mempool_create() should be modified to take advantage of this -and not leak memory when an allocation fails. - -Signed-off-by: Olivier Matz ---- - lib/librte_mempool/rte_mempool.c | 28 +++++++++++++--------------- - 1 file changed, 13 insertions(+), 15 deletions(-) - -diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c -index aff5f6d..f8781e1 100644 ---- a/lib/librte_mempool/rte_mempool.c -+++ b/lib/librte_mempool/rte_mempool.c -@@ -438,8 +438,8 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, - char rg_name[RTE_RING_NAMESIZE]; - struct rte_mempool_list *mempool_list; - struct rte_mempool *mp = NULL; -- struct rte_tailq_entry *te; -- struct rte_ring *r; -+ struct rte_tailq_entry *te = NULL; -+ struct rte_ring *r = NULL; - const struct rte_memzone *mz; - size_t mempool_size; - int mz_flags = RTE_MEMZONE_1GB|RTE_MEMZONE_SIZE_HINT_ONLY; -@@ -511,7 +511,7 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, - snprintf(rg_name, sizeof(rg_name), RTE_MEMPOOL_MZ_FORMAT, name); - r = rte_ring_create(rg_name, rte_align32pow2(n+1), socket_id, rg_flags); - if (r == NULL) -- goto exit; -+ goto exit_unlock; - - /* - * reserve a memory zone for this mempool: private data is -@@ -536,7 +536,7 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, - te = rte_zmalloc("MEMPOOL_TAILQ_ENTRY", sizeof(*te), 0); - if (te == NULL) { - RTE_LOG(ERR, MEMPOOL, "Cannot allocate tailq entry!\n"); -- goto exit; -+ goto exit_unlock; - } - - /* -@@ -561,15 +561,8 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, - snprintf(mz_name, sizeof(mz_name), RTE_MEMPOOL_MZ_FORMAT, name); - - mz = rte_memzone_reserve(mz_name, mempool_size, socket_id, mz_flags); -- -- /* -- * no more memory: in this case we loose previously reserved -- * space for the ring as we cannot free it -- */ -- if (mz == NULL) { -- rte_free(te); -- goto exit; -- } -+ if (mz == NULL) -+ goto exit_unlock; - - if (rte_eal_has_hugepages()) { - startaddr = (void*)mz->addr; -@@ -633,11 +626,16 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, - rte_rwlock_write_lock(RTE_EAL_TAILQ_RWLOCK); - TAILQ_INSERT_TAIL(mempool_list, te, next); - rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK); -- --exit: - rte_rwlock_write_unlock(RTE_EAL_MEMPOOL_RWLOCK); - - return mp; -+ -+exit_unlock: -+ rte_rwlock_write_unlock(RTE_EAL_MEMPOOL_RWLOCK); -+ rte_ring_free(r); -+ rte_free(te); -+ -+ return NULL; - } - - /* Return the number of entries in the mempool */ --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-08-vhost-fix-leak-of-fds-and-mmaps.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-08-vhost-fix-leak-of-fds-and-mmaps.patch deleted file mode 100644 index d3e06f5..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-08-vhost-fix-leak-of-fds-and-mmaps.patch +++ /dev/null @@ -1,154 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From ca67ed289a76f38d6c4a4021985a36eaf1d77e28 Mon Sep 17 00:00:00 2001 -From: Rich Lane -Date: Wed, 10 Feb 2016 10:40:55 -0800 -Subject: [PATCH] vhost: fix leak of fds and mmaps - -The common vhost code only supported a single mmap per device. vhost-user -worked around this by saving the address/length/fd of each mmap after the end -of the rte_virtio_memory struct. This only works if the vhost-user code frees -dev->mem, since the common code is unaware of the extra info. The -VHOST_USER_RESET_OWNER message is one situation where the common code frees -dev->mem and leaks the fds and mappings. This happens every time I shut down a -VM. - -The new code calls back into the implementation (vhost-user or vhost-cuse) to -clean up these resources. - -The vhost-cuse changes are only compile tested. - -Signed-off-by: Rich Lane -Acked-by: Yuanhan Liu ---- - lib/librte_vhost/vhost-net.h | 6 ++++++ - lib/librte_vhost/vhost_cuse/virtio-net-cdev.c | 12 ++++++++++++ - lib/librte_vhost/vhost_user/vhost-net-user.c | 1 - - lib/librte_vhost/vhost_user/virtio-net-user.c | 25 ++++++++++--------------- - lib/librte_vhost/vhost_user/virtio-net-user.h | 1 - - lib/librte_vhost/virtio-net.c | 8 +------- - 6 files changed, 29 insertions(+), 24 deletions(-) - -Index: dpdk/lib/librte_vhost/vhost-net.h -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost-net.h -+++ dpdk/lib/librte_vhost/vhost-net.h -@@ -115,4 +115,10 @@ struct vhost_net_device_ops { - - - struct vhost_net_device_ops const *get_virtio_net_callbacks(void); -+ -+/* -+ * Backend-specific cleanup. Defined by vhost-cuse and vhost-user. -+ */ -+void vhost_backend_cleanup(struct virtio_net *dev); -+ - #endif /* _VHOST_NET_CDEV_H_ */ -Index: dpdk/lib/librte_vhost/vhost_cuse/virtio-net-cdev.c -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_cuse/virtio-net-cdev.c -+++ dpdk/lib/librte_vhost/vhost_cuse/virtio-net-cdev.c -@@ -421,3 +421,15 @@ int cuse_set_backend(struct vhost_device - - return ops->set_backend(ctx, file); - } -+ -+void -+vhost_backend_cleanup(struct virtio_net *dev) -+{ -+ /* Unmap QEMU memory file if mapped. */ -+ if (dev->mem) { -+ munmap((void *)(uintptr_t)dev->mem->mapped_address, -+ (size_t)dev->mem->mapped_size); -+ free(dev->mem); -+ dev->mem = NULL; -+ } -+} -Index: dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_user/vhost-net-user.c -+++ dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c -@@ -347,7 +347,6 @@ vserver_message_handler(int connfd, void - close(connfd); - *remove = 1; - free(cfd_ctx); -- user_destroy_device(ctx); - ops->destroy_device(ctx); - - return; -Index: dpdk/lib/librte_vhost/vhost_user/virtio-net-user.c -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_user/virtio-net-user.c -+++ dpdk/lib/librte_vhost/vhost_user/virtio-net-user.c -@@ -88,6 +88,16 @@ free_mem_region(struct virtio_net *dev) - } - } - -+void -+vhost_backend_cleanup(struct virtio_net *dev) -+{ -+ if (dev->mem) { -+ free_mem_region(dev); -+ free(dev->mem); -+ dev->mem = NULL; -+ } -+} -+ - int - user_set_mem_table(struct vhost_device_ctx ctx, struct VhostUserMsg *pmsg) - { -@@ -339,21 +349,6 @@ user_set_vring_enable(struct vhost_devic - } - - void --user_destroy_device(struct vhost_device_ctx ctx) --{ -- struct virtio_net *dev = get_device(ctx); -- -- if (dev && (dev->flags & VIRTIO_DEV_RUNNING)) -- notify_ops->destroy_device(dev); -- -- if (dev && dev->mem) { -- free_mem_region(dev); -- free(dev->mem); -- dev->mem = NULL; -- } --} -- --void - user_set_protocol_features(struct vhost_device_ctx ctx, - uint64_t protocol_features) - { -Index: dpdk/lib/librte_vhost/vhost_user/virtio-net-user.h -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_user/virtio-net-user.h -+++ dpdk/lib/librte_vhost/vhost_user/virtio-net-user.h -@@ -55,5 +55,4 @@ int user_get_vring_base(struct vhost_dev - int user_set_vring_enable(struct vhost_device_ctx ctx, - struct vhost_vring_state *state); - --void user_destroy_device(struct vhost_device_ctx); - #endif -Index: dpdk/lib/librte_vhost/virtio-net.c -=================================================================== ---- dpdk.orig/lib/librte_vhost/virtio-net.c -+++ dpdk/lib/librte_vhost/virtio-net.c -@@ -199,13 +199,7 @@ cleanup_device(struct virtio_net *dev, i - { - uint32_t i; - -- /* Unmap QEMU memory file if mapped. */ -- if (dev->mem) { -- munmap((void *)(uintptr_t)dev->mem->mapped_address, -- (size_t)dev->mem->mapped_size); -- free(dev->mem); -- dev->mem = NULL; -- } -+ vhost_backend_cleanup(dev); - - for (i = 0; i < dev->virt_qp_nb; i++) { - cleanup_vq(dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ], destroy); diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-09-port-fix-crash-for-ring-writer-nodrop.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-09-port-fix-crash-for-ring-writer-nodrop.patch deleted file mode 100644 index 2fc3870..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-09-port-fix-crash-for-ring-writer-nodrop.patch +++ /dev/null @@ -1,80 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From fa11a8a7251e14eca0a4190128732386f13551bd Mon Sep 17 00:00:00 2001 -From: Jasvinder Singh -Date: Wed, 2 Mar 2016 21:19:58 +0000 -Subject: [PATCH] port: fix crash for ring writer nodrop - -Error log: - [APP] Initializing PIPELINE0 ... - pipeline> [APP] Initializing PIPELINE1 ... - [PIPELINE1] Pass-through - [APP] Initializing PIPELINE2 ... - [PIPELINE2] Pass-through - Segmentation fault (core dumped) - -Fixes: 5f4cd47309d6 ("port: add ring writer nodrop") -Fixes: d58f69c54172 ("port: add ring multi reader or writer") - -Signed-off-by: Jasvinder Singh ---- - lib/librte_port/rte_port_ring.c | 16 ++++++++++++---- - 1 file changed, 12 insertions(+), 4 deletions(-) - -diff --git a/lib/librte_port/rte_port_ring.c b/lib/librte_port/rte_port_ring.c -index 755dfc1..b847fea 100644 ---- a/lib/librte_port/rte_port_ring.c -+++ b/lib/librte_port/rte_port_ring.c -@@ -520,16 +520,20 @@ send_burst_nodrop(struct rte_port_ring_writer_nodrop *p) - p->tx_buf_count); - - /* We sent all the packets in a first try */ -- if (nb_tx >= p->tx_buf_count) -+ if (nb_tx >= p->tx_buf_count) { -+ p->tx_buf_count = 0; - return; -+ } - - for (i = 0; i < p->n_retries; i++) { - nb_tx += rte_ring_sp_enqueue_burst(p->ring, - (void **) (p->tx_buf + nb_tx), p->tx_buf_count - nb_tx); - - /* We sent all the packets in more than one try */ -- if (nb_tx >= p->tx_buf_count) -+ if (nb_tx >= p->tx_buf_count) { -+ p->tx_buf_count = 0; - return; -+ } - } - - /* We didn't send the packets in maximum allowed attempts */ -@@ -549,16 +553,20 @@ send_burst_mp_nodrop(struct rte_port_ring_writer_nodrop *p) - p->tx_buf_count); - - /* We sent all the packets in a first try */ -- if (nb_tx >= p->tx_buf_count) -+ if (nb_tx >= p->tx_buf_count) { -+ p->tx_buf_count = 0; - return; -+ } - - for (i = 0; i < p->n_retries; i++) { - nb_tx += rte_ring_mp_enqueue_burst(p->ring, - (void **) (p->tx_buf + nb_tx), p->tx_buf_count - nb_tx); - - /* We sent all the packets in more than one try */ -- if (nb_tx >= p->tx_buf_count) -+ if (nb_tx >= p->tx_buf_count) { -+ p->tx_buf_count = 0; - return; -+ } - } - - /* We didn't send the packets in maximum allowed attempts */ --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-10-port-fix-crash-for-ethdev-writer-nodrop.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-10-port-fix-crash-for-ethdev-writer-nodrop.patch deleted file mode 100644 index 50f5c3f..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-10-port-fix-crash-for-ethdev-writer-nodrop.patch +++ /dev/null @@ -1,55 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 04f366906ab395c8047bebfc1ddea244dfcb40f5 Mon Sep 17 00:00:00 2001 -From: Jasvinder Singh -Date: Wed, 2 Mar 2016 21:19:29 +0000 -Subject: [PATCH] port: fix crash for ethdev writer nodrop - -Error log: - [APP] Initializing PIPELINE0 ... - pipeline> [APP] Initializing PIPELINE1 ... - [PIPELINE1] Pass-through - Segmentation fault (core dumped) - -Fixes: 304c8091e90a ("port: add ethdev writer nodrop") - -Signed-off-by: Jasvinder Singh -Acked-by: Cristian Dumitrescu ---- - lib/librte_port/rte_port_ethdev.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/lib/librte_port/rte_port_ethdev.c b/lib/librte_port/rte_port_ethdev.c -index 1f0c81c..1c34602 100644 ---- a/lib/librte_port/rte_port_ethdev.c -+++ b/lib/librte_port/rte_port_ethdev.c -@@ -390,16 +390,20 @@ send_burst_nodrop(struct rte_port_ethdev_writer_nodrop *p) - p->tx_buf_count); - - /* We sent all the packets in a first try */ -- if (nb_tx >= p->tx_buf_count) -+ if (nb_tx >= p->tx_buf_count) { -+ p->tx_buf_count = 0; - return; -+ } - - for (i = 0; i < p->n_retries; i++) { - nb_tx += rte_eth_tx_burst(p->port_id, p->queue_id, - p->tx_buf + nb_tx, p->tx_buf_count - nb_tx); - - /* We sent all the packets in more than one try */ -- if (nb_tx >= p->tx_buf_count) -+ if (nb_tx >= p->tx_buf_count) { -+ p->tx_buf_count = 0; - return; -+ } - } - - /* We didn't send the packets in maximum allowed attempts */ --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-11-i40e-fix-overflow.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-11-i40e-fix-overflow.patch deleted file mode 100644 index 7c7b787..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-11-i40e-fix-overflow.patch +++ /dev/null @@ -1,45 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From c7a4ff80722e9237a4c504106d21ba5ca27d8df2 Mon Sep 17 00:00:00 2001 -From: Helin Zhang -Date: Sat, 12 Mar 2016 00:50:58 +0800 -Subject: [PATCH] i40e: fix overflow - -The array 'ptype_table' was defined in depth of 'UINT8_MAX' which -is 255, while the querying index could be from 0 to 255. The issue -can be fixed with expanding the array to one more element. - -Fixes: 9571ea028489 ("i40e: replace some offload flags with unified packet type") - -Signed-off-by: Helin Zhang -Acked-by: Wenzhuo Lu ---- - drivers/net/i40e/i40e_rxtx.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: dpdk/drivers/net/i40e/i40e_rxtx.c -=================================================================== ---- dpdk.orig/drivers/net/i40e/i40e_rxtx.c -+++ dpdk/drivers/net/i40e/i40e_rxtx.c -@@ -198,7 +198,7 @@ i40e_get_iee15888_flags(struct rte_mbuf - static inline uint32_t - i40e_rxd_pkt_type_mapping(uint8_t ptype) - { -- static const uint32_t ptype_table[UINT8_MAX] __rte_cache_aligned = { -+ static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = { - /* L2 types */ - /* [0] reserved */ - [1] = RTE_PTYPE_L2_ETHER, -@@ -724,7 +724,7 @@ i40e_rxd_pkt_type_mapping(uint8_t ptype) - /* All others reserved */ - }; - -- return ptype_table[ptype]; -+ return type_table[ptype]; - } - - #define I40E_RX_DESC_EXT_STATUS_FLEXBH_MASK 0x03 diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-12-i40e-fix-inverted-check-for-no-refcount.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-12-i40e-fix-inverted-check-for-no-refcount.patch deleted file mode 100644 index b3fa4bc..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-12-i40e-fix-inverted-check-for-no-refcount.patch +++ /dev/null @@ -1,36 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 097e920c32bf19cf918cc071525f33b0abdeebaf Mon Sep 17 00:00:00 2001 -From: Rich Lane -Date: Wed, 23 Dec 2015 00:08:00 -0800 -Subject: [PATCH] i40e: fix inverted check for no refcount - -The no-refcount path was being taken without the application opting -in to it. - -Fixes: 4861cde46116 ("i40e: new poll mode driver") - -Reported-by: Mike Stolarchuk -Signed-off-by: Rich Lane -Acked-by: Helin Zhang ---- - drivers/net/i40e/i40e_rxtx.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: dpdk/drivers/net/i40e/i40e_rxtx.c -=================================================================== ---- dpdk.orig/drivers/net/i40e/i40e_rxtx.c -+++ dpdk/drivers/net/i40e/i40e_rxtx.c -@@ -1762,7 +1762,7 @@ i40e_tx_free_bufs(struct i40e_tx_queue * - for (i = 0; i < txq->tx_rs_thresh; i++) - rte_prefetch0((txep + i)->mbuf); - -- if (!(txq->txq_flags & (uint32_t)ETH_TXQ_FLAGS_NOREFCOUNT)) { -+ if (txq->txq_flags & (uint32_t)ETH_TXQ_FLAGS_NOREFCOUNT) { - for (i = 0; i < txq->tx_rs_thresh; ++i, ++txep) { - rte_mempool_put(txep->mbuf->pool, txep->mbuf); - txep->mbuf = NULL; diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-13-i40e-fix-VLAN-filtering.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-13-i40e-fix-VLAN-filtering.patch deleted file mode 100644 index 858c81a..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-13-i40e-fix-VLAN-filtering.patch +++ /dev/null @@ -1,150 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 330aa319382aec9ea595f9ebcb9a3c44647ad66c Mon Sep 17 00:00:00 2001 -From: Julien Meunier -Date: Thu, 4 Feb 2016 12:02:16 +0100 -Subject: [PATCH] i40e: fix VLAN filtering - -VLAN filtering was always performed, even if hw_vlan_filter was -disabled. During device initialization, default filter -RTE_MACVLAN_PERFECT_MATCH was applied. In this situation, all incoming -VLAN frames were dropped by the card (increase of the register RUPP - Rx -Unsupported Protocol). - -In order to restore default behavior, if HW VLAN filtering is activated, -set a filter to match MAC and VLAN. If not, set a filter to only match -MAC. - -Fixes: 4861cde46116 ("i40e: new poll mode driver") -Fixes: 912b595146d6 ("i40e: mac vlan filter") - -Signed-off-by: Julien Meunier -Acked-by: Helin Zhang ---- - drivers/net/i40e/i40e_ethdev.c | 73 ++++++++++++++++++++++++++++++++++++++++-- - drivers/net/i40e/i40e_ethdev.h | 1 + - 2 files changed, 72 insertions(+), 2 deletions(-) - -Index: dpdk/drivers/net/i40e/i40e_ethdev.c -=================================================================== ---- dpdk.orig/drivers/net/i40e/i40e_ethdev.c -+++ dpdk/drivers/net/i40e/i40e_ethdev.c -@@ -2332,6 +2332,13 @@ i40e_vlan_offload_set(struct rte_eth_dev - struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); - struct i40e_vsi *vsi = pf->main_vsi; - -+ if (mask & ETH_VLAN_FILTER_MASK) { -+ if (dev->data->dev_conf.rxmode.hw_vlan_filter) -+ i40e_vsi_config_vlan_filter(vsi, TRUE); -+ else -+ i40e_vsi_config_vlan_filter(vsi, FALSE); -+ } -+ - if (mask & ETH_VLAN_STRIP_MASK) { - /* Enable or disable VLAN stripping */ - if (dev->data->dev_conf.rxmode.hw_vlan_strip) -@@ -2583,7 +2590,10 @@ i40e_macaddr_add(struct rte_eth_dev *dev - } - - (void)rte_memcpy(&mac_filter.mac_addr, mac_addr, ETHER_ADDR_LEN); -- mac_filter.filter_type = RTE_MACVLAN_PERFECT_MATCH; -+ if (dev->data->dev_conf.rxmode.hw_vlan_filter) -+ mac_filter.filter_type = RTE_MACVLAN_PERFECT_MATCH; -+ else -+ mac_filter.filter_type = RTE_MAC_PERFECT_MATCH; - - if (pool == 0) - vsi = pf->main_vsi; -@@ -4156,6 +4166,63 @@ fail_mem: - return NULL; - } - -+/* Configure vlan filter on or off */ -+int -+i40e_vsi_config_vlan_filter(struct i40e_vsi *vsi, bool on) -+{ -+ int i, num; -+ struct i40e_mac_filter *f; -+ struct i40e_mac_filter_info *mac_filter; -+ enum rte_mac_filter_type desired_filter; -+ int ret = I40E_SUCCESS; -+ -+ if (on) { -+ /* Filter to match MAC and VLAN */ -+ desired_filter = RTE_MACVLAN_PERFECT_MATCH; -+ } else { -+ /* Filter to match only MAC */ -+ desired_filter = RTE_MAC_PERFECT_MATCH; -+ } -+ -+ num = vsi->mac_num; -+ -+ mac_filter = rte_zmalloc("mac_filter_info_data", -+ num * sizeof(*mac_filter), 0); -+ if (mac_filter == NULL) { -+ PMD_DRV_LOG(ERR, "failed to allocate memory"); -+ return I40E_ERR_NO_MEMORY; -+ } -+ -+ i = 0; -+ -+ /* Remove all existing mac */ -+ TAILQ_FOREACH(f, &vsi->mac_list, next) { -+ mac_filter[i] = f->mac_info; -+ ret = i40e_vsi_delete_mac(vsi, &f->mac_info.mac_addr); -+ if (ret) { -+ PMD_DRV_LOG(ERR, "Update VSI failed to %s vlan filter", -+ on ? "enable" : "disable"); -+ goto DONE; -+ } -+ i++; -+ } -+ -+ /* Override with new filter */ -+ for (i = 0; i < num; i++) { -+ mac_filter[i].filter_type = desired_filter; -+ ret = i40e_vsi_add_mac(vsi, &mac_filter[i]); -+ if (ret) { -+ PMD_DRV_LOG(ERR, "Update VSI failed to %s vlan filter", -+ on ? "enable" : "disable"); -+ goto DONE; -+ } -+ } -+ -+DONE: -+ rte_free(mac_filter); -+ return ret; -+} -+ - /* Configure vlan stripping on or off */ - int - i40e_vsi_config_vlan_stripping(struct i40e_vsi *vsi, bool on) -@@ -4203,9 +4270,11 @@ i40e_dev_init_vlan(struct rte_eth_dev *d - { - struct rte_eth_dev_data *data = dev->data; - int ret; -+ int mask = 0; - - /* Apply vlan offload setting */ -- i40e_vlan_offload_set(dev, ETH_VLAN_STRIP_MASK); -+ mask = ETH_VLAN_STRIP_MASK | ETH_VLAN_FILTER_MASK; -+ i40e_vlan_offload_set(dev, mask); - - /* Apply double-vlan setting, not implemented yet */ - -Index: dpdk/drivers/net/i40e/i40e_ethdev.h -=================================================================== ---- dpdk.orig/drivers/net/i40e/i40e_ethdev.h -+++ dpdk/drivers/net/i40e/i40e_ethdev.h -@@ -551,6 +551,7 @@ void i40e_vsi_queues_unbind_intr(struct - int i40e_vsi_vlan_pvid_set(struct i40e_vsi *vsi, - struct i40e_vsi_vlan_pvid_info *info); - int i40e_vsi_config_vlan_stripping(struct i40e_vsi *vsi, bool on); -+int i40e_vsi_config_vlan_filter(struct i40e_vsi *vsi, bool on); - uint64_t i40e_config_hena(uint64_t flags); - uint64_t i40e_parse_hena(uint64_t flags); - enum i40e_status_code i40e_fdir_setup_tx_resources(struct i40e_pf *pf); diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-14-i40e-base-fix-missing-check-for-stopped-admin-queue.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-14-i40e-base-fix-missing-check-for-stopped-admin-queue.patch deleted file mode 100644 index ff156b1..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-14-i40e-base-fix-missing-check-for-stopped-admin-queue.patch +++ /dev/null @@ -1,55 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 9f44dd3d8ad447c7f797a9564d30a15e5ab7f72b Mon Sep 17 00:00:00 2001 -From: Helin Zhang -Date: Tue, 8 Mar 2016 16:14:14 +0800 -Subject: [PATCH] i40e/base: fix missing check for stopped admin queue - -It's possible that while waiting for the spinlock, another -entity (that owns the spinlock) has shut down the admin queue. -If it then attempts to use the queue, it will panic. -It adds a check for this condition on the receive side. This -matches an existing check on the send queue side. - -Fixes: 8db9e2a1b232 ("i40e: base driver") - -Signed-off-by: Helin Zhang -Acked-by: Jingjing Wu -Acked-by: Remy Horton ---- - drivers/net/i40e/base/i40e_adminq.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/drivers/net/i40e/base/i40e_adminq.c b/drivers/net/i40e/base/i40e_adminq.c -index 998582c..e1a162e 100644 ---- a/drivers/net/i40e/base/i40e_adminq.c -+++ b/drivers/net/i40e/base/i40e_adminq.c -@@ -1035,6 +1035,13 @@ enum i40e_status_code i40e_clean_arq_element(struct i40e_hw *hw, - /* take the lock before we start messing with the ring */ - i40e_acquire_spinlock(&hw->aq.arq_spinlock); - -+ if (hw->aq.arq.count == 0) { -+ i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, -+ "AQRX: Admin queue not initialized.\n"); -+ ret_code = I40E_ERR_QUEUE_EMPTY; -+ goto clean_arq_element_err; -+ } -+ - /* set next_to_use to head */ - #ifdef PF_DRIVER - #ifdef INTEGRATED_VF -@@ -1113,6 +1120,7 @@ clean_arq_element_out: - /* Set pending if needed, unlock and return */ - if (pending != NULL) - *pending = (ntc > ntu ? hw->aq.arq.count : 0) + (ntu - ntc); -+clean_arq_element_err: - i40e_release_spinlock(&hw->aq.arq_spinlock); - - #ifdef PF_DRIVER --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-15-i40e-base-fix-driver-load-failure.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-15-i40e-base-fix-driver-load-failure.patch deleted file mode 100644 index cc14f30..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-15-i40e-base-fix-driver-load-failure.patch +++ /dev/null @@ -1,44 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 8a8807369ffafef90c410279b4b2645d2d7a7483 Mon Sep 17 00:00:00 2001 -From: Helin Zhang -Date: Tue, 8 Mar 2016 16:14:28 +0800 -Subject: [PATCH] i40e/base: fix driver load failure - -Fix the driver load failure with linking with some -PHY types, as the amount of time it takes for the -GLGEN_RSTAT_DEVSTATE to be set increases greatly on those PHY -types, which can lead to a timeout. - -Fixes: 9aeefed05538 ("i40e/base: support ESS") - -Signed-off-by: Helin Zhang -Acked-by: Jingjing Wu -Acked-by: Remy Horton ---- - drivers/net/i40e/base/i40e_common.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -Index: dpdk/drivers/net/i40e/base/i40e_common.c -=================================================================== ---- dpdk.orig/drivers/net/i40e/base/i40e_common.c -+++ dpdk/drivers/net/i40e/base/i40e_common.c -@@ -1303,11 +1303,11 @@ enum i40e_status_code i40e_pf_reset(stru - grst_del = (rd32(hw, I40E_GLGEN_RSTCTL) & - I40E_GLGEN_RSTCTL_GRSTDEL_MASK) >> - I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT; --#ifdef I40E_ESS_SUPPORT -+ - /* It can take upto 15 secs for GRST steady state */ - grst_del = grst_del * 20; /* bump it to 16 secs max to be safe */ --#endif -- for (cnt = 0; cnt < grst_del + 10; cnt++) { -+ -+ for (cnt = 0; cnt < grst_del; cnt++) { - reg = rd32(hw, I40E_GLGEN_RSTAT); - if (!(reg & I40E_GLGEN_RSTAT_DEVSTATE_MASK)) - break; diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-16-fm10k-fix-VLAN-flag-in-scattered-Rx.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-16-fm10k-fix-VLAN-flag-in-scattered-Rx.patch deleted file mode 100644 index bded0e6..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-16-fm10k-fix-VLAN-flag-in-scattered-Rx.patch +++ /dev/null @@ -1,38 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 7656a546c0609f3205558a5d48352c82607d38d3 Mon Sep 17 00:00:00 2001 -From: Xiao Wang -Date: Fri, 18 Dec 2015 11:09:18 +0800 -Subject: [PATCH] fm10k: fix VLAN flag in scattered Rx - -In fm10k_recv_scattered_pkts function, a packet is stored in a linked list, -offload flags such as PKT_RX_VLAN_PKT should be set in the first segment. - -Fixes: 6b59a3bc82b1 ("fm10k: fix VLAN in Rx mbuf") - -Signed-off-by: Wang Xiao W -Acked-by: Shaopeng He ---- - drivers/net/fm10k/fm10k_rxtx.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/fm10k/fm10k_rxtx.c b/drivers/net/fm10k/fm10k_rxtx.c -index e958865..de31cad 100644 ---- a/drivers/net/fm10k/fm10k_rxtx.c -+++ b/drivers/net/fm10k/fm10k_rxtx.c -@@ -305,7 +305,7 @@ fm10k_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, - * So, always PKT_RX_VLAN_PKT flag is set and vlan_tci - * is valid for each RX packet's mbuf. - */ -- mbuf->ol_flags |= PKT_RX_VLAN_PKT; -+ first_seg->ol_flags |= PKT_RX_VLAN_PKT; - first_seg->vlan_tci = desc.w.vlan; - - /* Prefetch data of first segment, if configured to do so. */ --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-17-pcap-fix-captured-frame-length.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-17-pcap-fix-captured-frame-length.patch deleted file mode 100644 index 14e2dd2..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-17-pcap-fix-captured-frame-length.patch +++ /dev/null @@ -1,64 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From c6fb0e55585206a89f6db396de860e6e844cad06 Mon Sep 17 00:00:00 2001 -From: Dror Birkman -Date: Thu, 28 Jan 2016 13:09:50 +0200 -Subject: [PATCH] pcap: fix captured frame length -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The actual captured length is header.caplen, whereas header.len is -the original length on the wire. - -Fixes: 4c173302c307 ("pcap: add new driver") - -Signed-off-by: Dror Birkman -Acked-by: Nicolás Pernas Maradei ---- - drivers/net/pcap/rte_eth_pcap.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c -index f9230eb..1d121f8 100644 ---- a/drivers/net/pcap/rte_eth_pcap.c -+++ b/drivers/net/pcap/rte_eth_pcap.c -@@ -220,25 +220,25 @@ eth_pcap_rx(void *queue, - buf_size = (uint16_t)(rte_pktmbuf_data_room_size(pcap_q->mb_pool) - - RTE_PKTMBUF_HEADROOM); - -- if (header.len <= buf_size) { -+ if (header.caplen <= buf_size) { - /* pcap packet will fit in the mbuf, go ahead and copy */ - rte_memcpy(rte_pktmbuf_mtod(mbuf, void *), packet, -- header.len); -- mbuf->data_len = (uint16_t)header.len; -+ header.caplen); -+ mbuf->data_len = (uint16_t)header.caplen; - } else { - /* Try read jumbo frame into multi mbufs. */ - if (unlikely(eth_pcap_rx_jumbo(pcap_q->mb_pool, - mbuf, - packet, -- header.len) == -1)) -+ header.caplen) == -1)) - break; - } - -- mbuf->pkt_len = (uint16_t)header.len; -+ mbuf->pkt_len = (uint16_t)header.caplen; - mbuf->port = pcap_q->in_port; - bufs[num_rx] = mbuf; - num_rx++; -- rx_bytes += header.len; -+ rx_bytes += header.caplen; - } - pcap_q->rx_pkts += num_rx; - pcap_q->rx_bytes += rx_bytes; --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-18-bonding-fix-detach-of-bonded-device.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-18-bonding-fix-detach-of-bonded-device.patch deleted file mode 100644 index 048f8b6..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-18-bonding-fix-detach-of-bonded-device.patch +++ /dev/null @@ -1,56 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 6e02723754fb2b341701ac438486b2dfea98b523 Mon Sep 17 00:00:00 2001 -From: Bernard Iremonger -Date: Wed, 10 Feb 2016 10:13:44 +0000 -Subject: [PATCH] bonding: fix detach of bonded device - -Check that the bonded device has no slaves before detaching it. - -Fixes: 8d30fe7fa737 ("bonding: support port hotplug") - -Signed-off-by: Bernard Iremonger -Acked-by: Declan Doherty ---- - drivers/net/bonding/rte_eth_bond_api.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c -index 8a000c8..484a6f3 100644 ---- a/drivers/net/bonding/rte_eth_bond_api.c -+++ b/drivers/net/bonding/rte_eth_bond_api.c -@@ -1,7 +1,7 @@ - /*- - * BSD LICENSE - * -- * Copyright(c) 2010-2015 Intel Corporation. All rights reserved. -+ * Copyright(c) 2010-2016 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without -@@ -277,6 +277,7 @@ int - rte_eth_bond_free(const char *name) - { - struct rte_eth_dev *eth_dev = NULL; -+ struct bond_dev_private *internals; - - /* now free all data allocation - for eth_dev structure, - * dummy pci driver and internal (private) data -@@ -287,6 +288,10 @@ rte_eth_bond_free(const char *name) - if (eth_dev == NULL) - return -ENODEV; - -+ internals = eth_dev->data->dev_private; -+ if (internals->slave_count != 0) -+ return -EBUSY; -+ - if (eth_dev->data->dev_started == 1) { - bond_ethdev_stop(eth_dev); - bond_ethdev_close(eth_dev); --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-19-bonding-fix-detach-of-slave-devices.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-19-bonding-fix-detach-of-slave-devices.patch deleted file mode 100644 index b18720e..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-19-bonding-fix-detach-of-slave-devices.patch +++ /dev/null @@ -1,150 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From df3e8ad73f4c92b4eb8f49ff33271d4a09e6a04a Mon Sep 17 00:00:00 2001 -From: Bernard Iremonger -Date: Wed, 10 Feb 2016 10:13:45 +0000 -Subject: [PATCH] bonding: fix detach of slave devices - -Ensure that a bonded slave device is not detached, -until it is removed from the bonded device. - -Fixes: 2efb58cbab6e ("bond: new link bonding library") -Fixes: a45b288ef21a ("bond: support link status polling") -Fixes: 494adb7f63f2 ("ethdev: add device fields from PCI layer") -Fixes: b1fb53a39d88 ("ethdev: remove some PCI specific handling") - -Signed-off-by: Bernard Iremonger -Acked-by: Declan Doherty ---- - drivers/net/bonding/rte_eth_bond_api.c | 33 +++++++++++---------------------- - lib/librte_ether/rte_ethdev.c | 8 ++++++-- - lib/librte_ether/rte_ethdev.h | 2 ++ - 3 files changed, 19 insertions(+), 24 deletions(-) - -Index: dpdk/drivers/net/bonding/rte_eth_bond_api.c -=================================================================== ---- dpdk.orig/drivers/net/bonding/rte_eth_bond_api.c -+++ dpdk/drivers/net/bonding/rte_eth_bond_api.c -@@ -314,38 +314,23 @@ __eth_bond_slave_add_lock_free(uint8_t b - { - struct rte_eth_dev *bonded_eth_dev, *slave_eth_dev; - struct bond_dev_private *internals; -- struct bond_dev_private *temp_internals; - struct rte_eth_link link_props; - struct rte_eth_dev_info dev_info; - -- int i, j; -- - if (valid_slave_port_id(slave_port_id) != 0) - return -1; - - bonded_eth_dev = &rte_eth_devices[bonded_port_id]; - internals = bonded_eth_dev->data->dev_private; - -- /* Verify that new slave device is not already a slave of another -- * bonded device */ -- for (i = rte_eth_dev_count()-1; i >= 0; i--) { -- if (check_for_bonded_ethdev(&rte_eth_devices[i]) == 0) { -- temp_internals = rte_eth_devices[i].data->dev_private; -- -- for (j = 0; j < temp_internals->slave_count; j++) { -- /* Device already a slave of a bonded device */ -- if (temp_internals->slaves[j].port_id == slave_port_id) { -- RTE_BOND_LOG(ERR, "Slave port %d is already a slave", -- slave_port_id); -- return -1; -- } -- } -- } -- } -- - slave_eth_dev = &rte_eth_devices[slave_port_id]; -+ if (slave_eth_dev->data->dev_flags & RTE_ETH_DEV_BONDED_SLAVE) { -+ RTE_BOND_LOG(ERR, "Slave device is already a slave of a bonded device"); -+ return -1; -+ } - - /* Add slave details to bonded device */ -+ slave_eth_dev->data->dev_flags |= RTE_ETH_DEV_BONDED_SLAVE; - slave_add(internals, slave_eth_dev); - - rte_eth_dev_info_get(slave_port_id, &dev_info); -@@ -385,6 +370,7 @@ __eth_bond_slave_add_lock_free(uint8_t b - if (internals->link_props_set) { - if (link_properties_valid(&(bonded_eth_dev->data->dev_link), - &(slave_eth_dev->data->dev_link))) { -+ slave_eth_dev->data->dev_flags &= (~RTE_ETH_DEV_BONDED_SLAVE); - RTE_BOND_LOG(ERR, - "Slave port %d link speed/duplex not supported", - slave_port_id); -@@ -416,6 +402,7 @@ __eth_bond_slave_add_lock_free(uint8_t b - - if (bonded_eth_dev->data->dev_started) { - if (slave_configure(bonded_eth_dev, slave_eth_dev) != 0) { -+ slave_eth_dev->data->dev_flags &= (~RTE_ETH_DEV_BONDED_SLAVE); - RTE_BOND_LOG(ERR, "rte_bond_slaves_configure: port=%d", - slave_port_id); - return -1; -@@ -468,7 +455,7 @@ __eth_bond_slave_remove_lock_free(uint8_ - { - struct rte_eth_dev *bonded_eth_dev; - struct bond_dev_private *internals; -- -+ struct rte_eth_dev *slave_eth_dev; - int i, slave_idx; - - if (valid_slave_port_id(slave_port_id) != 0) -@@ -508,7 +495,9 @@ __eth_bond_slave_remove_lock_free(uint8_ - mac_address_set(&rte_eth_devices[slave_port_id], - &(internals->slaves[slave_idx].persisted_mac_addr)); - -- slave_remove(internals, &rte_eth_devices[slave_port_id]); -+ slave_eth_dev = &rte_eth_devices[slave_port_id]; -+ slave_remove(internals, slave_eth_dev); -+ slave_eth_dev->data->dev_flags &= (~RTE_ETH_DEV_BONDED_SLAVE); - - /* first slave in the active list will be the primary by default, - * otherwise use first device in list */ -Index: dpdk/lib/librte_ether/rte_ethdev.c -=================================================================== ---- dpdk.orig/lib/librte_ether/rte_ethdev.c -+++ dpdk/lib/librte_ether/rte_ethdev.c -@@ -1,7 +1,7 @@ - /*- - * BSD LICENSE - * -- * Copyright(c) 2010-2015 Intel Corporation. All rights reserved. -+ * Copyright(c) 2010-2016 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without -@@ -498,7 +498,11 @@ rte_eth_dev_is_detachable(uint8_t port_i - return -ENOTSUP; - } - dev_flags = rte_eth_devices[port_id].data->dev_flags; -- return !(dev_flags & RTE_ETH_DEV_DETACHABLE); -+ if ((dev_flags & RTE_ETH_DEV_DETACHABLE) && -+ (!(dev_flags & RTE_ETH_DEV_BONDED_SLAVE))) -+ return 0; -+ else -+ return 1; - } - - /* attach the new physical device, then store port_id of the device */ -Index: dpdk/lib/librte_ether/rte_ethdev.h -=================================================================== ---- dpdk.orig/lib/librte_ether/rte_ethdev.h -+++ dpdk/lib/librte_ether/rte_ethdev.h -@@ -1616,6 +1616,8 @@ struct rte_eth_dev_data { - #define RTE_ETH_DEV_DETACHABLE 0x0001 - /** Device supports link state interrupt */ - #define RTE_ETH_DEV_INTR_LSC 0x0002 -+/** Device is a bonded slave */ -+#define RTE_ETH_DEV_BONDED_SLAVE 0x0004 - - /** - * @internal diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-20-bonding-copy-entire-config-structure-in-mode-4.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-20-bonding-copy-entire-config-structure-in-mode-4.patch deleted file mode 100644 index 9a58ee3..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-20-bonding-copy-entire-config-structure-in-mode-4.patch +++ /dev/null @@ -1,40 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 786c990a11e6e6592dfdee02840877070aa3a79a Mon Sep 17 00:00:00 2001 -From: Eric Kinzie -Date: Tue, 1 Mar 2016 09:31:59 -0800 -Subject: [PATCH] bonding: copy entire config structure in mode 4 - -Copy all needed fields from the mode8023ad_private structure in -bond_mode_8023ad_conf_get(). This help ensure that a subsequent call -to rte_eth_bond_8023ad_setup() is not passed uninitialized data that -would result in either incorrect behavior or a failed sanity check. - -Fixes: 46fb43683679 ("bond: add mode 4") - -Signed-off-by: Eric Kinzie -Signed-off-by: Stephen Hemminger -Acked-by: Declan Doherty ---- - drivers/net/bonding/rte_eth_bond_8023ad.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c -index b3b30f6..1b7e93a 100644 ---- a/drivers/net/bonding/rte_eth_bond_8023ad.c -+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c -@@ -1019,6 +1019,7 @@ bond_mode_8023ad_conf_get(struct rte_eth_dev *dev, - conf->aggregate_wait_timeout_ms = mode4->aggregate_wait_timeout / ms_ticks; - conf->tx_period_ms = mode4->tx_period_timeout / ms_ticks; - conf->update_timeout_ms = mode4->update_timeout_us / 1000; -+ conf->rx_marker_period_ms = mode4->rx_marker_timeout / ms_ticks; - } - - void --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-21-bonding-do-not-ignore-multicast-in-mode-4.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-21-bonding-do-not-ignore-multicast-in-mode-4.patch deleted file mode 100644 index 566c3ab..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-21-bonding-do-not-ignore-multicast-in-mode-4.patch +++ /dev/null @@ -1,59 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 6698820b5f6d955b6af2b916e1074db236d4f5a2 Mon Sep 17 00:00:00 2001 -From: Eric Kinzie -Date: Tue, 1 Mar 2016 09:32:00 -0800 -Subject: [PATCH] bonding: do not ignore multicast in mode 4 - -The bonding PMD in mode 4 puts all enslaved interfaces into promiscuous -mode in order to receive LACPDUs and must filter unwanted packets -after the traffic has been "collected". Allow broadcast and multicast -through so that ARP and IPv6 neighbor discovery continue to work. - -Fixes: 46fb43683679 ("bond: add mode 4") - -Signed-off-by: Eric Kinzie -Signed-off-by: Stephen Hemminger -Acked-by: Declan Doherty ---- - app/test/test_link_bonding_mode4.c | 7 +++++-- - drivers/net/bonding/rte_eth_bond_pmd.c | 1 + - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/app/test/test_link_bonding_mode4.c b/app/test/test_link_bonding_mode4.c -index 713368d..31640cd 100644 ---- a/app/test/test_link_bonding_mode4.c -+++ b/app/test/test_link_bonding_mode4.c -@@ -747,8 +747,11 @@ test_mode4_rx(void) - rte_eth_macaddr_get(test_params.bonded_port_id, &bonded_mac); - ether_addr_copy(&bonded_mac, &dst_mac); - -- /* Assert that dst address is not bonding address */ -- dst_mac.addr_bytes[0]++; -+ /* Assert that dst address is not bonding address. Do not set the -+ * least significant bit of the zero byte as this would create a -+ * multicast address. -+ */ -+ dst_mac.addr_bytes[0] += 2; - - /* First try with promiscuous mode enabled. - * Add 2 packets to each slave. First with bonding MAC address, second with -diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c -index b63c886..011150a 100644 ---- a/drivers/net/bonding/rte_eth_bond_pmd.c -+++ b/drivers/net/bonding/rte_eth_bond_pmd.c -@@ -171,6 +171,7 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, - * mode and packet address does not match. */ - if (unlikely(hdr->ether_type == ether_type_slow_be || - !collecting || (!promisc && -+ !is_multicast_ether_addr(&hdr->d_addr) && - !is_same_ether_addr(&bond_mac, &hdr->d_addr)))) { - - if (hdr->ether_type == ether_type_slow_be) { --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-22-bonding-fix-active-slaves-with-no-primary.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-22-bonding-fix-active-slaves-with-no-primary.patch deleted file mode 100644 index 5fbcb68..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-22-bonding-fix-active-slaves-with-no-primary.patch +++ /dev/null @@ -1,49 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 8997a10bfcad789d000debaac4cd85cd3db57997 Mon Sep 17 00:00:00 2001 -From: Eric Kinzie -Date: Tue, 1 Mar 2016 09:32:01 -0800 -Subject: [PATCH] bonding: fix active slaves with no primary - -If the link state of a slave is "up" when added, it is added to the list -of active slaves but, even if it is the only slave, is not selected as -the primary interface. Generally, handling of link state interrupts -selects an interface to be primary, but only if the active count is zero. -This change avoids the situation where there are active slaves but -no primary. - -Fixes: 2efb58cbab6e ("bond: new link bonding library") - -Signed-off-by: Eric Kinzie -Signed-off-by: Stephen Hemminger -Acked-by: Declan Doherty ---- - drivers/net/bonding/rte_eth_bond_api.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c -index a0995ec..5292ae1 100644 ---- a/drivers/net/bonding/rte_eth_bond_api.c -+++ b/drivers/net/bonding/rte_eth_bond_api.c -@@ -419,8 +419,13 @@ __eth_bond_slave_add_lock_free(uint8_t bonded_port_id, uint8_t slave_port_id) - if (bonded_eth_dev->data->dev_started) { - rte_eth_link_get_nowait(slave_port_id, &link_props); - -- if (link_props.link_status == 1) -+ if (link_props.link_status == 1) { -+ if (internals->active_slave_count == 0 && -+ !internals->user_defined_primary_port) -+ bond_ethdev_primary_set(internals, -+ slave_port_id); - activate_slave(bonded_eth_dev, slave_port_id); -+ } - } - return 0; - --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-23-bonding-do-not-activate-slave-twice.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-23-bonding-do-not-activate-slave-twice.patch deleted file mode 100644 index d03bc06..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-23-bonding-do-not-activate-slave-twice.patch +++ /dev/null @@ -1,47 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 7a7122edf1c8d63e516d1b2c2eff6fa9b54e0f82 Mon Sep 17 00:00:00 2001 -From: Eric Kinzie -Date: Tue, 1 Mar 2016 09:32:02 -0800 -Subject: [PATCH] bonding: do not activate slave twice - -The current code for detecting link during slave addition can cause a -slave interface to be activated twice -- once during slave_configure() -and again at the end of __eth_bond_slave_add_lock_free(). This will -either cause the active slave count to be incorrect or will cause the -802.3ad activation function to panic. Ensure that the interface is not -activated more than once. - -Fixes: 46fb43683679 ("bond: add mode 4") - -Signed-off-by: Eric Kinzie -Signed-off-by: Stephen Hemminger -Acked-by: Declan Doherty ---- - drivers/net/bonding/rte_eth_bond_api.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c -index 5292ae1..c6c0ed8 100644 ---- a/drivers/net/bonding/rte_eth_bond_api.c -+++ b/drivers/net/bonding/rte_eth_bond_api.c -@@ -424,7 +424,11 @@ __eth_bond_slave_add_lock_free(uint8_t bonded_port_id, uint8_t slave_port_id) - !internals->user_defined_primary_port) - bond_ethdev_primary_set(internals, - slave_port_id); -- activate_slave(bonded_eth_dev, slave_port_id); -+ -+ if (find_slave_by_id(internals->active_slaves, -+ internals->active_slave_count, -+ slave_port_id) == internals->active_slave_count) -+ activate_slave(bonded_eth_dev, slave_port_id); - } - } - return 0; --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-24-bonding-fix-crash-when-no-slave-device.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-24-bonding-fix-crash-when-no-slave-device.patch deleted file mode 100644 index d8eab24..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-24-bonding-fix-crash-when-no-slave-device.patch +++ /dev/null @@ -1,42 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-20 - -From 2186fff3675d4e774cecc8f918c05063e0367d28 Mon Sep 17 00:00:00 2001 -From: Bernard Iremonger -Date: Mon, 7 Mar 2016 11:40:40 +0000 -Subject: [PATCH] bonding: fix crash when no slave device - -If a bonded device is created when there are no slave devices -there is a loop in bond_ethdev_promiscuous_enable() which results -in a segmentation fault. - -The solution is to initialise the current_primary_port to an -invalid port value when the bonded port is created. - -Fixes: 2efb58cbab6e ("bond: new link bonding library") - -Signed-off-by: Bernard Iremonger -Acked-by: Ferruh Yigit ---- - drivers/net/bonding/rte_eth_bond_api.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c -index c6c0ed8..3fca764 100644 ---- a/drivers/net/bonding/rte_eth_bond_api.c -+++ b/drivers/net/bonding/rte_eth_bond_api.c -@@ -231,7 +231,7 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id) - - internals->port_id = eth_dev->data->port_id; - internals->mode = BONDING_MODE_INVALID; -- internals->current_primary_port = 0; -+ internals->current_primary_port = RTE_MAX_ETHPORTS + 1; - internals->balance_xmit_policy = BALANCE_XMIT_POLICY_LAYER2; - internals->xmit_hash = xmit_l2_hash; - internals->user_defined_mac = 0; --- -2.7.3 - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-25-virtio-fix-crash-in-statistics-functions.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-25-virtio-fix-crash-in-statistics-functions.patch deleted file mode 100644 index 0e2b8f3..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-25-virtio-fix-crash-in-statistics-functions.patch +++ /dev/null @@ -1,53 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-23 - -From c680a4a88c4312068f60937a7ba51eac8211c9a6 Mon Sep 17 00:00:00 2001 -From: Bernard Iremonger -Date: Wed, 23 Dec 2015 09:45:19 +0000 -Subject: [PATCH] virtio: fix crash in statistics functions - -This initialisation of nb_rx_queues and nb_tx_queues has been removed -from eth_virtio_dev_init. - -The nb_rx_queues and nb_tx_queues were being initialised in -eth_virtio_dev_init before the tx_queues and rx_queues arrays were -allocated. - -The arrays are allocated when the ethdev port is configured and the -nb_tx_queues and nb_rx_queues are initialised. - -If any of the following functions were called before the ethdev -port was configured there was a segmentation fault because -rx_queues and tx_queues were NULL: - -rte_eth_stats_get -rte_eth_stats_reset -rte_eth_xstats_get -rte_eth_xstats_reset - -Fixes: 823ad647950a ("virtio: support multiple queues") - -Signed-off-by: Bernard Iremonger -Acked-by: Konstantin Ananyev -Acked-by: Yuanhan Liu ---- - drivers/net/virtio/virtio_ethdev.c | 3 --- - 1 file changed, 3 deletions(-) - -Index: dpdk/drivers/net/virtio/virtio_ethdev.c -=================================================================== ---- dpdk.orig/drivers/net/virtio/virtio_ethdev.c -+++ dpdk/drivers/net/virtio/virtio_ethdev.c -@@ -1378,9 +1378,6 @@ eth_virtio_dev_init(struct rte_eth_dev * - hw->max_tx_queues = 1; - } - -- eth_dev->data->nb_rx_queues = hw->max_rx_queues; -- eth_dev->data->nb_tx_queues = hw->max_tx_queues; -- - PMD_INIT_LOG(DEBUG, "hw->max_rx_queues=%d hw->max_tx_queues=%d", - hw->max_rx_queues, hw->max_tx_queues); - PMD_INIT_LOG(DEBUG, "port %d vendorID=0x%x deviceID=0x%x", diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-26-virtio-fix-descriptors-pointing-to-the-same-buffer.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-26-virtio-fix-descriptors-pointing-to-the-same-buffer.patch deleted file mode 100644 index 9f19e7e..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-26-virtio-fix-descriptors-pointing-to-the-same-buffer.patch +++ /dev/null @@ -1,37 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559981 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-23 - -From 3b1e3e4e362453df8cecbc6d481444be8b84326e Mon Sep 17 00:00:00 2001 -From: Huawei Xie -Date: Fri, 11 Dec 2015 00:07:32 +0800 -Subject: [PATCH] virtio: fix descriptors pointing to the same buffer - -The virtio_net_hdr desc all pointed to the same buffer. It doesn't cause -issue because in the simple TX mode we don't use the header. This patch -makes the header desc point to different buffer. - -Fixes: b4ae9c505f2e ("virtio: optimize ring layout") - -Signed-off-by: Huawei Xie -Acked-by: Jianfeng Tan -Acked-by: Yuanhan Liu ---- - drivers/net/virtio/virtio_rxtx.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: dpdk/drivers/net/virtio/virtio_rxtx.c -=================================================================== ---- dpdk.orig/drivers/net/virtio/virtio_rxtx.c -+++ dpdk/drivers/net/virtio/virtio_rxtx.c -@@ -352,7 +352,7 @@ virtio_dev_vring_start(struct virtqueue - vq->vq_ring.desc[i + mid_idx].next = i; - vq->vq_ring.desc[i + mid_idx].addr = - vq->virtio_net_hdr_mem + -- mid_idx * vq->hw->vtnet_hdr_size; -+ i * vq->hw->vtnet_hdr_size; - vq->vq_ring.desc[i + mid_idx].len = - vq->hw->vtnet_hdr_size; - vq->vq_ring.desc[i + mid_idx].flags = diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-27-virtio-fix-restart.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-27-virtio-fix-restart.patch deleted file mode 100644 index dabaed6..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-27-virtio-fix-restart.patch +++ /dev/null @@ -1,72 +0,0 @@ -Description: backport of dpdk 16.04-rc1 fix for LP: #1559912 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-03-23 - -From 9a0615af7746485d73d10561cc0743bc2fcd4bf7 Mon Sep 17 00:00:00 2001 -From: Jianfeng Tan -Date: Mon, 11 Jan 2016 14:16:13 +0800 -Subject: [PATCH] virtio: fix restart - -Fix the issue that virtio device cannot be started after stopped. - -The field, hw->started, should be changed by virtio_dev_start/stop instead -of virtio_dev_close. - -Fixes: a85786dc816f ("virtio: fix states handling during initialization") - -Reported-by: Pavel Fedin -Signed-off-by: Jianfeng Tan -Acked-by: Yuanhan Liu -Tested-by: Pavel Fedin ---- - drivers/net/virtio/virtio_ethdev.c | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) - -Index: dpdk/drivers/net/virtio/virtio_ethdev.c -=================================================================== ---- dpdk.orig/drivers/net/virtio/virtio_ethdev.c -+++ dpdk/drivers/net/virtio/virtio_ethdev.c -@@ -490,11 +490,13 @@ virtio_dev_close(struct rte_eth_dev *dev - - PMD_INIT_LOG(DEBUG, "virtio_dev_close"); - -+ if (hw->started == 1) -+ virtio_dev_stop(dev); -+ - /* reset the NIC */ - if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_LSC) - vtpci_irq_config(hw, VIRTIO_MSI_NO_VECTOR); - vtpci_reset(hw); -- hw->started = 0; - virtio_dev_free_mbufs(dev); - virtio_free_queues(dev); - } -@@ -1405,10 +1407,9 @@ eth_virtio_dev_uninit(struct rte_eth_dev - if (rte_eal_process_type() == RTE_PROC_SECONDARY) - return -EPERM; - -- if (hw->started == 1) { -- virtio_dev_stop(eth_dev); -- virtio_dev_close(eth_dev); -- } -+ /* Close it anyway since there's no way to know if closed */ -+ virtio_dev_close(eth_dev); -+ - pci_dev = eth_dev->pci_dev; - - eth_dev->dev_ops = NULL; -@@ -1609,9 +1610,12 @@ static void - virtio_dev_stop(struct rte_eth_dev *dev) - { - struct rte_eth_link link; -+ struct virtio_hw *hw = dev->data->dev_private; - - PMD_INIT_LOG(DEBUG, "stop"); - -+ hw->started = 0; -+ - if (dev->data->dev_conf.intr_conf.lsc) - rte_intr_disable(&dev->pci_dev->intr_handle); - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-28-lpm-fix-allocation-of-an-existing-object.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-28-lpm-fix-allocation-of-an-existing-object.patch deleted file mode 100644 index afdd1f3..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-28-lpm-fix-allocation-of-an-existing-object.patch +++ /dev/null @@ -1,79 +0,0 @@ -Description: backport of dpdk 16.04-rc fix for LP: #1568838 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-11 - -From f82f705b635d31a63446a16bc4526dbebf293c5a Mon Sep 17 00:00:00 2001 -From: Olivier Matz -Date: Wed, 6 Apr 2016 15:27:58 +0200 -Subject: [PATCH] lpm: fix allocation of an existing object - -Change rte_lpm*_create() functions to return NULL and set rte_errno to -EEXIST when the object name already exists. This is the behavior -described in the API documentation in the header file. - -These functions were returning a pointer to the existing object in that -case, but it is a problem as the caller did not know if the object had -to be freed or not. - -Doing this change also makes the lpm API more consistent with the other -APIs (mempool, rings, ...). - -Fixes: 916e4f4f4e ("memory: fix for multi process support") - -Signed-off-by: Olivier Matz -Acked-by: Pablo de Lara ---- - app/test/test_lpm6.c | 2 +- - lib/librte_lpm/rte_lpm.c | 10 ++++++++-- - lib/librte_lpm/rte_lpm6.c | 5 ++++- - 4 files changed, 22 insertions(+), 4 deletions(-) - -Index: dpdk/app/test/test_lpm6.c -=================================================================== ---- dpdk.orig/app/test/test_lpm6.c -+++ dpdk/app/test/test_lpm6.c -@@ -222,7 +222,7 @@ test1(void) - - /* rte_lpm6_create: lpm name == LPM2 */ - lpm3 = rte_lpm6_create("LPM1", SOCKET_ID_ANY, &config); -- TEST_LPM_ASSERT(lpm3 == lpm1); -+ TEST_LPM_ASSERT(lpm3 == NULL); - - rte_lpm6_free(lpm1); - rte_lpm6_free(lpm2); -Index: dpdk/lib/librte_lpm/rte_lpm.c -=================================================================== ---- dpdk.orig/lib/librte_lpm/rte_lpm.c -+++ dpdk/lib/librte_lpm/rte_lpm.c -@@ -181,8 +181,11 @@ rte_lpm_create(const char *name, int soc - if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0) - break; - } -- if (te != NULL) -+ lpm = NULL; -+ if (te != NULL) { -+ rte_errno = EEXIST; - goto exit; -+ } - - /* allocate tailq entry */ - te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0); -Index: dpdk/lib/librte_lpm/rte_lpm6.c -=================================================================== ---- dpdk.orig/lib/librte_lpm/rte_lpm6.c -+++ dpdk/lib/librte_lpm/rte_lpm6.c -@@ -182,8 +182,11 @@ rte_lpm6_create(const char *name, int so - if (strncmp(name, lpm->name, RTE_LPM6_NAMESIZE) == 0) - break; - } -- if (te != NULL) -+ lpm = NULL; -+ if (te != NULL) { -+ rte_errno = EEXIST; - goto exit; -+ } - - /* allocate tailq entry */ - te = rte_zmalloc("LPM6_TAILQ_ENTRY", sizeof(*te), 0); diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-29-hash-fix-multi-process-support.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-29-hash-fix-multi-process-support.patch deleted file mode 100644 index 1946013..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-29-hash-fix-multi-process-support.patch +++ /dev/null @@ -1,260 +0,0 @@ -Description: backport of dpdk 16.04-rc fix for LP: #1568838 - -Minimal modification to adapt to the not yet existing unified RTE_ARCH_X86 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-11 - -From f9bd3342114a9db436f71b12ac424aff224482cb Mon Sep 17 00:00:00 2001 -From: Pablo de Lara -Date: Fri, 1 Apr 2016 16:03:49 +0100 -Subject: [PATCH] hash: fix multi-process support - -Hash library used a function pointer to choose a different -key compare function, depending on the key size. -As a result, multiple processes could not use the same hash table, -as the function addresses vary from one process to another. - -Instead, a jump table is used, so each process has its own -function addresses, accessing this table with an index stored -in the hash table (note that using a custom key compare function -is not supported in multi-process mode). - -Fixes: 48a399119619 ("hash: replace with cuckoo hash implementation") - -Signed-off-by: Pablo de Lara -Acked-by: Bruce Richardson ---- - doc/guides/prog_guide/hash_lib.rst | 8 +++ - doc/guides/rel_notes/release_16_04.rst | 8 +++ - lib/librte_hash/rte_cuckoo_hash.c | 107 +++++++++++++++++++++++++++------ - 3 files changed, 104 insertions(+), 19 deletions(-) - -Index: dpdk/doc/guides/prog_guide/hash_lib.rst -=================================================================== ---- dpdk.orig/doc/guides/prog_guide/hash_lib.rst -+++ dpdk/doc/guides/prog_guide/hash_lib.rst -@@ -87,6 +87,14 @@ or stored in the hash table itself. - The example hash tables in the L2/L3 Forwarding sample applications defines which port to forward a packet to based on a packet flow identified by the five-tuple lookup. - However, this table could also be used for more sophisticated features and provide many other functions and actions that could be performed on the packets and flows. - -+Multi-process support -+--------------------- -+ -+The hash library can be used in a multi-process environment, minding that only lookups are thread-safe. -+The only function that can only be used in single-process mode is rte_hash_set_cmp_func(), which sets up -+a custom compare function, which is assigned to a function pointer (therefore, it is not supported in -+multi-process mode). -+ - Implementation Details - ---------------------- - -Index: dpdk/lib/librte_hash/rte_cuckoo_hash.c -=================================================================== ---- dpdk.orig/lib/librte_hash/rte_cuckoo_hash.c -+++ dpdk/lib/librte_hash/rte_cuckoo_hash.c -@@ -102,6 +102,64 @@ EAL_REGISTER_TAILQ(rte_hash_tailq) - - #define LCORE_CACHE_SIZE 8 - -+#if defined(RTE_ARCH_X86_64) || defined(RTE_ARCH_I686) ||\ -+ defined(RTE_ARCH_X86_X32) || defined(RTE_ARCH_ARM64) -+/* -+ * All different options to select a key compare function, -+ * based on the key size and custom function. -+ */ -+enum cmp_jump_table_case { -+ KEY_CUSTOM = 0, -+ KEY_16_BYTES, -+ KEY_32_BYTES, -+ KEY_48_BYTES, -+ KEY_64_BYTES, -+ KEY_80_BYTES, -+ KEY_96_BYTES, -+ KEY_112_BYTES, -+ KEY_128_BYTES, -+ KEY_OTHER_BYTES, -+ NUM_KEY_CMP_CASES, -+}; -+ -+/* -+ * Table storing all different key compare functions -+ * (multi-process supported) -+ */ -+const rte_hash_cmp_eq_t cmp_jump_table[NUM_KEY_CMP_CASES] = { -+ NULL, -+ rte_hash_k16_cmp_eq, -+ rte_hash_k32_cmp_eq, -+ rte_hash_k48_cmp_eq, -+ rte_hash_k64_cmp_eq, -+ rte_hash_k80_cmp_eq, -+ rte_hash_k96_cmp_eq, -+ rte_hash_k112_cmp_eq, -+ rte_hash_k128_cmp_eq, -+ memcmp -+}; -+#else -+/* -+ * All different options to select a key compare function, -+ * based on the key size and custom function. -+ */ -+enum cmp_jump_table_case { -+ KEY_CUSTOM = 0, -+ KEY_OTHER_BYTES, -+ NUM_KEY_CMP_CASES, -+}; -+ -+/* -+ * Table storing all different key compare functions -+ * (multi-process supported) -+ */ -+const rte_hash_cmp_eq_t cmp_jump_table[NUM_KEY_CMP_CASES] = { -+ NULL, -+ memcmp -+}; -+ -+#endif -+ - struct lcore_cache { - unsigned len; /**< Cache len */ - void *objs[LCORE_CACHE_SIZE]; /**< Cache objects */ -@@ -115,7 +173,10 @@ struct rte_hash { - uint32_t key_len; /**< Length of hash key. */ - rte_hash_function hash_func; /**< Function used to calculate hash. */ - uint32_t hash_func_init_val; /**< Init value used by hash_func. */ -- rte_hash_cmp_eq_t rte_hash_cmp_eq; /**< Function used to compare keys. */ -+ rte_hash_cmp_eq_t rte_hash_custom_cmp_eq; -+ /**< Custom function used to compare keys. */ -+ enum cmp_jump_table_case cmp_jump_table_idx; -+ /**< Indicates which compare function to use. */ - uint32_t bucket_bitmask; /**< Bitmask for getting bucket index - from hash signature. */ - uint32_t key_entry_size; /**< Size of each key entry. */ -@@ -187,7 +248,16 @@ rte_hash_find_existing(const char *name) - - void rte_hash_set_cmp_func(struct rte_hash *h, rte_hash_cmp_eq_t func) - { -- h->rte_hash_cmp_eq = func; -+ h->rte_hash_custom_cmp_eq = func; -+} -+ -+static inline int -+rte_hash_cmp_eq(const void *key1, const void *key2, const struct rte_hash *h) -+{ -+ if (h->cmp_jump_table_idx == KEY_CUSTOM) -+ return h->rte_hash_custom_cmp_eq(key1, key2, h->key_len); -+ else -+ return cmp_jump_table[h->cmp_jump_table_idx](key1, key2, h->key_len); - } - - struct rte_hash * -@@ -292,35 +362,35 @@ rte_hash_create(const struct rte_hash_pa - /* Select function to compare keys */ - switch (params->key_len) { - case 16: -- h->rte_hash_cmp_eq = rte_hash_k16_cmp_eq; -+ h->cmp_jump_table_idx = KEY_16_BYTES; - break; - case 32: -- h->rte_hash_cmp_eq = rte_hash_k32_cmp_eq; -+ h->cmp_jump_table_idx = KEY_32_BYTES; - break; - case 48: -- h->rte_hash_cmp_eq = rte_hash_k48_cmp_eq; -+ h->cmp_jump_table_idx = KEY_48_BYTES; - break; - case 64: -- h->rte_hash_cmp_eq = rte_hash_k64_cmp_eq; -+ h->cmp_jump_table_idx = KEY_64_BYTES; - break; - case 80: -- h->rte_hash_cmp_eq = rte_hash_k80_cmp_eq; -+ h->cmp_jump_table_idx = KEY_80_BYTES; - break; - case 96: -- h->rte_hash_cmp_eq = rte_hash_k96_cmp_eq; -+ h->cmp_jump_table_idx = KEY_96_BYTES; - break; - case 112: -- h->rte_hash_cmp_eq = rte_hash_k112_cmp_eq; -+ h->cmp_jump_table_idx = KEY_112_BYTES; - break; - case 128: -- h->rte_hash_cmp_eq = rte_hash_k128_cmp_eq; -+ h->cmp_jump_table_idx = KEY_128_BYTES; - break; - default: - /* If key is not multiple of 16, use generic memcmp */ -- h->rte_hash_cmp_eq = memcmp; -+ h->cmp_jump_table_idx = KEY_OTHER_BYTES; - } - #else -- h->rte_hash_cmp_eq = memcmp; -+ h->cmp_jump_table_idx = KEY_OTHER_BYTES; - #endif - - snprintf(ring_name, sizeof(ring_name), "HT_%s", params->name); -@@ -594,7 +664,7 @@ __rte_hash_add_key_with_hash(const struc - prim_bkt->signatures[i].alt == alt_hash) { - k = (struct rte_hash_key *) ((char *)keys + - prim_bkt->key_idx[i] * h->key_entry_size); -- if (h->rte_hash_cmp_eq(key, k->key, h->key_len) == 0) { -+ if (rte_hash_cmp_eq(key, k->key, h) == 0) { - /* Enqueue index of free slot back in the ring. */ - enqueue_slot_back(h, cached_free_slots, slot_id); - /* Update data */ -@@ -614,7 +684,7 @@ __rte_hash_add_key_with_hash(const struc - sec_bkt->signatures[i].current == alt_hash) { - k = (struct rte_hash_key *) ((char *)keys + - sec_bkt->key_idx[i] * h->key_entry_size); -- if (h->rte_hash_cmp_eq(key, k->key, h->key_len) == 0) { -+ if (rte_hash_cmp_eq(key, k->key, h) == 0) { - /* Enqueue index of free slot back in the ring. */ - enqueue_slot_back(h, cached_free_slots, slot_id); - /* Update data */ -@@ -725,7 +795,7 @@ __rte_hash_lookup_with_hash(const struct - bkt->signatures[i].sig != NULL_SIGNATURE) { - k = (struct rte_hash_key *) ((char *)keys + - bkt->key_idx[i] * h->key_entry_size); -- if (h->rte_hash_cmp_eq(key, k->key, h->key_len) == 0) { -+ if (rte_hash_cmp_eq(key, k->key, h) == 0) { - if (data != NULL) - *data = k->pdata; - /* -@@ -748,7 +818,7 @@ __rte_hash_lookup_with_hash(const struct - bkt->signatures[i].alt == sig) { - k = (struct rte_hash_key *) ((char *)keys + - bkt->key_idx[i] * h->key_entry_size); -- if (h->rte_hash_cmp_eq(key, k->key, h->key_len) == 0) { -+ if (rte_hash_cmp_eq(key, k->key, h) == 0) { - if (data != NULL) - *data = k->pdata; - /* -@@ -840,7 +910,7 @@ __rte_hash_del_key_with_hash(const struc - bkt->signatures[i].sig != NULL_SIGNATURE) { - k = (struct rte_hash_key *) ((char *)keys + - bkt->key_idx[i] * h->key_entry_size); -- if (h->rte_hash_cmp_eq(key, k->key, h->key_len) == 0) { -+ if (rte_hash_cmp_eq(key, k->key, h) == 0) { - remove_entry(h, bkt, i); - - /* -@@ -863,7 +933,7 @@ __rte_hash_del_key_with_hash(const struc - bkt->signatures[i].sig != NULL_SIGNATURE) { - k = (struct rte_hash_key *) ((char *)keys + - bkt->key_idx[i] * h->key_entry_size); -- if (h->rte_hash_cmp_eq(key, k->key, h->key_len) == 0) { -+ if (rte_hash_cmp_eq(key, k->key, h) == 0) { - remove_entry(h, bkt, i); - - /* -@@ -980,7 +1050,7 @@ lookup_stage3(unsigned idx, const struct - unsigned hit; - unsigned key_idx; - -- hit = !h->rte_hash_cmp_eq(key_slot->key, keys[idx], h->key_len); -+ hit = !rte_hash_cmp_eq(key_slot->key, keys[idx], h); - if (data != NULL) - data[idx] = key_slot->pdata; - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-30-hash-fix-allocation-of-an-existing-object.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-30-hash-fix-allocation-of-an-existing-object.patch deleted file mode 100644 index 5876040..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-30-hash-fix-allocation-of-an-existing-object.patch +++ /dev/null @@ -1,177 +0,0 @@ -Description: backport of dpdk 16.04-rc fix for LP: #1568838 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-11 - -From 1aadacb5b0ed29ea8f84eaa3ef6802663671be98 Mon Sep 17 00:00:00 2001 -From: Olivier Matz -Date: Wed, 6 Apr 2016 15:27:59 +0200 -Subject: [PATCH] hash: fix allocation of an existing object - -Change rte_hash*_create() functions to return NULL and set rte_errno to -EEXIST when the object name already exists. This is the behavior -described in the API documentation in the header file. - -These functions were returning a pointer to the existing object in that -case, but it is a problem as the caller did not know if the object had -to be freed or not. - -Doing this change also makes the hash API more consistent with the other -APIs (mempool, rings, ...). - -Fixes: 916e4f4f4e ("memory: fix for multi process support") - -Signed-off-by: Olivier Matz -Acked-by: Pablo de Lara ---- - app/test/test_hash.c | 65 ++++++++++++---------------------- - doc/guides/rel_notes/release_16_04.rst | 9 +++++ - lib/librte_hash/rte_cuckoo_hash.c | 6 ++-- - lib/librte_hash/rte_fbk_hash.c | 5 ++- - 4 files changed, 40 insertions(+), 45 deletions(-) - -Index: dpdk/app/test/test_hash.c -=================================================================== ---- dpdk.orig/app/test/test_hash.c -+++ dpdk/app/test/test_hash.c -@@ -805,15 +805,11 @@ fbk_hash_unit_test(void) - RETURN_IF_ERROR_FBK(handle == NULL, "fbk hash creation should have succeeded"); - - tmp = rte_fbk_hash_create(&invalid_params_same_name_2); -- RETURN_IF_ERROR_FBK(tmp == NULL, "fbk hash creation should have succeeded"); -- if (tmp != handle) { -- printf("ERROR line %d: hashes should have been the same\n", __LINE__); -- rte_fbk_hash_free(handle); -- rte_fbk_hash_free(tmp); -- return -1; -- } -+ if (tmp != NULL) -+ rte_fbk_hash_free(tmp); -+ RETURN_IF_ERROR_FBK(tmp != NULL, "fbk hash creation should have failed"); - -- /* we are not freeing tmp or handle here because we need a hash list -+ /* we are not freeing handle here because we need a hash list - * to be not empty for the next test */ - - /* create a hash in non-empty list - good for coverage */ -@@ -988,7 +984,7 @@ static int test_fbk_hash_find_existing(v - */ - static int test_hash_creation_with_bad_parameters(void) - { -- struct rte_hash *handle; -+ struct rte_hash *handle, *tmp; - struct rte_hash_parameters params; - - handle = rte_hash_create(NULL); -@@ -1038,7 +1034,23 @@ static int test_hash_creation_with_bad_p - return -1; - } - -+ /* test with same name should fail */ -+ memcpy(¶ms, &ut_params, sizeof(params)); -+ params.name = "same_name"; -+ handle = rte_hash_create(¶ms); -+ if (handle == NULL) { -+ printf("Cannot create first hash table with 'same_name'\n"); -+ return -1; -+ } -+ tmp = rte_hash_create(¶ms); -+ if (tmp != NULL) { -+ printf("Creation of hash table with same name should fail\n"); -+ rte_hash_free(handle); -+ rte_hash_free(tmp); -+ return -1; -+ } - rte_hash_free(handle); -+ - printf("# Test successful. No more errors expected\n"); - - return 0; -@@ -1051,12 +1063,12 @@ static int test_hash_creation_with_bad_p - static int - test_hash_creation_with_good_parameters(void) - { -- struct rte_hash *handle, *tmp; -+ struct rte_hash *handle; - struct rte_hash_parameters params; - - /* create with null hash function - should choose DEFAULT_HASH_FUNC */ - memcpy(¶ms, &ut_params, sizeof(params)); -- params.name = "same_name"; -+ params.name = "name"; - params.hash_func = NULL; - handle = rte_hash_create(¶ms); - if (handle == NULL) { -@@ -1064,37 +1076,6 @@ test_hash_creation_with_good_parameters( - return -1; - } - -- /* this test is trying to create a hash with the same name as previous one. -- * this should return a pointer to the hash we previously created. -- * the previous hash isn't freed exactly for the purpose of it being in -- * the hash list. -- */ -- memcpy(¶ms, &ut_params, sizeof(params)); -- params.name = "same_name"; -- tmp = rte_hash_create(¶ms); -- -- /* check if the returned handle is actually equal to the previous hash */ -- if (handle != tmp) { -- rte_hash_free(handle); -- rte_hash_free(tmp); -- printf("Creating hash with existing name was successful\n"); -- return -1; -- } -- -- /* try creating hash when there already are hashes in the list. -- * the previous hash is not freed to have a non-empty hash list. -- * the other hash that's in the list is still pointed to by "handle" var. -- */ -- memcpy(¶ms, &ut_params, sizeof(params)); -- params.name = "different_name"; -- tmp = rte_hash_create(¶ms); -- if (tmp == NULL) { -- rte_hash_free(handle); -- printf("Creating hash with valid parameters failed\n"); -- return -1; -- } -- -- rte_hash_free(tmp); - rte_hash_free(handle); - - return 0; -Index: dpdk/lib/librte_hash/rte_cuckoo_hash.c -=================================================================== ---- dpdk.orig/lib/librte_hash/rte_cuckoo_hash.c -+++ dpdk/lib/librte_hash/rte_cuckoo_hash.c -@@ -300,8 +300,10 @@ rte_hash_create(const struct rte_hash_pa - - /* Guarantee there's no existing */ - h = rte_hash_find_existing(params->name); -- if (h != NULL) -- return h; -+ if (h != NULL) { -+ rte_errno = EEXIST; -+ return NULL; -+ } - - te = rte_zmalloc("HASH_TAILQ_ENTRY", sizeof(*te), 0); - if (te == NULL) { -Index: dpdk/lib/librte_hash/rte_fbk_hash.c -=================================================================== ---- dpdk.orig/lib/librte_hash/rte_fbk_hash.c -+++ dpdk/lib/librte_hash/rte_fbk_hash.c -@@ -140,8 +140,11 @@ rte_fbk_hash_create(const struct rte_fbk - if (strncmp(params->name, ht->name, RTE_FBK_HASH_NAMESIZE) == 0) - break; - } -- if (te != NULL) -+ ht = NULL; -+ if (te != NULL) { -+ rte_errno = EEXIST; - goto exit; -+ } - - te = rte_zmalloc("FBK_HASH_TAILQ_ENTRY", sizeof(*te), 0); - if (te == NULL) { diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-31-hash-fix-race-condition-at-creation.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-31-hash-fix-race-condition-at-creation.patch deleted file mode 100644 index 707dbe3..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-31-hash-fix-race-condition-at-creation.patch +++ /dev/null @@ -1,160 +0,0 @@ -Description: backport of dpdk 16.04-rc fix for LP: #1568838 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-11 - -From 5d7bfb7337e917c8d97b43a75264789b01b6cfce Mon Sep 17 00:00:00 2001 -From: Olivier Matz -Date: Wed, 6 Apr 2016 15:28:00 +0200 -Subject: [PATCH] hash: fix race condition at creation - -To avoid a race condition while creating a new hash object, the -list has to be locked before the lookup, and released only once the -new object is added in the list. - -As the lock is held by the rte_ring_create(), move its creation at the -beginning of the function and only take the lock after the ring is -created to avoid a deadlock. - -Fixes: 48a3991196 ("hash: replace with cuckoo hash implementation") - -Signed-off-by: Olivier Matz -Acked-by: Pablo de Lara ---- - lib/librte_hash/rte_cuckoo_hash.c | 70 ++++++++++++++++++++++----------------- - 1 file changed, 40 insertions(+), 30 deletions(-) - -Index: dpdk/lib/librte_hash/rte_cuckoo_hash.c -=================================================================== ---- dpdk.orig/lib/librte_hash/rte_cuckoo_hash.c -+++ dpdk/lib/librte_hash/rte_cuckoo_hash.c -@@ -296,19 +296,48 @@ rte_hash_create(const struct rte_hash_pa - if (params->extra_flag & RTE_HASH_EXTRA_FLAGS_TRANS_MEM_SUPPORT) - hw_trans_mem_support = 1; - -+ /* Store all keys and leave the first entry as a dummy entry for lookup_bulk */ -+ if (hw_trans_mem_support) -+ /* -+ * Increase number of slots by total number of indices -+ * that can be stored in the lcore caches -+ * except for the first cache -+ */ -+ num_key_slots = params->entries + (RTE_MAX_LCORE - 1) * -+ LCORE_CACHE_SIZE + 1; -+ else -+ num_key_slots = params->entries + 1; -+ -+ snprintf(ring_name, sizeof(ring_name), "HT_%s", params->name); -+ r = rte_ring_create(ring_name, rte_align32pow2(num_key_slots), -+ params->socket_id, 0); -+ if (r == NULL) { -+ RTE_LOG(ERR, HASH, "memory allocation failed\n"); -+ goto err; -+ } -+ - snprintf(hash_name, sizeof(hash_name), "HT_%s", params->name); - -- /* Guarantee there's no existing */ -- h = rte_hash_find_existing(params->name); -- if (h != NULL) { -+ rte_rwlock_write_lock(RTE_EAL_TAILQ_RWLOCK); -+ -+ /* guarantee there's no existing: this is normally already checked -+ * by ring creation above */ -+ TAILQ_FOREACH(te, hash_list, next) { -+ h = (struct rte_hash *) te->data; -+ if (strncmp(params->name, h->name, RTE_HASH_NAMESIZE) == 0) -+ break; -+ } -+ h = NULL; -+ if (te != NULL) { - rte_errno = EEXIST; -- return NULL; -+ te = NULL; -+ goto err_unlock; - } - - te = rte_zmalloc("HASH_TAILQ_ENTRY", sizeof(*te), 0); - if (te == NULL) { - RTE_LOG(ERR, HASH, "tailq entry allocation failed\n"); -- goto err; -+ goto err_unlock; - } - - h = (struct rte_hash *)rte_zmalloc_socket(hash_name, sizeof(struct rte_hash), -@@ -316,7 +345,7 @@ rte_hash_create(const struct rte_hash_pa - - if (h == NULL) { - RTE_LOG(ERR, HASH, "memory allocation failed\n"); -- goto err; -+ goto err_unlock; - } - - const uint32_t num_buckets = rte_align32pow2(params->entries) -@@ -328,23 +357,10 @@ rte_hash_create(const struct rte_hash_pa - - if (buckets == NULL) { - RTE_LOG(ERR, HASH, "memory allocation failed\n"); -- goto err; -+ goto err_unlock; - } - - const uint32_t key_entry_size = sizeof(struct rte_hash_key) + params->key_len; -- -- /* Store all keys and leave the first entry as a dummy entry for lookup_bulk */ -- if (hw_trans_mem_support) -- /* -- * Increase number of slots by total number of indices -- * that can be stored in the lcore caches -- * except for the first cache -- */ -- num_key_slots = params->entries + (RTE_MAX_LCORE - 1) * -- LCORE_CACHE_SIZE + 1; -- else -- num_key_slots = params->entries + 1; -- - const uint64_t key_tbl_size = (uint64_t) key_entry_size * num_key_slots; - - k = rte_zmalloc_socket(NULL, key_tbl_size, -@@ -352,7 +368,7 @@ rte_hash_create(const struct rte_hash_pa - - if (k == NULL) { - RTE_LOG(ERR, HASH, "memory allocation failed\n"); -- goto err; -+ goto err_unlock; - } - - /* -@@ -395,14 +411,6 @@ rte_hash_create(const struct rte_hash_pa - h->cmp_jump_table_idx = KEY_OTHER_BYTES; - #endif - -- snprintf(ring_name, sizeof(ring_name), "HT_%s", params->name); -- r = rte_ring_create(ring_name, rte_align32pow2(num_key_slots), -- params->socket_id, 0); -- if (r == NULL) { -- RTE_LOG(ERR, HASH, "memory allocation failed\n"); -- goto err; -- } -- - if (hw_trans_mem_support) { - h->local_free_slots = rte_zmalloc_socket(NULL, - sizeof(struct lcore_cache) * RTE_MAX_LCORE, -@@ -429,13 +437,15 @@ rte_hash_create(const struct rte_hash_pa - for (i = 1; i < params->entries + 1; i++) - rte_ring_sp_enqueue(r, (void *)((uintptr_t) i)); - -- rte_rwlock_write_lock(RTE_EAL_TAILQ_RWLOCK); - te->data = (void *) h; - TAILQ_INSERT_TAIL(hash_list, te, next); - rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK); - - return h; -+err_unlock: -+ rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK); - err: -+ rte_ring_free(r); - rte_free(te); - rte_free(h); - rte_free(buckets); diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-32-eal-fix-resource-leak.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-32-eal-fix-resource-leak.patch deleted file mode 100644 index 2a8e8f1..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-32-eal-fix-resource-leak.patch +++ /dev/null @@ -1,36 +0,0 @@ -Description: backport of dpdk 16.04-rc fix for LP: #1568838 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-11 - -From fe671356ed0d9b349bd257b8fcb30adf7da103e1 Mon Sep 17 00:00:00 2001 -From: Daniel Mrzyglod -Date: Mon, 11 Apr 2016 11:46:54 +0200 -Subject: [PATCH] vfio: fix resource leak - -Coverity ID 13289: Resource leak: -The system resource will not be reclaimed and reused, -reducing the future availability of the resource. -In pci_vfio_get_group_fd: Leak of memory or pointers to system resources - -Fixes: ff0b67d1c868 ("vfio: DMA mapping") - -Signed-off-by: Daniel Mrzyglod -Acked-by: Anatoly Burakov ---- - lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 1 + - 1 file changed, 1 insertion(+) - -Index: dpdk/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c -=================================================================== ---- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c -+++ dpdk/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c -@@ -448,6 +448,7 @@ pci_vfio_get_group_fd(int iommu_group_no - /* if the fd is valid, create a new group for it */ - if (vfio_cfg.vfio_group_idx == VFIO_MAX_GROUPS) { - RTE_LOG(ERR, EAL, "Maximum number of VFIO groups reached!\n"); -+ close(vfio_group_fd); - return -1; - } - vfio_cfg.vfio_groups[vfio_cfg.vfio_group_idx].group_no = iommu_group_no; diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch deleted file mode 100644 index b24f2f6..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch +++ /dev/null @@ -1,141 +0,0 @@ -Description: backport of dpdk fix for LP: #1566874 - -Forwarded: n/a (already discussed upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-11 - -Extended by Christian Ehrhardt -Close fd on vserver->listenfd (Part of the upstream discussion) - -Original: -From: Patrik Andersson - -Protect against DPDK crash when allocation of listen fd >= 1023. -For events on fd:s >1023, the current implementation will trigger -an abort due to access outside of allocated bit mask. - -Corrections would include: - - * Match fdset_add() signature in fd_man.c to fd_man.h - * Handling of return codes from fdset_add() - * Addition of check of fd number in fdset_add_fd() - -The rationale behind the suggested code change is that, -fdset_event_dispatch() could attempt access outside of the FD_SET -bitmask if there is an event on a file descriptor that in turn -looks up a virtio file descriptor with a value > 1023. -Such an attempt will lead to an abort() and a restart of any -vswitch using DPDK. - -A discussion topic exist in the ovs-discuss mailing list that can -provide a little more background: - -http://openvswitch.org/pipermail/discuss/2016-February/020243.html - -Signed-off-by: Patrik Andersson ---- - fd_man.c | 11 ++++++----- - vhost-net-user.c | 23 +++++++++++++++++++++-- - 2 files changed, 27 insertions(+), 7 deletions(-) - -Index: dpdk/lib/librte_vhost/vhost_user/fd_man.c -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_user/fd_man.c -+++ dpdk/lib/librte_vhost/vhost_user/fd_man.c -@@ -71,20 +71,22 @@ fdset_find_free_slot(struct fdset *pfdse - return fdset_find_fd(pfdset, -1); - } - --static void -+static int - fdset_add_fd(struct fdset *pfdset, int idx, int fd, - fd_cb rcb, fd_cb wcb, void *dat) - { - struct fdentry *pfdentry; - -- if (pfdset == NULL || idx >= MAX_FDS) -- return; -+ if (pfdset == NULL || idx >= MAX_FDS || fd >= FD_SETSIZE) -+ return -1; - - pfdentry = &pfdset->fd[idx]; - pfdentry->fd = fd; - pfdentry->rcb = rcb; - pfdentry->wcb = wcb; - pfdentry->dat = dat; -+ -+ return 0; - } - - /** -@@ -150,12 +152,11 @@ fdset_add(struct fdset *pfdset, int fd, - - /* Find a free slot in the list. */ - i = fdset_find_free_slot(pfdset); -- if (i == -1) { -+ if (i == -1 || fdset_add_fd(pfdset, i, fd, rcb, wcb, dat) < 0) { - pthread_mutex_unlock(&pfdset->fd_mutex); - return -2; - } - -- fdset_add_fd(pfdset, i, fd, rcb, wcb, dat); - pfdset->num++; - - pthread_mutex_unlock(&pfdset->fd_mutex); -Index: dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_user/vhost-net-user.c -+++ dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c -@@ -288,6 +288,7 @@ vserver_new_vq_conn(int fd, void *dat, _ - int fh; - struct vhost_device_ctx vdev_ctx = { (pid_t)0, 0 }; - unsigned int size; -+ int ret; - - conn_fd = accept(fd, NULL, NULL); - RTE_LOG(INFO, VHOST_CONFIG, -@@ -317,8 +318,15 @@ vserver_new_vq_conn(int fd, void *dat, _ - - ctx->vserver = vserver; - ctx->fh = fh; -- fdset_add(&g_vhost_server.fdset, -+ ret = fdset_add(&g_vhost_server.fdset, - conn_fd, vserver_message_handler, NULL, ctx); -+ if (ret < 0) { -+ free(ctx); -+ close(conn_fd); -+ RTE_LOG(ERR, VHOST_CONFIG, -+ "failed to add fd %d into vhost server fdset\n", -+ conn_fd); -+ } - } - - /* callback when there is message on the connfd */ -@@ -447,6 +455,7 @@ int - rte_vhost_driver_register(const char *path) - { - struct vhost_server *vserver; -+ int ret; - - pthread_mutex_lock(&g_vhost_server.server_mutex); - if (ops == NULL) -@@ -474,8 +483,18 @@ rte_vhost_driver_register(const char *pa - - vserver->path = strdup(path); - -- fdset_add(&g_vhost_server.fdset, vserver->listenfd, -+ ret = fdset_add(&g_vhost_server.fdset, vserver->listenfd, - vserver_new_vq_conn, NULL, vserver); -+ if (ret < 0) { -+ pthread_mutex_unlock(&g_vhost_server.server_mutex); -+ RTE_LOG(ERR, VHOST_CONFIG, -+ "failed to add listen fd %d to vhost server fdset\n", -+ vserver->listenfd); -+ close(vserver->listenfd); -+ free(vserver->path); -+ free(vserver); -+ return -1; -+ } - - g_vhost_server.server[g_vhost_server.vserver_cnt++] = vserver; - pthread_mutex_unlock(&g_vhost_server.server_mutex); diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-34-port-fix-ring-writer-buffer-overflow.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-34-port-fix-ring-writer-buffer-overflow.patch deleted file mode 100644 index 04d0213..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-34-port-fix-ring-writer-buffer-overflow.patch +++ /dev/null @@ -1,54 +0,0 @@ -Description: backport of dpdk 16.04-rc fix for LP: #1568838 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-12 - -From 356445f97a28b66bce9e7300e21fdcfa7def55c9 Mon Sep 17 00:00:00 2001 -From: Jasvinder Singh -Date: Mon, 11 Apr 2016 18:55:37 +0100 -Subject: [PATCH] port: fix ring writer buffer overflow - -Fixes the buffer overflow that occurs due to following; - -1. When the input packet burst does not meet the conditions: (a) being -contiguous (first n bits set in pkts_mask, all the other bits cleared) -and (b) containing a full burst, i.e. at least tx_burst_sz packets -(n >= tx_burst_size). This is the slow(er) code path taken when local -variable expr != 0. -2. There are some packets already in the buffer. -3. The number of packets in the incoming burst (i.e. popcount(pkts_mask)) -plus the number of packets already in the buffer exceeds the buffer size -(RTE_PORT_IN_BURST_SIZE_MAX, i.e. 64). - -Fixes: bf6931b242f7 ("port: ring") -Fixes: 5f4cd47309d6 ("port: add ring writer nodrop") - -Signed-off-by: Jasvinder Singh -Acked-by: Cristian Dumitrescu ---- - lib/librte_port/rte_port_ring.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: dpdk/lib/librte_port/rte_port_ring.c -=================================================================== ---- dpdk.orig/lib/librte_port/rte_port_ring.c -+++ dpdk/lib/librte_port/rte_port_ring.c -@@ -179,7 +179,7 @@ rte_port_ring_reader_stats_read(void *po - struct rte_port_ring_writer { - struct rte_port_out_stats stats; - -- struct rte_mbuf *tx_buf[RTE_PORT_IN_BURST_SIZE_MAX]; -+ struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX]; - struct rte_ring *ring; - uint32_t tx_burst_sz; - uint32_t tx_buf_count; -@@ -447,7 +447,7 @@ rte_port_ring_writer_stats_read(void *po - struct rte_port_ring_writer_nodrop { - struct rte_port_out_stats stats; - -- struct rte_mbuf *tx_buf[RTE_PORT_IN_BURST_SIZE_MAX]; -+ struct rte_mbuf *tx_buf[2 * RTE_PORT_IN_BURST_SIZE_MAX]; - struct rte_ring *ring; - uint32_t tx_burst_sz; - uint32_t tx_buf_count; diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-35-port-fix-burst-size-mask-type.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-35-port-fix-burst-size-mask-type.patch deleted file mode 100644 index de33b64..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-35-port-fix-burst-size-mask-type.patch +++ /dev/null @@ -1,84 +0,0 @@ -Description: backport of dpdk 16.04-rc fix for LP: #1568838 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-12 - -From 52f7a5aeb190427232ba0289ec156e91ae68d3e6 Mon Sep 17 00:00:00 2001 -From: Jasvinder Singh -Date: Mon, 11 Apr 2016 18:54:46 +0100 -Subject: [PATCH] port: fix burst size mask type - -Fixes the variable bsz_mask type from uint32_t to uint64_t - -Fixes: 4d97e8b565cc ("port: ethdev") -Fixes: 304c8091e90a ("port: add ethdev writer nodrop") -Fixes: 8dceb6aa6ecf ("port: hierarchical scheduler") -Fixes: 3e5966837a09 ("port: new Tx burst implementation of ring writer") -Fixes: 5f4cd47309d6 ("port: add ring writer nodrop") - -Signed-off-by: Jasvinder Singh -Acked-by: Cristian Dumitrescu ---- - lib/librte_port/rte_port_ethdev.c | 4 ++-- - lib/librte_port/rte_port_ring.c | 4 ++-- - lib/librte_port/rte_port_sched.c | 2 +- - 3 files changed, 5 insertions(+), 5 deletions(-) - -Index: dpdk/lib/librte_port/rte_port_ethdev.c -=================================================================== ---- dpdk.orig/lib/librte_port/rte_port_ethdev.c -+++ dpdk/lib/librte_port/rte_port_ethdev.c -@@ -229,7 +229,7 @@ rte_port_ethdev_writer_tx_bulk(void *por - { - struct rte_port_ethdev_writer *p = - (struct rte_port_ethdev_writer *) port; -- uint32_t bsz_mask = p->bsz_mask; -+ uint64_t bsz_mask = p->bsz_mask; - uint32_t tx_buf_count = p->tx_buf_count; - uint64_t expr = (pkts_mask & (pkts_mask + 1)) | - ((pkts_mask & bsz_mask) ^ bsz_mask); -@@ -436,7 +436,7 @@ rte_port_ethdev_writer_nodrop_tx_bulk(vo - struct rte_port_ethdev_writer_nodrop *p = - (struct rte_port_ethdev_writer_nodrop *) port; - -- uint32_t bsz_mask = p->bsz_mask; -+ uint64_t bsz_mask = p->bsz_mask; - uint32_t tx_buf_count = p->tx_buf_count; - uint64_t expr = (pkts_mask & (pkts_mask + 1)) | - ((pkts_mask & bsz_mask) ^ bsz_mask); -Index: dpdk/lib/librte_port/rte_port_ring.c -=================================================================== ---- dpdk.orig/lib/librte_port/rte_port_ring.c -+++ dpdk/lib/librte_port/rte_port_ring.c -@@ -300,7 +300,7 @@ rte_port_ring_writer_tx_bulk_internal(vo - struct rte_port_ring_writer *p = - (struct rte_port_ring_writer *) port; - -- uint32_t bsz_mask = p->bsz_mask; -+ uint64_t bsz_mask = p->bsz_mask; - uint32_t tx_buf_count = p->tx_buf_count; - uint64_t expr = (pkts_mask & (pkts_mask + 1)) | - ((pkts_mask & bsz_mask) ^ bsz_mask); -@@ -614,7 +614,7 @@ rte_port_ring_writer_nodrop_tx_bulk_inte - struct rte_port_ring_writer_nodrop *p = - (struct rte_port_ring_writer_nodrop *) port; - -- uint32_t bsz_mask = p->bsz_mask; -+ uint64_t bsz_mask = p->bsz_mask; - uint32_t tx_buf_count = p->tx_buf_count; - uint64_t expr = (pkts_mask & (pkts_mask + 1)) | - ((pkts_mask & bsz_mask) ^ bsz_mask); -Index: dpdk/lib/librte_port/rte_port_sched.c -=================================================================== ---- dpdk.orig/lib/librte_port/rte_port_sched.c -+++ dpdk/lib/librte_port/rte_port_sched.c -@@ -214,7 +214,7 @@ rte_port_sched_writer_tx_bulk(void *port - uint64_t pkts_mask) - { - struct rte_port_sched_writer *p = (struct rte_port_sched_writer *) port; -- uint32_t bsz_mask = p->bsz_mask; -+ uint64_t bsz_mask = p->bsz_mask; - uint32_t tx_buf_count = p->tx_buf_count; - uint64_t expr = (pkts_mask & (pkts_mask + 1)) | - ((pkts_mask & bsz_mask) ^ bsz_mask); diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-36-pci-identify-devices-not-managed-by-any-kernel-drive.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-36-pci-identify-devices-not-managed-by-any-kernel-drive.patch deleted file mode 100644 index 0d4055f..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-36-pci-identify-devices-not-managed-by-any-kernel-drive.patch +++ /dev/null @@ -1,34 +0,0 @@ -Description: backport of dpdk 16.04 fix for LP: #1570195 - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-19 - -From ee4e23ada8cb0fcb566295756d30bd21e757c783 Mon Sep 17 00:00:00 2001 -From: Huawei Xie -Date: Tue, 8 Mar 2016 23:33:39 +0800 -Subject: [PATCH] pci: identify devices not managed by any kernel driver - -Use RTE_KDRV_NONE to indicate that kernel driver (other than VFIO/UIO) isn't -managing the device. - -Signed-off-by: Huawei Xie -Acked-by: Yuanhan Liu -Acked-by: David Marchand ---- - lib/librte_eal/linuxapp/eal/eal_pci.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c -=================================================================== ---- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_pci.c -+++ dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c -@@ -362,7 +362,7 @@ pci_scan_one(const char *dirname, uint16 - else - dev->kdrv = RTE_KDRV_UNKNOWN; - } else -- dev->kdrv = RTE_KDRV_UNKNOWN; -+ dev->kdrv = RTE_KDRV_NONE; - - /* device is valid, add in list (sorted) */ - if (TAILQ_EMPTY(&pci_device_list)) { diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-37-pci-ignore-devices-already-managed-in-Linux-when-map.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-37-pci-ignore-devices-already-managed-in-Linux-when-map.patch deleted file mode 100644 index 4bd889d..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-37-pci-ignore-devices-already-managed-in-Linux-when-map.patch +++ /dev/null @@ -1,94 +0,0 @@ -Description: backport of dpdk 16.04 fix for LP: #1570195 - -The whole infrastructure of 756ce64b1ecd eal: "introduce PCI ioport API" was -introduced post DPDK 2.2. - -Old virtio is not using lib/librte_eal/linuxapp/eal/eal_pci.c:pci_map_device -New Code: - vtpci_init - First tries for modern device -> virtio_read_caps -> rte_eal_pci_map_device - This detects and returns with "Not managed by a supported kernel driver" - Then legacy_virtio_resource_init -> rte_eal_pci_ioport_mapi - This is where the original patch added the check - vtpci_init came in c52afa68 "virtio: move left PCI stuff in the right file" - Old code was eth_virtio_dev_init -> virtio_resource_init(pci_dev) - -The logic of the new patch isn't too complex, just the places don't exist -yet. So we add a semantically equivalent check just before virtio_resource_init. - -Additionally I added a message to make it more clear what happened: -EAL: PCI device 0000:00:04.0 on NUMA socket -1 -EAL: probe driver: 1af4:1000 rte_virtio_pmd -=> PMD: device not available (in use by the kernel) -EAL: Error - exiting with code: 1 - Cause: Requested device 0000:00:04.0 cannot be used - -Forwarded: n/a (already upstream) -Author: Christian Ehrhardt -Last-Update: 2016-04-19 - -From b8eb345378bdefc4c976eaaf5abb221e0aca3460 Mon Sep 17 00:00:00 2001 -From: Huawei Xie -Date: Tue, 8 Mar 2016 23:33:42 +0800 -Subject: [PATCH] pci: ignore devices already managed in Linux when mapping x86 - ioport - -call pci_ioport_map (on x86) only if the pci device is not bound -to a kernel driver. - -Signed-off-by: Huawei Xie -Acked-by: Yuanhan Liu -Acked-by: David Marchand ---- - lib/librte_eal/linuxapp/eal/eal_pci.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -Index: dpdk/drivers/net/virtio/virtio_ethdev.c -=================================================================== ---- dpdk.orig/drivers/net/virtio/virtio_ethdev.c -+++ dpdk/drivers/net/virtio/virtio_ethdev.c -@@ -1219,6 +1219,34 @@ static int virtio_resource_init(struct r - } - #endif - -+static int virtio_resource_available(struct rte_pci_device *pci_dev) -+{ -+ int ret = -1; -+ -+ /* only use virtio devices if bound on a supported or no driver -+ * backport of b8eb3453 "pci: ignore devices already managed in Linux -+ * when mapping x86" -+ * Fixes (LP #1570195) and avoids various workarounds and warnings -+ * that formerly were needed */ -+ switch (pci_dev->kdrv) { -+#ifdef VFIO_PRESENT -+ case RTE_KDRV_VFIO: -+#endif -+ case RTE_KDRV_IGB_UIO: -+ case RTE_KDRV_UIO_GENERIC: -+ case RTE_KDRV_NONE: -+ ret = 1; -+ break; -+ default: -+ RTE_LOG(ERR, PMD, "device not available for DPDK" -+ " (in use by kernel)\n"); -+ ret = -1; -+ break; -+ } -+ -+ return ret; -+} -+ - /* - * Process Virtio Config changed interrupt and call the callback - * if link state changed. -@@ -1289,6 +1317,9 @@ eth_virtio_dev_init(struct rte_eth_dev * - - pci_dev = eth_dev->pci_dev; - -+ if (virtio_resource_available(pci_dev) < 0) -+ return -1; -+ - if (virtio_resource_init(pci_dev) < 0) - return -1; - diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch deleted file mode 100644 index 48fb057..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch +++ /dev/null @@ -1,77 +0,0 @@ -Description: backport of dpdk 16.07 fix for LP: #1570466 - -Backported from this discussion -http://dpdk.org/dev/patchwork/patch/12103/ -Not accepted yet, but likely to be accepted in some form once tested and -confirmed. - -new fix also relies on a lot of new code, vhost_destroy_device looks totally -different from the former destroy_device. -History on todays function content: - 4796ad63 - original code moved from examples to lib - a90ca1a1 - this replaces ops->destroy_device with vhost_destroy_device - 71dc571e - simple check against null pointers - 45ca9c6f - this changed the code from linked list to arrays - New code cleans with: - notify_ops->destroy_device (callback into the parent) - cleanup_device was existing before even in 2.2 code - free_device as well existing before even in 2.2 code - Old code cleans with: - notify_ops->destroy_device - still there - rm_config_ll_entry -> eventually calls cleanup_device and free_device - (just in the more complex linked list way) -So the only adaption for backporting needed is to replace vhost_destroy_device -with ops->destroy_device(ctx) - -Also along the discussion vserver-fh is now initialized with -1 to avoid -accidentially deleting the first connected port if we delete another not yet -connected port. - -Forwarded: yes (based on an upstream discussion) -Author: Christian Ehrhardt -Last-Update: 2016-04-19 - -Index: dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_user/vhost-net-user.c -+++ dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c -@@ -310,6 +310,7 @@ vserver_new_vq_conn(int fd, void *dat, _ - } - - vdev_ctx.fh = fh; -+ vserver->fh = fh; - size = strnlen(vserver->path, PATH_MAX); - ops->set_ifname(vdev_ctx, vserver->path, - size); -@@ -482,6 +483,7 @@ rte_vhost_driver_register(const char *pa - } - - vserver->path = strdup(path); -+ vserver->fh = -1; - - ret = fdset_add(&g_vhost_server.fdset, vserver->listenfd, - vserver_new_vq_conn, NULL, vserver); -@@ -516,6 +518,11 @@ rte_vhost_driver_unregister(const char * - - for (i = 0; i < g_vhost_server.vserver_cnt; i++) { - if (!strcmp(g_vhost_server.server[i]->path, path)) { -+ struct vhost_device_ctx ctx; -+ -+ ctx.fh = g_vhost_server.server[i]->fh; -+ ops->destroy_device(ctx); -+ - fdset_del(&g_vhost_server.fdset, - g_vhost_server.server[i]->listenfd); - -Index: dpdk/lib/librte_vhost/vhost_user/vhost-net-user.h -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_user/vhost-net-user.h -+++ dpdk/lib/librte_vhost/vhost_user/vhost-net-user.h -@@ -43,6 +43,7 @@ - struct vhost_server { - char *path; /**< The path the uds is bind to. */ - int listenfd; /**< The listener sockfd. */ -+ uint32_t fh; - }; - - /* refer to hw/virtio/vhost-user.c */ diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-combined-shared-lib-abiversion.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-combined-shared-lib-abiversion.patch deleted file mode 100644 index de4e889..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-combined-shared-lib-abiversion.patch +++ /dev/null @@ -1,51 +0,0 @@ -Description: build: Set soabi for the combined shared library - Currently the build for the combined shared library does not set - any ABI version. Since this deviates from upstream we start with - version 0. - Probably it would be ok if upstream kept individual ABI versions - for each individual library. Then the combined one would have to - be incremented whenever any of those changes version. - Though to me it would feel more logical if there would be only - one ABI version for the whole set. -Forwarded: Not yet. Needs discussion about library versioning. -Author: Stefan Bader -Last-Update: 2015-12-01 - ---- a/mk/rte.sharelib.mk -+++ b/mk/rte.sharelib.mk -@@ -33,10 +33,12 @@ - - # VPATH contains at least SRCDIR - VPATH += $(SRCDIR) -+# The shared libs abi number. -+LIBABIVER := 0 - - ifeq ($(CONFIG_RTE_BUILD_COMBINE_LIBS),y) - ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) --LIB_ONE := lib$(RTE_LIBNAME).so -+LIB_ONE := lib$(RTE_LIBNAME).so.$(LIBABIVER) - else - LIB_ONE := lib$(RTE_LIBNAME).a - endif -@@ -54,10 +56,10 @@ - LD := $(CC) $(CPU_CFLAGS) - O_TO_S = $(LD) $(call linkerprefix,$(CPU_LDFLAGS)) \ - $(call linkerprefix,$(COMBINED_LDFLAGS)) \ -- -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) -+ -shared $(OBJS) -Wl,-soname,$(LIB_ONE) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) - else - O_TO_S = $(LD) $(CPU_LDFLAGS) $(COMBINED_LDFLAGS) \ -- -shared $(OBJS) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) -+ -shared $(OBJS) -Wl,-soname,$(LIB_ONE) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) - endif - - O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight -@@ -84,6 +86,8 @@ - @[ -d $(dir $@) ] || mkdir -p $(dir $@) - @$(SRCDIR)/scripts/merge-maps.sh > $(COMBINED_MAP) - $(O_TO_S_DO) -+ @[ -L $(RTE_OUTPUT)/lib/$(basename $(LIB_ONE)) ] || \ -+ ln -s $(LIB_ONE) $(RTE_OUTPUT)/lib/$(basename $(LIB_ONE)) - else - $(LIB_ONE): FORCE - @[ -d $(dir $@) ] || mkdir -p $(dir $@) diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-doc-installpath.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-doc-installpath.patch deleted file mode 100644 index 1cb7448..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-doc-installpath.patch +++ /dev/null @@ -1,16 +0,0 @@ -Description: build: Fix doc install path - Missing mkdir breaks building docs only -Forwarded: yes -Author: Christian Ehrhardt -Last-Update: 2016-01-18 - -diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk -index c159bf7..68e56b6 100644 ---- a/mk/rte.sdkinstall.mk -+++ b/mk/rte.sdkinstall.mk -@@ -157,4 +157,5 @@ ifneq ($(wildcard $O/doc/*/*/*pdf),) - $(Q)$(call rte_mkdir, $(DESTDIR)$(docdir)/guides) - $(Q)cp -a $O/doc/*/*/*pdf $(DESTDIR)$(docdir)/guides - endif -+ $(Q)$(call rte_mkdir, $(DESTDIR)$(datadir)) - $(Q)cp -a $(RTE_SDK)/examples $(DESTDIR)$(datadir) diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-library-linkage.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-library-linkage.patch deleted file mode 100644 index e43e232..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-library-linkage.patch +++ /dev/null @@ -1,33 +0,0 @@ -Description: build: Fix linkage of combined shared library - Currently the build for the combined shared library does not store - its own dependencies. Forcing consumers of the .so to know about internal - dependencies and adding them as -l in their compile. - This patch adds the correct linkage for the currently packaged library -Forwarded: No, upstream will solve it for DPDK 2.3 via linker script -Author: Christian Ehrhardt -Last-Update: 2016-02-24 - ---- a/mk/rte.sharelib.mk -+++ b/mk/rte.sharelib.mk -@@ -51,12 +51,20 @@ sharelib: $(LIB_ONE) FORCE - - OBJS = $(wildcard $(RTE_OUTPUT)/build/lib/*.o) - -+# fix linkage of combined shared library, so that app linking against it don't -+# need to know the internal dependencies. -+# Derived from a test run of mk/rtc.app.mk _LDLIBS-y and EXECENV_LDLIBS -+# static until moving to linker script see LP: 1547517 and LP: 1546547 for more -+# This fixes only the build path the ubuntu packaging currently passes -+MISSINGLINKAGE = -lpcap -lxenstore -lpthread $(EXECENV_LDLIBS) -+ - ifeq ($(LINK_USING_CC),1) - # Override the definition of LD here, since we're linking with CC - LD := $(CC) $(CPU_CFLAGS) - O_TO_S = $(LD) $(call linkerprefix,$(CPU_LDFLAGS)) \ - $(call linkerprefix,$(COMBINED_LDFLAGS)) \ -- -shared $(OBJS) -Wl,-soname,$(LIB_ONE) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) -+ -shared $(OBJS) $(MISSINGLINKAGE) \ -+ -Wl,-soname,$(LIB_ONE) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) - else - O_TO_S = $(LD) $(CPU_LDFLAGS) $(COMBINED_LDFLAGS) \ - -shared $(OBJS) -Wl,-soname,$(LIB_ONE) -o $(RTE_OUTPUT)/lib/$(LIB_ONE) diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-lpm-use-after-free-and-leak.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-lpm-use-after-free-and-leak.patch deleted file mode 100644 index 618c212..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-lpm-use-after-free-and-leak.patch +++ /dev/null @@ -1,75 +0,0 @@ -Description: lpm/lpm6: fix use after free and missing frees - -In certain autotests lpm->max_rules turned out to be non initialized. -Also lpm6 autotests failed with the default alloc of 512M Memory. -While >=2500M was a workaround it became clear while debugging that it -had a leak. - -That eventually led to the identification of various use after free and leaks -in the lpm/lpm6 code. - -Along that is also makes the RTE_LOG messages of the failed allocation unique. - -The patches are upstream accepted in 4 pieces now. -This combines them plus a minor tweak currently in review at -http://dpdk.org/dev/patchwork/patch/12025/ - -Forwarded: Yes - accepted 768f0e45 732a5b5c 34c4b584 d4c18f0a -Author: Christian Ehrhardt -Last-Update: 2016-04-12 - -Index: dpdk/lib/librte_lpm/rte_lpm.c -=================================================================== ---- dpdk.orig/lib/librte_lpm/rte_lpm.c -+++ dpdk/lib/librte_lpm/rte_lpm.c -@@ -236,13 +236,10 @@ rte_lpm_free(struct rte_lpm *lpm) - if (te->data == (void *) lpm) - break; - } -- if (te == NULL) { -- rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK); -- return; -+ if (te != NULL) { -+ TAILQ_REMOVE(lpm_list, te, next); - } - -- TAILQ_REMOVE(lpm_list, te, next); -- - rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK); - - rte_free(lpm); -Index: dpdk/lib/librte_lpm/rte_lpm6.c -=================================================================== ---- dpdk.orig/lib/librte_lpm/rte_lpm6.c -+++ dpdk/lib/librte_lpm/rte_lpm6.c -@@ -206,8 +206,9 @@ rte_lpm6_create(const char *name, int so - (size_t)rules_size, RTE_CACHE_LINE_SIZE, socket_id); - - if (lpm->rules_tbl == NULL) { -- RTE_LOG(ERR, LPM, "LPM memory allocation failed\n"); -+ RTE_LOG(ERR, LPM, "LPM rules_tbl allocation failed\n"); - rte_free(lpm); -+ lpm = NULL; - rte_free(te); - goto exit; - } -@@ -277,15 +278,14 @@ rte_lpm6_free(struct rte_lpm6 *lpm) - if (te->data == (void *) lpm) - break; - } -- if (te == NULL) { -- rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK); -- return; -- } - -- TAILQ_REMOVE(lpm_list, te, next); -+ if (te != NULL) { -+ TAILQ_REMOVE(lpm_list, te, next); -+ } - - rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK); - -+ rte_free(lpm->rules_tbl); - rte_free(lpm); - rte_free(te); - } diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-testpmd-without-xen.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-testpmd-without-xen.patch deleted file mode 100644 index a2879c8..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-testpmd-without-xen.patch +++ /dev/null @@ -1,77 +0,0 @@ -Description: build: avoid testpmd only working in XEN - -With LIBRTE_PMD_XENVIRT enabled testpmd is built in a way to ONLY work -in XEN environments. -It will surface as: - PMD: gntalloc: ioctl error - EAL: Error - exiting with code: 1 - Cause: Creation of mbuf pool for socket 0 failed - -There could be a complex solution checking if this is a Xen env via -something like: - #include - struct xs_handle *xsh = NULL; - xsh = xs_open(XS_OPEN_READONLY); - check for xsh being NULL ... - -But I see no reason to go so complex and instead the patch goes the -simple and more readable way of just falling back to the normal -allocation if the xen based allocation failed. - -Forwarded: Yes - Accepted as bece7b6cf6849331c1817e1034c03fab251952a7 -Author: Christian Ehrhardt -Last-Update: 2016-04-12 - -Index: dpdk/app/test-pmd/testpmd.c -=================================================================== ---- dpdk.orig/app/test-pmd/testpmd.c -+++ dpdk/app/test-pmd/testpmd.c -@@ -410,7 +410,7 @@ mbuf_pool_create(uint16_t mbuf_seg_size, - unsigned int socket_id) - { - char pool_name[RTE_MEMPOOL_NAMESIZE]; -- struct rte_mempool *rte_mp; -+ struct rte_mempool *rte_mp = NULL; - uint32_t mb_size; - - mb_size = sizeof(struct rte_mbuf) + mbuf_seg_size; -@@ -423,24 +423,23 @@ mbuf_pool_create(uint16_t mbuf_seg_size, - rte_pktmbuf_pool_init, NULL, - rte_pktmbuf_init, NULL, - socket_id, 0); -- -- -- --#else -- if (mp_anon != 0) -- rte_mp = mempool_anon_create(pool_name, nb_mbuf, mb_size, -- (unsigned) mb_mempool_cache, -- sizeof(struct rte_pktmbuf_pool_private), -- rte_pktmbuf_pool_init, NULL, -- rte_pktmbuf_init, NULL, -- socket_id, 0); -- else -- /* wrapper to rte_mempool_create() */ -- rte_mp = rte_pktmbuf_pool_create(pool_name, nb_mbuf, -- mb_mempool_cache, 0, mbuf_seg_size, socket_id); -- - #endif - -+ /* if the former XEN allocation failed fall back to normal allocation */ -+ if (rte_mp == NULL) { -+ if (mp_anon != 0) -+ rte_mp = mempool_anon_create(pool_name, nb_mbuf, -+ mb_size, (unsigned) mb_mempool_cache, -+ sizeof(struct rte_pktmbuf_pool_private), -+ rte_pktmbuf_pool_init, NULL, -+ rte_pktmbuf_init, NULL, -+ socket_id, 0); -+ else -+ /* wrapper to rte_mempool_create() */ -+ rte_mp = rte_pktmbuf_pool_create(pool_name, nb_mbuf, -+ mb_mempool_cache, 0, mbuf_seg_size, socket_id); -+ } -+ - if (rte_mp == NULL) { - rte_exit(EXIT_FAILURE, "Creation of mbuf pool for socket %u " - "failed\n", socket_id); diff --git a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-vhost-user-socket-permission.patch b/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-vhost-user-socket-permission.patch deleted file mode 100644 index fb41a7b..0000000 --- a/ovs_build/dpdk_2.2.0/debian/patches/ubuntu-fix-vhost-user-socket-permission.patch +++ /dev/null @@ -1,350 +0,0 @@ -Description: eal: provide option to set vhost_user socket owner/permissions - -The API doesn't hold a way to specify a owner/permission set for vhost_user -created sockets. - -Projects consuming DPDK started to do 'their own workarounds' like openvswitch -https://patchwork.ozlabs.org/patch/559043/ -https://patchwork.ozlabs.org/patch/559045/ -But for this specific example they are blocked/stalled behind a bigger -rework (https://patchwork.ozlabs.org/patch/604898/). - -We need something now for existing code linking against DPDK. That implies to -avoid changing API/ABI. So I created a DPDK EAL commandline option based ideas -in the former patches. - -Fixes LP: #1546565 - -Forwarded: yes -Author: Christian Ehrhardt -Last-Update: 2016-04-24 - -Index: dpdk/lib/librte_eal/common/eal_common_options.c -=================================================================== ---- dpdk.orig/lib/librte_eal/common/eal_common_options.c -+++ dpdk/lib/librte_eal/common/eal_common_options.c -@@ -95,6 +95,8 @@ eal_long_options[] = { - {OPT_VFIO_INTR, 1, NULL, OPT_VFIO_INTR_NUM }, - {OPT_VMWARE_TSC_MAP, 0, NULL, OPT_VMWARE_TSC_MAP_NUM }, - {OPT_XEN_DOM0, 0, NULL, OPT_XEN_DOM0_NUM }, -+ {OPT_VHOST_OWNER, 1, NULL, OPT_VHOST_OWNER_NUM }, -+ {OPT_VHOST_PERM, 1, NULL, OPT_VHOST_PERM_NUM }, - {0, 0, NULL, 0 } - }; - -@@ -153,6 +155,8 @@ eal_reset_internal_config(struct interna - #endif - internal_cfg->vmware_tsc_map = 0; - internal_cfg->create_uio_dev = 0; -+ internal_cfg->vhost_sock_owner = NULL; -+ internal_cfg->vhost_sock_perm = NULL; - } - - static int -Index: dpdk/lib/librte_eal/common/eal_internal_cfg.h -=================================================================== ---- dpdk.orig/lib/librte_eal/common/eal_internal_cfg.h -+++ dpdk/lib/librte_eal/common/eal_internal_cfg.h -@@ -83,6 +83,8 @@ struct internal_config { - volatile enum rte_intr_mode vfio_intr_mode; - const char *hugefile_prefix; /**< the base filename of hugetlbfs files */ - const char *hugepage_dir; /**< specific hugetlbfs directory to use */ -+ const char *vhost_sock_owner; /**< owner:group of vhost_user sockets */ -+ const char *vhost_sock_perm; /**< permissions of vhost_user sockets */ - - unsigned num_hugepage_sizes; /**< how many sizes on this system */ - struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES]; -Index: dpdk/lib/librte_eal/common/eal_options.h -=================================================================== ---- dpdk.orig/lib/librte_eal/common/eal_options.h -+++ dpdk/lib/librte_eal/common/eal_options.h -@@ -83,6 +83,10 @@ enum { - OPT_VMWARE_TSC_MAP_NUM, - #define OPT_XEN_DOM0 "xen-dom0" - OPT_XEN_DOM0_NUM, -+#define OPT_VHOST_OWNER "vhost-owner" -+ OPT_VHOST_OWNER_NUM, -+#define OPT_VHOST_PERM "vhost-perm" -+ OPT_VHOST_PERM_NUM, - OPT_LONG_MAX_NUM - }; - -Index: dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c -=================================================================== ---- dpdk.orig/lib/librte_vhost/vhost_user/vhost-net-user.c -+++ dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c -@@ -51,6 +51,8 @@ - #include "vhost-net.h" - #include "virtio-net-user.h" - -+#include -+ - #define MAX_VIRTIO_BACKLOG 128 - - static void vserver_new_vq_conn(int fd, void *data, int *remove); -@@ -482,6 +484,8 @@ rte_vhost_driver_register(const char *pa - return -1; - } - -+ rte_eal_set_socket_permissions(path); -+ - vserver->path = strdup(path); - vserver->fh = -1; - -Index: dpdk/lib/librte_eal/linuxapp/eal/eal.c -=================================================================== ---- dpdk.orig/lib/librte_eal/linuxapp/eal/eal.c -+++ dpdk/lib/librte_eal/linuxapp/eal/eal.c -@@ -53,6 +53,9 @@ - #if defined(RTE_ARCH_X86_64) || defined(RTE_ARCH_I686) - #include - #endif -+#include -+#include -+#include - - #include - #include -@@ -343,6 +346,8 @@ eal_usage(const char *prgname) - " --"OPT_CREATE_UIO_DEV" Create /dev/uioX (usually done by hotplug)\n" - " --"OPT_VFIO_INTR" Interrupt mode for VFIO (legacy|msi|msix)\n" - " --"OPT_XEN_DOM0" Support running on Xen dom0 without hugetlbfs\n" -+ " --"OPT_VHOST_OWNER" Create vhost-user sockets with this owner:group\n" -+ " --"OPT_VHOST_PERM" Create vhost-user sockets with these permissions\n" - "\n"); - /* Allow the application to print its usage message too if hook is set */ - if ( rte_application_usage_hook ) { -@@ -618,6 +623,14 @@ eal_parse_args(int argc, char **argv) - internal_config.create_uio_dev = 1; - break; - -+ case OPT_VHOST_OWNER_NUM: -+ internal_config.vhost_sock_owner = optarg; -+ break; -+ -+ case OPT_VHOST_PERM_NUM: -+ internal_config.vhost_sock_perm = optarg; -+ break; -+ - default: - if (opt < OPT_LONG_MIN_NUM && isprint(opt)) { - RTE_LOG(ERR, EAL, "Option %c is not supported " -@@ -932,3 +945,172 @@ rte_eal_check_module(const char *module_ - /* Module has been found */ - return 1; - } -+ -+/* Try to double the size of '*buf', return true -+ * if successful, and '*sizep' will be updated with -+ * the new size. Otherwise, return false. */ -+static int -+enlarge_buffer(char **buf, size_t *sizep) -+{ -+ size_t newsize = *sizep * 2; -+ -+ if (newsize > *sizep) { -+ *buf = realloc(*buf, newsize); -+ *sizep = newsize; -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static int -+get_owners_from_str(const char *user_spec, uid_t *uid, gid_t *gid) -+{ -+ size_t bufsize = 4096; -+ -+ char *pos = strchr(user_spec, ':'); -+ user_spec += strspn(user_spec, " \t\r\n"); -+ size_t len = pos ? (size_t)(pos - user_spec) : strlen(user_spec); -+ -+ char *buf = NULL; -+ struct passwd pwd, *res; -+ int e; -+ -+ buf = malloc(bufsize); -+ char *user_search = NULL; -+ if (len) { -+ user_search = malloc(len + 1); -+ memcpy(user_search, user_spec, len); -+ user_search[len] = '\0'; -+ while ((e = getpwnam_r(user_search, &pwd, buf, bufsize, &res)) == ERANGE) { -+ if (!enlarge_buffer(&buf, &bufsize)) { -+ break; -+ } -+ } -+ -+ if (e != 0) { -+ RTE_LOG(ERR, EAL,"Failed to retrive user %s's uid (%s), aborting.", -+ user_search, strerror(e)); -+ goto release; -+ } -+ if (res == NULL) { -+ RTE_LOG(ERR, EAL,"user %s not found, aborting.", -+ user_search); -+ e = -1; -+ goto release; -+ } -+ } else { -+ /* User name is not specified, use current user. */ -+ while ((e = getpwuid_r(getuid(), &pwd, buf, bufsize, &res)) == ERANGE) { -+ if (!enlarge_buffer(&buf, &bufsize)) { -+ break; -+ } -+ } -+ -+ if (e != 0) { -+ RTE_LOG(ERR, EAL,"Failed to retrive current user's uid " -+ "(%s), aborting.", strerror(e)); -+ goto release; -+ } -+ user_search = strdup(pwd.pw_name); -+ } -+ -+ if (uid) -+ *uid = pwd.pw_uid; -+ -+ free(buf); -+ buf = NULL; -+ -+ if (pos) { -+ char *grpstr = pos + 1; -+ grpstr += strspn(grpstr, " \t\r\n"); -+ -+ if (*grpstr) { -+ struct group grp, *res; -+ -+ bufsize = 4096; -+ buf = malloc(bufsize); -+ while ((e = getgrnam_r(grpstr, &grp, buf, bufsize, &res)) -+ == ERANGE) { -+ if (!enlarge_buffer(&buf, &bufsize)) { -+ break; -+ } -+ } -+ -+ if (e) { -+ RTE_LOG(ERR, EAL,"Failed to get group entry for %s, " -+ "(%s), aborting.", grpstr, -+ strerror(e)); -+ goto release; -+ } -+ if (res == NULL) { -+ RTE_LOG(ERR, EAL,"Group %s not found, aborting.", -+ grpstr); -+ e = -1; -+ goto release; -+ } -+ -+ if (gid) -+ *gid = grp.gr_gid; -+ } -+ } -+ -+ release: -+ free(buf); -+ free(user_search); -+ return e; -+} -+ -+static void -+vhost_set_permissions(const char *vhost_sock_location) -+{ -+ unsigned long int mode = strtoul(internal_config.vhost_sock_perm, NULL, 0); -+ int err = chmod(vhost_sock_location, (mode_t)mode); -+ if (err) { -+ RTE_LOG(ERR, EAL,"vhost-user socket cannot set" -+ " permissions to %s (%s).\n", -+ internal_config.vhost_sock_perm, strerror(err)); -+ return; -+ } -+ RTE_LOG(INFO, EAL,"Socket %s changed permissions" -+ " to %s\n", vhost_sock_location, -+ internal_config.vhost_sock_perm); -+} -+ -+static void -+vhost_set_ownership(const char *vhost_sock_location) -+{ -+ uid_t vhuid=0; -+ gid_t vhgid=0; -+ -+ if (get_owners_from_str(internal_config.vhost_sock_owner, &vhuid, &vhgid)) { -+ RTE_LOG(ERR, EAL,"vhost-user socket unable to get" -+ " specified user/group: %s\n", -+ internal_config.vhost_sock_owner); -+ return; -+ } -+ -+ int err = chown(vhost_sock_location, vhuid, vhgid); -+ if (err) { -+ RTE_LOG(ERR, EAL,"vhost-user socket unable to set" -+ " ownership to %s (%s).\n", -+ internal_config.vhost_sock_owner, strerror(err)); -+ return; -+ } -+ -+ RTE_LOG(INFO, EAL,"Socket %s changed ownership" -+ " to %s.\n", vhost_sock_location, -+ internal_config.vhost_sock_owner); -+} -+ -+void -+rte_eal_set_socket_permissions(const char *path) -+{ -+ if (internal_config.vhost_sock_perm) { -+ vhost_set_permissions(path); -+ } -+ -+ if (internal_config.vhost_sock_owner) { -+ vhost_set_ownership(path); -+ } -+} -Index: dpdk/lib/librte_eal/common/include/rte_eal.h -=================================================================== ---- dpdk.orig/lib/librte_eal/common/include/rte_eal.h -+++ dpdk/lib/librte_eal/common/include/rte_eal.h -@@ -234,6 +234,11 @@ static inline int rte_gettid(void) - return RTE_PER_LCORE(_thread_id); - } - -+/** -+ * Set owner/permissions on sockets if requested on EAL commandline -+ */ -+void rte_eal_set_socket_permissions(const char *); -+ - #ifdef __cplusplus - } - #endif -Index: dpdk/doc/guides/testpmd_app_ug/run_app.rst -=================================================================== ---- dpdk.orig/doc/guides/testpmd_app_ug/run_app.rst -+++ dpdk/doc/guides/testpmd_app_ug/run_app.rst -@@ -156,6 +156,25 @@ See the DPDK Getting Started Guides for - - Use malloc instead of hugetlbfs. - -+* ``--vhost-owner`` -+ -+ When creating vhost_user sockets change owner and group to the specified value. -+ This can be given as ``user:group``, but also only ``user`` or ``:group`` are supported. -+ -+ Examples:: -+ -+ --vhost-owner 'libvirt-qemu:kvm' -+ --vhost-owner 'libvirt-qemu' -+ --vhost-owner ':kvm' -+ -+* ``--vhost-perm`` -+ -+ When creating vhost_user sockets set them up with these permissions. -+ -+ For example:: -+ -+ --vhost-perm '0664' -+ - - Testpmd Command-line Options - ---------------------------- diff --git a/ovs_build/dpdk_2.2.0/debian/rules b/ovs_build/dpdk_2.2.0/debian/rules deleted file mode 100755 index a479f02..0000000 --- a/ovs_build/dpdk_2.2.0/debian/rules +++ /dev/null @@ -1,159 +0,0 @@ -#!/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_2.2.0/debian/tests/check-dpdk-supported-arch.sh b/ovs_build/dpdk_2.2.0/debian/tests/check-dpdk-supported-arch.sh deleted file mode 100644 index 4361d2d..0000000 --- a/ovs_build/dpdk_2.2.0/debian/tests/check-dpdk-supported-arch.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/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_2.2.0/debian/tests/control b/ovs_build/dpdk_2.2.0/debian/tests/control deleted file mode 100644 index addb2d5..0000000 --- a/ovs_build/dpdk_2.2.0/debian/tests/control +++ /dev/null @@ -1,8 +0,0 @@ -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_2.2.0/debian/tests/test-initscripts b/ovs_build/dpdk_2.2.0/debian/tests/test-initscripts deleted file mode 100644 index f465d6d..0000000 --- a/ovs_build/dpdk_2.2.0/debian/tests/test-initscripts +++ /dev/null @@ -1,143 +0,0 @@ -#!/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_2.2.0/debian/tests/test-linkage b/ovs_build/dpdk_2.2.0/debian/tests/test-linkage deleted file mode 100644 index 30d7642..0000000 --- a/ovs_build/dpdk_2.2.0/debian/tests/test-linkage +++ /dev/null @@ -1,41 +0,0 @@ -#!/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_2.2.0/debian/watch b/ovs_build/dpdk_2.2.0/debian/watch deleted file mode 100644 index 418ce0c..0000000 --- a/ovs_build/dpdk_2.2.0/debian/watch +++ /dev/null @@ -1,2 +0,0 @@ -version=3 -http://www.dpdk.org/download /browse/dpdk/snapshot/dpdk-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/compat b/ovs_build/openvswitch-dpdk_2.5.90/debian/compat deleted file mode 100644 index ec63514..0000000 --- a/ovs_build/openvswitch-dpdk_2.5.90/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/source/format b/ovs_build/openvswitch-dpdk_2.5.90/debian/source/format deleted file mode 100644 index 163aaf8..0000000 --- a/ovs_build/openvswitch-dpdk_2.5.90/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/automake.mk b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/automake.mk deleted file mode 100644 index 95e07dd..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/automake.mk +++ /dev/null @@ -1,19 +0,0 @@ -check-debian-changelog-version: - @DEB_VERSION=`echo '$(VERSION)' | sed 's/pre/~pre/'`; \ - if $(FGREP) '($(DEB_VERSION)' $(srcdir)/debian/changelog >/dev/null; \ - then \ - :; \ - else \ - echo "Update debian/changelog to mention version $(VERSION)"; \ - exit 1; \ - fi -ALL_LOCAL += check-debian-changelog-version -DIST_HOOKS += check-debian-changelog-version - -$(srcdir)/debian/copyright: AUTHORS debian/copyright.in - $(AM_V_GEN) \ - { sed -n -e '/%AUTHORS%/q' -e p < $(srcdir)/debian/copyright.in; \ - sed '1,/^$$/d' $(srcdir)/AUTHORS | \ - sed -n -e '/^$$/q' -e 's/^/ /p'; \ - sed -e '1,/%AUTHORS%/d' $(srcdir)/debian/copyright.in; \ - } > $@ diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/changelog b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/changelog deleted file mode 100644 index 5c71403..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/changelog +++ /dev/null @@ -1,3 +0,0 @@ -openvswitch-dpdk (2.5.90-1.nsh) unstable; urgency=low - * Support NSH - -- Open vSwitch team Sat, 03 Sep 2016 20:00:00 +0200 diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/compat b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/compat deleted file mode 100644 index ec63514..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/control b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/control deleted file mode 100644 index e7171b9..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/control +++ /dev/null @@ -1,54 +0,0 @@ -Source: openvswitch-dpdk -Section: net -Priority: extra -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Open vSwitch developers -Uploaders: Ben Pfaff , - Simon Horman , -Build-Depends: autoconf (>= 2.64), - automake (>= 1.10) | automake1.10, - bzip2, - debhelper (>= 9~), - dh-autoreconf, - dh-systemd (>= 1.5), - graphviz, - libdpdk-dev, - libfuse-dev, - libssl-dev, - libtool, - openssl, - procps, - python-all (>= 2.6.6-3~), - python-qt4, - python-twisted-conch, - python-zopeinterface, -Standards-Version: 3.9.6 -Homepage: http://openvswitch.org/ -XS-Testsuite: autopkgtest - -Package: openvswitch-switch-dpdk -Architecture: i386 amd64 -Depends: dpdk, - openvswitch-switch (>= 2.4.0), - ${misc:Depends}, - ${python:Depends}, - ${shlibs:Depends}, -Enhances: openvswitch-switch, -Description: DPDK enabled Open vSwitch switch implementation - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - openvswitch-switch provides the userspace components and utilities for - the Open vSwitch kernel-based switch. - . - 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. - . - This package provides a DPDK enabled implementation of the ovs-vswitchd - binary. diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/copyright b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/copyright deleted file mode 100644 index d840e4e..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/copyright +++ /dev/null @@ -1,716 +0,0 @@ -The original sources for this package can be found at: - - http://openvswitch.org/ - -Upstream Authors (from AUTHORS): - -%AUTHORS% - -Upstream Copyright Holders: - - Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. - Copyright (c) 2010 Jean Tourrilhes - HP-Labs. - Copyright (c) 2008,2009,2010 Citrix Systems, Inc. - and authors listed above. - Copyright (c) 2011 Gaetano Catalli - Copyright (C) 2000-2003 Geoffrey Wossum (gwossum@acm.org) - Copyright (C) 2000 The NetBSD Foundation, Inc. - Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - Copyright (c) 1982, 1986, 1990, 1993 The Regents of the University of California. - Copyright (c) 2008, 2012 Vincent Bernat - Copyright (c) 2014 Michael Chapman - Copyright (c) 2014 WindRiver, Inc. - Copyright (c) 2014 Avaya, Inc. - -License: - -* The following components are licensed under the - GNU Lesser General Public License version 2.1 only - with the exception clause below as a pre-amble. - - xenserver/etc_xensource_scripts_vif - xenserver/opt_xensource_libexec_InterfaceReconfigure.py - xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py - xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py - xenserver/opt_xensource_libexec_interface-reconfigure - xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py - - * These components are only distributed in the source package. - They do not appear in any binary packages. - - On Debian systems, the complete text of the - GNU Lesser General Public License version 2.1 can be found in - `/usr/share/common-licenses/LGPL-2.1' - - The exception clause pre-amble reads: - - As a special exception to the GNU Lesser General Public License, you - may link, statically or dynamically, a "work that uses the Library" - with a publicly distributed version of the Library to produce an - executable file containing portions of the Library, and distribute - that executable file under terms of your choice, without any of the - additional requirements listed in clause 6 of the GNU Lesser General - Public License. By "a publicly distributed version of the Library", - we mean either the unmodified Library as distributed, or a - modified version of the Library that is distributed under the - conditions defined in clause 3 of the GNU Library General Public - License. This exception does not however invalidate any other reasons - why the executable file might be covered by the GNU Lesser General - Public License. - -* The following components are licensed under the - GNU Lesser General Public License version 2.1. - - utilities/bugtool/ovs-bugtool - utilities/bugtool/ovs-bugtool-* - utilities/bugtool/plugins/kernel-info/openvswitch.xml - utilities/bugtool/plugins/network-status/openvswitch.xml - utilities/bugtool/plugins/system-configuration.xml - utilities/bugtool/plugins/system-configuration/openvswitch.xml - - On Debian systems, the complete text of the - GNU Lesser General Public License version 2.1 can be found in - `/usr/share/common-licenses/LGPL-2.1' - -* The following component is licensed under the GNU General Public License - version 2. - - datapath/ - - On Debian systems, the complete text of the GNU General Public License - version 2 can be found in `/usr/share/common-licenses/GPL-2' - -* The following file is licensed under the GNU General Public License - version 2. - - build-aux/cccl - -* The following files are licensed under the 2-clause BSD license. - - lib/getopt_long.c - include/windows/getopt.h - -* The following files are licensed under the 3-clause BSD-license - - include/windows/netinet/icmp6.h - include/windows/netinet/ip6.h - lib/strsep.c - -* The following components are dual-licensed under the - GNU General Public License version 2 and the Apache License Version 2.0. - - datapath/linux/compat/include/linux/openvswitch.h - - On Debian systems, the complete text of the GNU General Public License - version 2 can be found in `/usr/share/common-licenses/GPL-2'. - On Debian systems, the complete text of the Apache License version 2.0 - can be found in '/usr/share/common-licenses/Apache-2.0'. - -* The following components are licensed under the terms of either the - Sun Industry Standard Source License 1.1 or the InMon sFlow License: - - lib/sflow.h - lib/sflow_agent.c - lib/sflow_api.h - lib/sflow_poller.c - lib/sflow_receiver.c - lib/sflow_sampler.c - - These licenses are available, respectively, the following URLs: - - http://host-sflow.sourceforge.net/sissl.html - http://www.inmon.com/technology/sflowlicense.txt - - The full text of each license is also appended to the end of this - file. - -* The following components are licensed for use as desired without restriction: - - lib/crc32c.c - -* The following components are licensed under the - Python Software Foundation License Version 2. - - python/compat/uuid.py - python/compat/argparse.py - - * These components are only distributed in the source package. - They do not appear in any binary packages. - - PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 - -------------------------------------------- - - 1. This LICENSE AGREEMENT is between the Python Software Foundation - ("PSF"), and the Individual or Organization ("Licensee") accessing and - otherwise using this software ("Python") in source or binary form and - its associated documentation. - - 2. Subject to the terms and conditions of this License Agreement, PSF - hereby grants Licensee a nonexclusive, royalty-free, world-wide - license to reproduce, analyze, test, perform and/or display publicly, - prepare derivative works, distribute, and otherwise use Python - alone or in any derivative version, provided, however, that PSF's - License Agreement and PSF's notice of copyright, i.e., "Copyright (c) - 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation; - All Rights Reserved" are retained in Python alone or in any derivative - version prepared by Licensee. - - 3. In the event Licensee prepares a derivative work that is based on - or incorporates Python or any part thereof, and wants to make - the derivative work available to others as provided herein, then - Licensee hereby agrees to include in any such work a brief summary of - the changes made to Python. - - 4. PSF is making Python available to Licensee on an "AS IS" - basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR - IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND - DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS - FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT - INFRINGE ANY THIRD PARTY RIGHTS. - - 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON - FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS - A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, - OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - - 6. This License Agreement will automatically terminate upon a material - breach of its terms and conditions. - - 7. Nothing in this License Agreement shall be deemed to create any - relationship of agency, partnership, or joint venture between PSF and - Licensee. This License Agreement does not grant permission to use PSF - trademarks or trade name in a trademark sense to endorse or promote - products or services of Licensee, or any third party. - - 8. By copying, installing or otherwise using Python, Licensee - agrees to be bound by the terms and conditions of this License - Agreement. - -* lib/ovs.tmac in the source distribution, and manpages in the - binaries, includes troff macros from groff 1.21 that contain the - following notice: - - .\" an-ext.tmac - .\" - .\" Written by Eric S. Raymond - .\" Werner Lemberg - .\" - .\" Version 2007-Feb-02 - .\" - .\" Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. - .\" You may freely use, modify and/or distribute this file. - -* m4/absolute-header.m4, by Derek Price, and m4/include_next.m4, by - Paul Eggert and Derek Price bear the following notices: - - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is free software; the Free Software Foundation - gives unlimited permission to copy and/or distribute it, - with or without modifications, as long as this notice is preserved. - -* The following files are licensed under the ISC-license - - lib/lldp/aa-structs.h - lib/lldp/lldpd.c - lib/lldp/lldpd.h - lib/lldp/lldpd-structs.c - lib/lldp/lldpd-structs.h - lib/lldp/lldp.c - lib/lldp/lldp-tlv.h - lib/lldp/lldp-const.h - -* All other components of this package are licensed under - The Apache License Version 2.0. - - On Debian systems, the complete text of the Apache License version 2.0 - can be found in '/usr/share/common-licenses/Apache-2.0'. - ----------------------------------------------------------------------- - -Retrieved from http://host-sflow.sourceforge.net/sissl.html, 2011-12-12: - - Sun Industry Standards Source License - Version 1.1 - - 1.0 DEFINITIONS - - 1.1 "Commercial Use" means distribution or otherwise making the - Original Code available to a third party. - - 1.2 "Contributor Version" means the combination of the Original Code, - and the Modifications made by that particular Contributor. - - 1.3 "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.4 "Executable" means Original Code in any form other than Source - Code. - - 1.5 "Initial Developer" means the individual or entity identified as - the Initial Developer in the Source Code notice required by Exhibit A. - - 1.6 "Larger Work" means a work which combines Original Code or portions - thereof with code not governed by the terms of this License. - - 1.7 "License" means this document. - - 1.8 "Licensable" means having the right to grant, to the maximum extent - possible, whether at the time of the initial grant or subsequently - acquired, any and all of the rights conveyed herein. - - 1.9 "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. A Modification is: - - A. Any addition to or deletion from the contents of a file containing - Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or previous - Modifications. - - 1.10 "Original Code" means Source Code of computer software code which - is described in the Source Code notice required by Exhibit A as - Original Code. - - 1.11 "Patent Claims" means any patent claim(s), now owned or hereafter - acquired, including without limitation, method, process, and apparatus - claims, in any patent Licensable by grantor. - - 1.12 "Source Code" means the preferred form of the Original Code for - making modifications to it, including all modules it contains, plus any - associated interface definition files, or scripts used to control - compilation and installation of an Executable. - - 1.13 "Standards" means the standards identified in Exhibit B. - - 1.14 "You" (or "Your") means an individual or a legal entity exercising - rights under, and complying with all of the terms of, this License or a - future version of this License issued under Section 6.1. For legal - entities, "You'' includes any entity which controls, is controlled by, - or is under common control with You. For purposes of this definition, - "control'' means (a) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (b) ownership of more than fifty percent (50%) of the - outstanding shares or beneficial ownership of such entity. - - 2.0 SOURCE CODE LICENSE - - 2.1 The Initial Developer Grant - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - - (a) under intellectual property rights (other than patent or trademark) - Licensable by Initial Developer to use, reproduce, modify, display, - perform, sublicense and distribute the Original Code (or portions - thereof) with or without Modifications, and/or as part of a Larger - Work; and - - (b) under Patents Claims infringed by the making, using or selling of - Original Code, to make, have made, use, practice, sell, and offer for - sale, and/or otherwise dispose of the Original Code (or portions - thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are effective - on the date Initial Developer first distributes Original Code under the - terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is granted: - 1) for code that You delete from the Original Code; 2) separate from - the Original Code; or 3) for infringements caused by: i) the - modification of the Original Code or ii) the combination of the - Original Code with other software or devices, including but not limited - to Modifications. - 3.0 DISTRIBUTION OBLIGATIONS - - 3.1 Application of License. - The Source Code version of Original Code may be distributed only under - the terms of this License or a future version of this License released - under Section 6.1, and You must include a copy of this License with - every copy of the Source Code You distribute. You may not offer or - impose any terms on any Source Code version that alters or restricts - the applicable version of this License or the recipients' rights - hereunder. Your license for shipment of the Contributor Version is - conditioned upon Your full compliance with this Section. The - Modifications which You create must comply with all requirements set - out by the Standards body in effect one hundred twenty (120) days - before You ship the Contributor Version. In the event that the - Modifications do not meet such requirements, You agree to publish - either (i) any deviation from the Standards protocol resulting from - implementation of Your Modifications and a reference implementation of - Your Modifications or (ii) Your Modifications in Source Code form, and - to make any such deviation and reference implementation or - Modifications available to all third parties under the same terms as - this license on a royalty free basis within thirty (30) days of Your - first customer shipment of Your Modifications. - - 3.2 Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely to - look for such a notice. If You created one or more Modification(s) You - may add Your name as a Contributor to the notice described in Exhibit - A. You must also duplicate this License in any documentation for the - Source Code where You describe recipients' rights or ownership rights - relating to Initial Code. You may choose to offer, and to charge a fee - for, warranty, support, indemnity or liability obligations to one or - more recipients of Your version of the Code. However, You may do so - only on Your own behalf, and not on behalf of the Initial Developer. - You must make it absolutely clear than any such warranty, support, - indemnity or liability obligation is offered by You alone, and You - hereby agree to indemnify the Initial Developer for any liability - incurred by the Initial Developer as a result of warranty, support, - indemnity or liability terms You offer. - - 3.3 Distribution of Executable Versions. - You may distribute Original Code in Executable and Source form only if - the requirements of Sections 3.1 and 3.2 have been met for that - Original Code, and if You include a notice stating that the Source Code - version of the Original Code is available under the terms of this - License. The notice must be conspicuously included in any notice in an - Executable or Source versions, related documentation or collateral in - which You describe recipients' rights relating to the Original Code. - You may distribute the Executable and Source versions of Your version - of the Code or ownership rights under a license of Your choice, which - may contain terms different from this License, provided that You are in - compliance with the terms of this License. If You distribute the - Executable and Source versions under a different license You must make - it absolutely clear that any terms which differ from this License are - offered by You alone, not by the Initial Developer. You hereby agree to - indemnify the Initial Developer for any liability incurred by the - Initial Developer as a result of any such terms You offer. - - 3.4 Larger Works. - You may create a Larger Work by combining Original Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Original Code. - - 4.0 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Original Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.2 and must be - included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - - 5.0 APPLICATION OF THIS LICENSE - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Modifications as set - out in Section 3.1. - - 6.0 VERSIONS OF THE LICENSE - - 6.1 New Versions. - Sun may publish revised and/or new versions of the License from time to - time. Each version will be given a distinguishing version number. - - 6.2 Effect of New Versions. - Once Original Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Original Code under the terms - of any subsequent version of the License published by Sun. No one other - than Sun has the right to modify the terms applicable to Original Code. - - 7.0 DISCLAIMER OF WARRANTY - - ORIGINAL CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE ORIGINAL CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE ORIGINAL CODE - IS WITH YOU. SHOULD ANY ORIGINAL CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER) ASSUME THE COST OF ANY NECESSARY - SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY - CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY ORIGINAL - CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - - 8.0 TERMINATION - - 8.1 This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Original Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2 In the event of termination under Section 8.1 above, all end user - license agreements (excluding distributors and resellers) which have - been validly granted by You or any distributor hereunder prior to - termination shall survive termination. - - 9.0 LIMIT OF LIABILITY - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF ORIGINAL CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY - INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS - EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - - 10.0 U.S. GOVERNMENT END USERS - - U.S. Government: If this Software is being acquired by or on behalf of - the U.S. Government or by a U.S. Government prime contractor or - subcontractor (at any tier), then the Government's rights in the - Software and accompanying documentation shall be only as set forth in - this license; this is in accordance with 48 C.F.R. 227.7201 through - 227.7202-4 (for Department of Defense (DoD) acquisitions) and with 48 - C.F.R. 2.101 and 12.212 (for non-DoD acquisitions). - - 11.0 MISCELLANEOUS - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if any, - provides otherwise), excluding its conflict-of-law provisions. With - respect to disputes in which at least one party is a citizen of, or an - entity chartered or registered to do business in the United States of - America, any litigation relating to this License shall be subject to - the jurisdiction of the Federal Courts of the Northern District of - California, with venue lying in Santa Clara County, California, with - the losing party responsible for costs, including without limitation, - court costs and reasonable attorneys' fees and expenses. The - application of the United Nations Convention on Contracts for the - International Sale of Goods is expressly excluded. Any law or - regulation which provides that the language of a contract shall be - construed against the drafter shall not apply to this License. - - EXHIBIT A - Sun Standards License -"The contents of this file are subject to the Sun Standards -License Version 1.1 (the "License"); -You may not use this file except in compliance with the -License. You may obtain a copy of the -License at _______________________________. - -Software distributed under the License is distributed on -an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either -express or implied. See the License for the specific -language governing rights and limitations under the License. - -The Original Code is ______________________________________. - -The Initial Developer of the Original Code is: -InMon Corp. - -Portions created by: _______________________________________ - -are Copyright (C): _______________________________________ - -All Rights Reserved. - -Contributor(s): _______________________________________ - - EXHIBIT B - Standards - - The Standard is defined as the following: - - sFlow Specification, located at - [1]http://sflow.org/developers/specifications.php - -References - - 1. http://sflow.org/developers/specifications.php - ----------------------------------------------------------------------- - -Retrieved from http://www.inmon.com/technology/sflowlicense.txt, 2011-12-12: - -LICENSE AGREEMENT - -PLEASE READ THIS LICENSE AGREEMENT ("AGREEMENT") CAREFULLY BEFORE REPRODUCING OR IN ANY WAY -UTILIZING THE sFlow(R) SOFTWARE ("SOFTWARE") AND/OR ANY ACCOMPANYING DOCUMENTATION -("DOCUMENTATION") AND/OR THE RELATED SPECIFICATIONS ("SPECIFICATIONS"). YOUR REPRODUCTION -OR USE OF THE SOFTWARE AND/OR THE DOCUMENTATION AND/OR THE SPECIFICATIONS CONSTITUTES YOUR -ACCEPTANCE OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO BE BOUND -BY THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU MAY NOT REPRODUCE OR IN ANY WAY UTILIZE -THE SOFTWARE OR THE DOCUMENTATION OR THE SPECIFICATIONS. - -1. Definitions. - -"Documentation" means the user manuals, training materials, and operating materials, if any, -InMon provides to Licensee under this Agreement. - -"InMon" means InMon Corporation, its affiliates and subsidiaries. - -"Intellectual Property Rights" means any trade secrets, patents, including without -limitation any patents covering the Software, copyrights, know-how, moral rights and -similar rights of any type under the laws of any governmental authority, domestic or -foreign, including all applications and registrations relating to any of the foregoing. - -"Licensee Hardware" means all computers, routers, or other equipment owned or controlled by -or on behalf of Licensee. - -"Products" means any and all software applications, computers, routers, or other equipment -manufactured by or on behalf of Licensee for the purpose of resale or lease to any other -third party, or otherwise made available by Licensee free of charge. - -"Software" means the sFlow(R) software programs, in source or binary code format, that -Licensee licenses from InMon under this Agreement and any bug fixes or error corrections -which InMon may provide to Licensee. - -"Specifications" means the published specifications provided or otherwise made available by -InMon at: http://www.sflow.org. - -"Trademark" means InMon's "sFlow(R)" trademark. - -2. License Grant. - -2.1 Software, Documentation and Specifications License Grant. InMon hereby grants to -Licensee, under all of InMon's Intellectual Property Rights therein, a perpetual (subject -to InMon's termination rights under Section 7 below), nonexclusive, royalty-free, worldwide, -transferable, sublicensable license, to: (i) use and reproduce the Software, the -Documentation, and the Specifications; (ii) modify the Software; (iii) implement the -Specifications in the Products; (iv) install the Software, or software in which the -Specifications have been implemented, on Licensee Hardware and Products, and (v) distribute -any Products that include the Software, the Documentation, or software in which the -Specifications have been implemented. - -2.2 Trademark License. InMon hereby grants to Licensee a perpetual (subject to InMon's -termination rights under Section 7 below), nonexclusive, royalty-free, worldwide, -transferable, sublicensable license to use the Trademark on or in connection with the -Software, the Documentation, the Specifications and any software that implements the -Specifications. - -2.3 Restrictions. Licensee agrees that it will not use the Software in a way -inconsistent with the license granted in Section 2.1. Further, Licensee agrees that, in -exercising its rights under the license granted to it in this Agreement, Licensee will: -(i) strictly adhere to and fully comply with the Specifications; (ii) use the Trademark, -and no other mark, to identify the Software, the Documentation, the Specifications and any -Products that implement the Specifications; (iii) place, in a font or graphic design -designated by InMon, the phrase "sFlow(R)" on any technical documentation, -sales/marketing materials, catalogs, or other such materials relating to products it -manufactures or markets which it has configured to be compatible with the Software or -otherwise implement the Specifications; (iv) in connection with any Products shipped to or -sold in other countries that include the Software or any software that implements the -Specifications, comply with the patent and trademark laws and practice of such other -country; and (v) not alter or impair any acknowledgment of copyright or trademark rights of -InMon that may appear in or on the Software, the Documentation or the Specifications. In -the event InMon determines that Licensee is not complying with its obligations under -clauses (i)-(v) above, InMon shall notify Licensee of such non-compliance, and if Licensee -fails to correct such non-compliance within three (3) months, InMon may immediately -terminate this Agreement as provided under paragraph 7 below and pursue any and all -actions and remedies as it deems necessary, including, but not limited to breach of -contract. - -3. Ownership. Except for the license expressly granted in Section 2, Inmon hereby -retains all right, title, and interest in and to the Trademark and all its Intellectual -Property Rights in the Software, the Documentation and the Specifications. Licensee -obtains no rights hereunder in the Trademark, Software, Documentation or Specifications by -implication, estoppel or otherwise. Licensee acknowledges that the Trademark, Software, -Documentation and Specifications are being licensed and not sold under this Agreement, and -that this Agreement does not transfer title in the Trademark, Software, Documentation or -Specifications, or any copy thereof, to Licensee. - -4. Support. Inmon shall have no obligation under this Agreement to (a) supply -maintenance or support, bug fixes or error corrections to the Licensed Software, -(b) supply future versions of the Licensed Software or (c) provide Licensed Software -development tools to Licensee. - -5. Warranty. INMON HEREBY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS, IMPLIED OR -STATUTORY, WITH RESPECT TO THE TRADEMARK, THE SOFTWARE, THE DOCUMENTATION, THE -SPECIFICATIONS. OR OTHERWISE, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT OF ANY INTELLECTUAL -PROPERTY RIGHTS. - -6. Limitation of Liability. IN NO EVENT SHALL INMON OR ITS SUPPLIERS OR LICENSORS BE -LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT OR EXEMPLARY DAMAGES WHATSOEVER, -WHETHER RELATED TO OR ARISING OUT OF THIS AGREEMENT, THE TRADEMARK, THE SOFTWARE, THE -DOCUMENTATION, THE SPECIFICATIONS, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, DAMAGES FOR -LOSS OF PROFITS, BUSINESS INTERRUPTION, LOSS OF DATA, COSTS OF PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES OR FOR ANY CLAIM OR DEMAND AGAINST LICENSEE BY ANY OTHER PARTY, OR OTHER -PECUNIARY LOSS, EVEN IF INMON HAS BEEN ADVISED OF OR KNOWS OF THE POSSIBILITY OF SUCH -DAMAGES. - -7. Term and Termination. The term of this Agreement will begin on the Effective Date, -which shall be deemed to be the date of delivery of the Software and/or Documentation and/or -Specifications to Licensee, and shall continue indefinitely unless and until terminated by -Licensee's giving written notice of termination to InMon, or by InMon pursuant to InMon's -termination rights as set forth in Section 2.3 above. Upon any termination of this -Agreement, Licensee shall cease exercising its license rights under this Agreement, -including the right to distribute Products that incorporate the Software or Documentation -or that implement the Specifications. The rights and obligations contained in Sections 1, -3, 5, 6, 7, and 8 shall survive any termination of this Agreement. - -8. General Provisions. - -8.1 Assignment. This Agreement shall be binding upon and inure to the benefit of the -parties hereto and their permitted successors and permitted assigns. InMon will have the -right to assign this Agreement without notice to Licensee. Licensee may assign or transfer -(whether by merger, operation of law or in any other manner) any of its rights or delegate -any of its obligations hereunder without the prior written consent of InMon, provided the -assignee assumes in writing all of Licensee's obligations hereunder. - -8.2 Notices. All notices permitted or required under this Agreement shall be in -writing and shall be delivered in person or mailed by first class, registered or certified -mail, postage prepaid, to the address of the party specified in this Agreement or such -other address as either party may specify in writing. Such notice shall be deemed to have -been given upon receipt. - -8.3 Non-Waiver. No term or provision hereof shall be deemed waived, and no breach -excused, unless such waiver or consent shall be in writing and signed by the party claimed -to have waived or consented. Any consent or waiver, whether express or implied, shall not -constitute a consent or waiver of, or excuse for any separate, different or subsequent -breach. - -8.4 Independent Contractor. The parties' relationship shall be solely that of -independent contractors, and nothing contained in this Agreement shall be construed to make -either party an agent, partner, representative or principal of the other for any purpose. - -8.5 Choice of Law and Forum. This Agreement shall be governed by and construed under -the laws of the State of California, without giving effect to such state's conflict of laws -principles. The parties hereby submit to the personal jurisdiction of, and agree that any -legal proceeding with respect to or arising under this Agreement shall be brought in, the -United States District Court for the Northern District of California or the state courts -of the State of California for the County of San Francisco. - -8.6 U.S. Government Licenses. The Software and Documentation are considered a -"commercial item" as that term is defined at 48 C.F.R 2.101, or "commercial computer -software" and "commercial computer software documentation" as such terms are used in -48 C.F.R 12.212 of the Federal Acquisition Regulations and its successors, and -48 C.F.R. 227.7202 of the DoD FAR Supplement and its successors. - -8.7 Severability. If any provision of this Agreement is held to be unenforceable under -applicable law, then such provision shall be excluded from this Agreement and the balance -of this Agreement shall be interpreted as if such provision were so excluded and shall be -enforceable in accordance with its terms. The court in its discretion may substitute for -the excluded provision an enforceable provision which in economic substance reasonably -approximates the excluded provision. - -8.8 Compliance With Law. Licensee shall comply with all applicable laws and -regulations (including privacy laws and regulations) having application to or governing its - use and/or operation of the Software and agrees to indemnify and hold InMon harmless from -and against any claims, damages, losses or obligations suffered or incurred by InMon -arising from its failure to so comply. - -8.9 Entire Agreement; Amendment. This Agreement constitutes the final, complete and -entire agreement between the parties with respect to the subject matter hereof, and -supersedes any previous proposals, negotiations, agreements, or arrangements, whether -verbal or written, made between the parties with respect to such subject matter. This -Agreement shall control over any additional or conflicting terms in any of Licensee's -purchase orders or other business forms. This Agreement may only be amended or modified -by mutual agreement of authorized representatives of the parties in writing. - -InMon Corp. -580 California Street, 5th Floor, San Francisco, CA 94104 -Phone: (415) 283-3260 -URL: www.inmon.com -Email: info@inmon.com diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/copyright.in b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/copyright.in deleted file mode 100644 index d840e4e..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/copyright.in +++ /dev/null @@ -1,716 +0,0 @@ -The original sources for this package can be found at: - - http://openvswitch.org/ - -Upstream Authors (from AUTHORS): - -%AUTHORS% - -Upstream Copyright Holders: - - Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. - Copyright (c) 2010 Jean Tourrilhes - HP-Labs. - Copyright (c) 2008,2009,2010 Citrix Systems, Inc. - and authors listed above. - Copyright (c) 2011 Gaetano Catalli - Copyright (C) 2000-2003 Geoffrey Wossum (gwossum@acm.org) - Copyright (C) 2000 The NetBSD Foundation, Inc. - Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. - Copyright (c) 1982, 1986, 1990, 1993 The Regents of the University of California. - Copyright (c) 2008, 2012 Vincent Bernat - Copyright (c) 2014 Michael Chapman - Copyright (c) 2014 WindRiver, Inc. - Copyright (c) 2014 Avaya, Inc. - -License: - -* The following components are licensed under the - GNU Lesser General Public License version 2.1 only - with the exception clause below as a pre-amble. - - xenserver/etc_xensource_scripts_vif - xenserver/opt_xensource_libexec_InterfaceReconfigure.py - xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py - xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py - xenserver/opt_xensource_libexec_interface-reconfigure - xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py - - * These components are only distributed in the source package. - They do not appear in any binary packages. - - On Debian systems, the complete text of the - GNU Lesser General Public License version 2.1 can be found in - `/usr/share/common-licenses/LGPL-2.1' - - The exception clause pre-amble reads: - - As a special exception to the GNU Lesser General Public License, you - may link, statically or dynamically, a "work that uses the Library" - with a publicly distributed version of the Library to produce an - executable file containing portions of the Library, and distribute - that executable file under terms of your choice, without any of the - additional requirements listed in clause 6 of the GNU Lesser General - Public License. By "a publicly distributed version of the Library", - we mean either the unmodified Library as distributed, or a - modified version of the Library that is distributed under the - conditions defined in clause 3 of the GNU Library General Public - License. This exception does not however invalidate any other reasons - why the executable file might be covered by the GNU Lesser General - Public License. - -* The following components are licensed under the - GNU Lesser General Public License version 2.1. - - utilities/bugtool/ovs-bugtool - utilities/bugtool/ovs-bugtool-* - utilities/bugtool/plugins/kernel-info/openvswitch.xml - utilities/bugtool/plugins/network-status/openvswitch.xml - utilities/bugtool/plugins/system-configuration.xml - utilities/bugtool/plugins/system-configuration/openvswitch.xml - - On Debian systems, the complete text of the - GNU Lesser General Public License version 2.1 can be found in - `/usr/share/common-licenses/LGPL-2.1' - -* The following component is licensed under the GNU General Public License - version 2. - - datapath/ - - On Debian systems, the complete text of the GNU General Public License - version 2 can be found in `/usr/share/common-licenses/GPL-2' - -* The following file is licensed under the GNU General Public License - version 2. - - build-aux/cccl - -* The following files are licensed under the 2-clause BSD license. - - lib/getopt_long.c - include/windows/getopt.h - -* The following files are licensed under the 3-clause BSD-license - - include/windows/netinet/icmp6.h - include/windows/netinet/ip6.h - lib/strsep.c - -* The following components are dual-licensed under the - GNU General Public License version 2 and the Apache License Version 2.0. - - datapath/linux/compat/include/linux/openvswitch.h - - On Debian systems, the complete text of the GNU General Public License - version 2 can be found in `/usr/share/common-licenses/GPL-2'. - On Debian systems, the complete text of the Apache License version 2.0 - can be found in '/usr/share/common-licenses/Apache-2.0'. - -* The following components are licensed under the terms of either the - Sun Industry Standard Source License 1.1 or the InMon sFlow License: - - lib/sflow.h - lib/sflow_agent.c - lib/sflow_api.h - lib/sflow_poller.c - lib/sflow_receiver.c - lib/sflow_sampler.c - - These licenses are available, respectively, the following URLs: - - http://host-sflow.sourceforge.net/sissl.html - http://www.inmon.com/technology/sflowlicense.txt - - The full text of each license is also appended to the end of this - file. - -* The following components are licensed for use as desired without restriction: - - lib/crc32c.c - -* The following components are licensed under the - Python Software Foundation License Version 2. - - python/compat/uuid.py - python/compat/argparse.py - - * These components are only distributed in the source package. - They do not appear in any binary packages. - - PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 - -------------------------------------------- - - 1. This LICENSE AGREEMENT is between the Python Software Foundation - ("PSF"), and the Individual or Organization ("Licensee") accessing and - otherwise using this software ("Python") in source or binary form and - its associated documentation. - - 2. Subject to the terms and conditions of this License Agreement, PSF - hereby grants Licensee a nonexclusive, royalty-free, world-wide - license to reproduce, analyze, test, perform and/or display publicly, - prepare derivative works, distribute, and otherwise use Python - alone or in any derivative version, provided, however, that PSF's - License Agreement and PSF's notice of copyright, i.e., "Copyright (c) - 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation; - All Rights Reserved" are retained in Python alone or in any derivative - version prepared by Licensee. - - 3. In the event Licensee prepares a derivative work that is based on - or incorporates Python or any part thereof, and wants to make - the derivative work available to others as provided herein, then - Licensee hereby agrees to include in any such work a brief summary of - the changes made to Python. - - 4. PSF is making Python available to Licensee on an "AS IS" - basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR - IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND - DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS - FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT - INFRINGE ANY THIRD PARTY RIGHTS. - - 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON - FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS - A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, - OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - - 6. This License Agreement will automatically terminate upon a material - breach of its terms and conditions. - - 7. Nothing in this License Agreement shall be deemed to create any - relationship of agency, partnership, or joint venture between PSF and - Licensee. This License Agreement does not grant permission to use PSF - trademarks or trade name in a trademark sense to endorse or promote - products or services of Licensee, or any third party. - - 8. By copying, installing or otherwise using Python, Licensee - agrees to be bound by the terms and conditions of this License - Agreement. - -* lib/ovs.tmac in the source distribution, and manpages in the - binaries, includes troff macros from groff 1.21 that contain the - following notice: - - .\" an-ext.tmac - .\" - .\" Written by Eric S. Raymond - .\" Werner Lemberg - .\" - .\" Version 2007-Feb-02 - .\" - .\" Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. - .\" You may freely use, modify and/or distribute this file. - -* m4/absolute-header.m4, by Derek Price, and m4/include_next.m4, by - Paul Eggert and Derek Price bear the following notices: - - Copyright (C) 2006-2013 Free Software Foundation, Inc. - This file is free software; the Free Software Foundation - gives unlimited permission to copy and/or distribute it, - with or without modifications, as long as this notice is preserved. - -* The following files are licensed under the ISC-license - - lib/lldp/aa-structs.h - lib/lldp/lldpd.c - lib/lldp/lldpd.h - lib/lldp/lldpd-structs.c - lib/lldp/lldpd-structs.h - lib/lldp/lldp.c - lib/lldp/lldp-tlv.h - lib/lldp/lldp-const.h - -* All other components of this package are licensed under - The Apache License Version 2.0. - - On Debian systems, the complete text of the Apache License version 2.0 - can be found in '/usr/share/common-licenses/Apache-2.0'. - ----------------------------------------------------------------------- - -Retrieved from http://host-sflow.sourceforge.net/sissl.html, 2011-12-12: - - Sun Industry Standards Source License - Version 1.1 - - 1.0 DEFINITIONS - - 1.1 "Commercial Use" means distribution or otherwise making the - Original Code available to a third party. - - 1.2 "Contributor Version" means the combination of the Original Code, - and the Modifications made by that particular Contributor. - - 1.3 "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.4 "Executable" means Original Code in any form other than Source - Code. - - 1.5 "Initial Developer" means the individual or entity identified as - the Initial Developer in the Source Code notice required by Exhibit A. - - 1.6 "Larger Work" means a work which combines Original Code or portions - thereof with code not governed by the terms of this License. - - 1.7 "License" means this document. - - 1.8 "Licensable" means having the right to grant, to the maximum extent - possible, whether at the time of the initial grant or subsequently - acquired, any and all of the rights conveyed herein. - - 1.9 "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. A Modification is: - - A. Any addition to or deletion from the contents of a file containing - Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or previous - Modifications. - - 1.10 "Original Code" means Source Code of computer software code which - is described in the Source Code notice required by Exhibit A as - Original Code. - - 1.11 "Patent Claims" means any patent claim(s), now owned or hereafter - acquired, including without limitation, method, process, and apparatus - claims, in any patent Licensable by grantor. - - 1.12 "Source Code" means the preferred form of the Original Code for - making modifications to it, including all modules it contains, plus any - associated interface definition files, or scripts used to control - compilation and installation of an Executable. - - 1.13 "Standards" means the standards identified in Exhibit B. - - 1.14 "You" (or "Your") means an individual or a legal entity exercising - rights under, and complying with all of the terms of, this License or a - future version of this License issued under Section 6.1. For legal - entities, "You'' includes any entity which controls, is controlled by, - or is under common control with You. For purposes of this definition, - "control'' means (a) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (b) ownership of more than fifty percent (50%) of the - outstanding shares or beneficial ownership of such entity. - - 2.0 SOURCE CODE LICENSE - - 2.1 The Initial Developer Grant - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - - (a) under intellectual property rights (other than patent or trademark) - Licensable by Initial Developer to use, reproduce, modify, display, - perform, sublicense and distribute the Original Code (or portions - thereof) with or without Modifications, and/or as part of a Larger - Work; and - - (b) under Patents Claims infringed by the making, using or selling of - Original Code, to make, have made, use, practice, sell, and offer for - sale, and/or otherwise dispose of the Original Code (or portions - thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are effective - on the date Initial Developer first distributes Original Code under the - terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is granted: - 1) for code that You delete from the Original Code; 2) separate from - the Original Code; or 3) for infringements caused by: i) the - modification of the Original Code or ii) the combination of the - Original Code with other software or devices, including but not limited - to Modifications. - 3.0 DISTRIBUTION OBLIGATIONS - - 3.1 Application of License. - The Source Code version of Original Code may be distributed only under - the terms of this License or a future version of this License released - under Section 6.1, and You must include a copy of this License with - every copy of the Source Code You distribute. You may not offer or - impose any terms on any Source Code version that alters or restricts - the applicable version of this License or the recipients' rights - hereunder. Your license for shipment of the Contributor Version is - conditioned upon Your full compliance with this Section. The - Modifications which You create must comply with all requirements set - out by the Standards body in effect one hundred twenty (120) days - before You ship the Contributor Version. In the event that the - Modifications do not meet such requirements, You agree to publish - either (i) any deviation from the Standards protocol resulting from - implementation of Your Modifications and a reference implementation of - Your Modifications or (ii) Your Modifications in Source Code form, and - to make any such deviation and reference implementation or - Modifications available to all third parties under the same terms as - this license on a royalty free basis within thirty (30) days of Your - first customer shipment of Your Modifications. - - 3.2 Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely to - look for such a notice. If You created one or more Modification(s) You - may add Your name as a Contributor to the notice described in Exhibit - A. You must also duplicate this License in any documentation for the - Source Code where You describe recipients' rights or ownership rights - relating to Initial Code. You may choose to offer, and to charge a fee - for, warranty, support, indemnity or liability obligations to one or - more recipients of Your version of the Code. However, You may do so - only on Your own behalf, and not on behalf of the Initial Developer. - You must make it absolutely clear than any such warranty, support, - indemnity or liability obligation is offered by You alone, and You - hereby agree to indemnify the Initial Developer for any liability - incurred by the Initial Developer as a result of warranty, support, - indemnity or liability terms You offer. - - 3.3 Distribution of Executable Versions. - You may distribute Original Code in Executable and Source form only if - the requirements of Sections 3.1 and 3.2 have been met for that - Original Code, and if You include a notice stating that the Source Code - version of the Original Code is available under the terms of this - License. The notice must be conspicuously included in any notice in an - Executable or Source versions, related documentation or collateral in - which You describe recipients' rights relating to the Original Code. - You may distribute the Executable and Source versions of Your version - of the Code or ownership rights under a license of Your choice, which - may contain terms different from this License, provided that You are in - compliance with the terms of this License. If You distribute the - Executable and Source versions under a different license You must make - it absolutely clear that any terms which differ from this License are - offered by You alone, not by the Initial Developer. You hereby agree to - indemnify the Initial Developer for any liability incurred by the - Initial Developer as a result of any such terms You offer. - - 3.4 Larger Works. - You may create a Larger Work by combining Original Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Original Code. - - 4.0 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Original Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.2 and must be - included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - - 5.0 APPLICATION OF THIS LICENSE - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Modifications as set - out in Section 3.1. - - 6.0 VERSIONS OF THE LICENSE - - 6.1 New Versions. - Sun may publish revised and/or new versions of the License from time to - time. Each version will be given a distinguishing version number. - - 6.2 Effect of New Versions. - Once Original Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Original Code under the terms - of any subsequent version of the License published by Sun. No one other - than Sun has the right to modify the terms applicable to Original Code. - - 7.0 DISCLAIMER OF WARRANTY - - ORIGINAL CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE ORIGINAL CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE ORIGINAL CODE - IS WITH YOU. SHOULD ANY ORIGINAL CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER) ASSUME THE COST OF ANY NECESSARY - SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY - CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY ORIGINAL - CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - - 8.0 TERMINATION - - 8.1 This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Original Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2 In the event of termination under Section 8.1 above, all end user - license agreements (excluding distributors and resellers) which have - been validly granted by You or any distributor hereunder prior to - termination shall survive termination. - - 9.0 LIMIT OF LIABILITY - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF ORIGINAL CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY - INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS - EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - - 10.0 U.S. GOVERNMENT END USERS - - U.S. Government: If this Software is being acquired by or on behalf of - the U.S. Government or by a U.S. Government prime contractor or - subcontractor (at any tier), then the Government's rights in the - Software and accompanying documentation shall be only as set forth in - this license; this is in accordance with 48 C.F.R. 227.7201 through - 227.7202-4 (for Department of Defense (DoD) acquisitions) and with 48 - C.F.R. 2.101 and 12.212 (for non-DoD acquisitions). - - 11.0 MISCELLANEOUS - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if any, - provides otherwise), excluding its conflict-of-law provisions. With - respect to disputes in which at least one party is a citizen of, or an - entity chartered or registered to do business in the United States of - America, any litigation relating to this License shall be subject to - the jurisdiction of the Federal Courts of the Northern District of - California, with venue lying in Santa Clara County, California, with - the losing party responsible for costs, including without limitation, - court costs and reasonable attorneys' fees and expenses. The - application of the United Nations Convention on Contracts for the - International Sale of Goods is expressly excluded. Any law or - regulation which provides that the language of a contract shall be - construed against the drafter shall not apply to this License. - - EXHIBIT A - Sun Standards License -"The contents of this file are subject to the Sun Standards -License Version 1.1 (the "License"); -You may not use this file except in compliance with the -License. You may obtain a copy of the -License at _______________________________. - -Software distributed under the License is distributed on -an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either -express or implied. See the License for the specific -language governing rights and limitations under the License. - -The Original Code is ______________________________________. - -The Initial Developer of the Original Code is: -InMon Corp. - -Portions created by: _______________________________________ - -are Copyright (C): _______________________________________ - -All Rights Reserved. - -Contributor(s): _______________________________________ - - EXHIBIT B - Standards - - The Standard is defined as the following: - - sFlow Specification, located at - [1]http://sflow.org/developers/specifications.php - -References - - 1. http://sflow.org/developers/specifications.php - ----------------------------------------------------------------------- - -Retrieved from http://www.inmon.com/technology/sflowlicense.txt, 2011-12-12: - -LICENSE AGREEMENT - -PLEASE READ THIS LICENSE AGREEMENT ("AGREEMENT") CAREFULLY BEFORE REPRODUCING OR IN ANY WAY -UTILIZING THE sFlow(R) SOFTWARE ("SOFTWARE") AND/OR ANY ACCOMPANYING DOCUMENTATION -("DOCUMENTATION") AND/OR THE RELATED SPECIFICATIONS ("SPECIFICATIONS"). YOUR REPRODUCTION -OR USE OF THE SOFTWARE AND/OR THE DOCUMENTATION AND/OR THE SPECIFICATIONS CONSTITUTES YOUR -ACCEPTANCE OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO BE BOUND -BY THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU MAY NOT REPRODUCE OR IN ANY WAY UTILIZE -THE SOFTWARE OR THE DOCUMENTATION OR THE SPECIFICATIONS. - -1. Definitions. - -"Documentation" means the user manuals, training materials, and operating materials, if any, -InMon provides to Licensee under this Agreement. - -"InMon" means InMon Corporation, its affiliates and subsidiaries. - -"Intellectual Property Rights" means any trade secrets, patents, including without -limitation any patents covering the Software, copyrights, know-how, moral rights and -similar rights of any type under the laws of any governmental authority, domestic or -foreign, including all applications and registrations relating to any of the foregoing. - -"Licensee Hardware" means all computers, routers, or other equipment owned or controlled by -or on behalf of Licensee. - -"Products" means any and all software applications, computers, routers, or other equipment -manufactured by or on behalf of Licensee for the purpose of resale or lease to any other -third party, or otherwise made available by Licensee free of charge. - -"Software" means the sFlow(R) software programs, in source or binary code format, that -Licensee licenses from InMon under this Agreement and any bug fixes or error corrections -which InMon may provide to Licensee. - -"Specifications" means the published specifications provided or otherwise made available by -InMon at: http://www.sflow.org. - -"Trademark" means InMon's "sFlow(R)" trademark. - -2. License Grant. - -2.1 Software, Documentation and Specifications License Grant. InMon hereby grants to -Licensee, under all of InMon's Intellectual Property Rights therein, a perpetual (subject -to InMon's termination rights under Section 7 below), nonexclusive, royalty-free, worldwide, -transferable, sublicensable license, to: (i) use and reproduce the Software, the -Documentation, and the Specifications; (ii) modify the Software; (iii) implement the -Specifications in the Products; (iv) install the Software, or software in which the -Specifications have been implemented, on Licensee Hardware and Products, and (v) distribute -any Products that include the Software, the Documentation, or software in which the -Specifications have been implemented. - -2.2 Trademark License. InMon hereby grants to Licensee a perpetual (subject to InMon's -termination rights under Section 7 below), nonexclusive, royalty-free, worldwide, -transferable, sublicensable license to use the Trademark on or in connection with the -Software, the Documentation, the Specifications and any software that implements the -Specifications. - -2.3 Restrictions. Licensee agrees that it will not use the Software in a way -inconsistent with the license granted in Section 2.1. Further, Licensee agrees that, in -exercising its rights under the license granted to it in this Agreement, Licensee will: -(i) strictly adhere to and fully comply with the Specifications; (ii) use the Trademark, -and no other mark, to identify the Software, the Documentation, the Specifications and any -Products that implement the Specifications; (iii) place, in a font or graphic design -designated by InMon, the phrase "sFlow(R)" on any technical documentation, -sales/marketing materials, catalogs, or other such materials relating to products it -manufactures or markets which it has configured to be compatible with the Software or -otherwise implement the Specifications; (iv) in connection with any Products shipped to or -sold in other countries that include the Software or any software that implements the -Specifications, comply with the patent and trademark laws and practice of such other -country; and (v) not alter or impair any acknowledgment of copyright or trademark rights of -InMon that may appear in or on the Software, the Documentation or the Specifications. In -the event InMon determines that Licensee is not complying with its obligations under -clauses (i)-(v) above, InMon shall notify Licensee of such non-compliance, and if Licensee -fails to correct such non-compliance within three (3) months, InMon may immediately -terminate this Agreement as provided under paragraph 7 below and pursue any and all -actions and remedies as it deems necessary, including, but not limited to breach of -contract. - -3. Ownership. Except for the license expressly granted in Section 2, Inmon hereby -retains all right, title, and interest in and to the Trademark and all its Intellectual -Property Rights in the Software, the Documentation and the Specifications. Licensee -obtains no rights hereunder in the Trademark, Software, Documentation or Specifications by -implication, estoppel or otherwise. Licensee acknowledges that the Trademark, Software, -Documentation and Specifications are being licensed and not sold under this Agreement, and -that this Agreement does not transfer title in the Trademark, Software, Documentation or -Specifications, or any copy thereof, to Licensee. - -4. Support. Inmon shall have no obligation under this Agreement to (a) supply -maintenance or support, bug fixes or error corrections to the Licensed Software, -(b) supply future versions of the Licensed Software or (c) provide Licensed Software -development tools to Licensee. - -5. Warranty. INMON HEREBY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS, IMPLIED OR -STATUTORY, WITH RESPECT TO THE TRADEMARK, THE SOFTWARE, THE DOCUMENTATION, THE -SPECIFICATIONS. OR OTHERWISE, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT OF ANY INTELLECTUAL -PROPERTY RIGHTS. - -6. Limitation of Liability. IN NO EVENT SHALL INMON OR ITS SUPPLIERS OR LICENSORS BE -LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT OR EXEMPLARY DAMAGES WHATSOEVER, -WHETHER RELATED TO OR ARISING OUT OF THIS AGREEMENT, THE TRADEMARK, THE SOFTWARE, THE -DOCUMENTATION, THE SPECIFICATIONS, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, DAMAGES FOR -LOSS OF PROFITS, BUSINESS INTERRUPTION, LOSS OF DATA, COSTS OF PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES OR FOR ANY CLAIM OR DEMAND AGAINST LICENSEE BY ANY OTHER PARTY, OR OTHER -PECUNIARY LOSS, EVEN IF INMON HAS BEEN ADVISED OF OR KNOWS OF THE POSSIBILITY OF SUCH -DAMAGES. - -7. Term and Termination. The term of this Agreement will begin on the Effective Date, -which shall be deemed to be the date of delivery of the Software and/or Documentation and/or -Specifications to Licensee, and shall continue indefinitely unless and until terminated by -Licensee's giving written notice of termination to InMon, or by InMon pursuant to InMon's -termination rights as set forth in Section 2.3 above. Upon any termination of this -Agreement, Licensee shall cease exercising its license rights under this Agreement, -including the right to distribute Products that incorporate the Software or Documentation -or that implement the Specifications. The rights and obligations contained in Sections 1, -3, 5, 6, 7, and 8 shall survive any termination of this Agreement. - -8. General Provisions. - -8.1 Assignment. This Agreement shall be binding upon and inure to the benefit of the -parties hereto and their permitted successors and permitted assigns. InMon will have the -right to assign this Agreement without notice to Licensee. Licensee may assign or transfer -(whether by merger, operation of law or in any other manner) any of its rights or delegate -any of its obligations hereunder without the prior written consent of InMon, provided the -assignee assumes in writing all of Licensee's obligations hereunder. - -8.2 Notices. All notices permitted or required under this Agreement shall be in -writing and shall be delivered in person or mailed by first class, registered or certified -mail, postage prepaid, to the address of the party specified in this Agreement or such -other address as either party may specify in writing. Such notice shall be deemed to have -been given upon receipt. - -8.3 Non-Waiver. No term or provision hereof shall be deemed waived, and no breach -excused, unless such waiver or consent shall be in writing and signed by the party claimed -to have waived or consented. Any consent or waiver, whether express or implied, shall not -constitute a consent or waiver of, or excuse for any separate, different or subsequent -breach. - -8.4 Independent Contractor. The parties' relationship shall be solely that of -independent contractors, and nothing contained in this Agreement shall be construed to make -either party an agent, partner, representative or principal of the other for any purpose. - -8.5 Choice of Law and Forum. This Agreement shall be governed by and construed under -the laws of the State of California, without giving effect to such state's conflict of laws -principles. The parties hereby submit to the personal jurisdiction of, and agree that any -legal proceeding with respect to or arising under this Agreement shall be brought in, the -United States District Court for the Northern District of California or the state courts -of the State of California for the County of San Francisco. - -8.6 U.S. Government Licenses. The Software and Documentation are considered a -"commercial item" as that term is defined at 48 C.F.R 2.101, or "commercial computer -software" and "commercial computer software documentation" as such terms are used in -48 C.F.R 12.212 of the Federal Acquisition Regulations and its successors, and -48 C.F.R. 227.7202 of the DoD FAR Supplement and its successors. - -8.7 Severability. If any provision of this Agreement is held to be unenforceable under -applicable law, then such provision shall be excluded from this Agreement and the balance -of this Agreement shall be interpreted as if such provision were so excluded and shall be -enforceable in accordance with its terms. The court in its discretion may substitute for -the excluded provision an enforceable provision which in economic substance reasonably -approximates the excluded provision. - -8.8 Compliance With Law. Licensee shall comply with all applicable laws and -regulations (including privacy laws and regulations) having application to or governing its - use and/or operation of the Software and agrees to indemnify and hold InMon harmless from -and against any claims, damages, losses or obligations suffered or incurred by InMon -arising from its failure to so comply. - -8.9 Entire Agreement; Amendment. This Agreement constitutes the final, complete and -entire agreement between the parties with respect to the subject matter hereof, and -supersedes any previous proposals, negotiations, agreements, or arrangements, whether -verbal or written, made between the parties with respect to such subject matter. This -Agreement shall control over any additional or conflicting terms in any of Licensee's -purchase orders or other business forms. This Agreement may only be amended or modified -by mutual agreement of authorized representatives of the parties in writing. - -InMon Corp. -580 California Street, 5th Floor, San Francisco, CA 94104 -Phone: (415) 283-3260 -URL: www.inmon.com -Email: info@inmon.com diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.README.Debian b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.README.Debian deleted file mode 100644 index d55099b..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.README.Debian +++ /dev/null @@ -1,42 +0,0 @@ -openvswitch-switch-dpdk ------------------------ - -This package provides a DPDK enabled version of the OpenvSwitch vswitchd -binary; by default, the ovs-vswitchd binary from openvswitch-switch will -be used: - - $ update-alternatives --query ovs-vswitchd - Name: ovs-vswitchd - Link: /usr/sbin/ovs-vswitchd - Status: auto - Best: /usr/lib/openvswitch-switch/ovs-vswitchd - Value: /usr/lib/openvswitch-switch/ovs-vswitchd - - Alternative: /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk - Priority: 50 - - Alternative: /usr/lib/openvswitch-switch/ovs-vswitchd - Priority: 100 - -DPDK provides fast packet processing in userspace, and has some specific -requirements in terms of system configuration - see the upstream -documentation for more details: - - /usr/share/doc/openvswitch-common/INSTALL.DPDK.md.gz - -DPDK has a minimum CPU feature set of SSE3, so is not appropriate for all -amd64 CPU types hence is not enabled by default. - -To switch to the DPDK version: - - sudo update-alternatives --set ovs-vswitchd \ - /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk - sudo service openvswitch-switch restart - -and to switch back: - - sudo update-alternatives --set ovs-vswitchd \ - /usr/lib/openvswitch-switch/ovs-vswitchd - sudo service openvswitch-switch restart - - -- James Page Tue, 21 Jul 2015 12:06:49 +0100 diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst deleted file mode 100644 index ff5a725..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -e - -update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd \ - /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk 50 - -#DEBHELPER# - -exit 0 diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.prerm b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.prerm deleted file mode 100644 index 82b2136..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/openvswitch-switch-dpdk.prerm +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -e - -update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch/ovs-vswitchd-dpdk - -#DEBHELPER# - -exit 0 - diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/ovs-monitor-ipsec b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/ovs-monitor-ipsec deleted file mode 100755 index 414d18b..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/ovs-monitor-ipsec +++ /dev/null @@ -1,494 +0,0 @@ -#!/usr/bin/python -# Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -# A daemon to monitor attempts to create GRE-over-IPsec tunnels. -# Uses racoon and setkey to support the configuration. Assumes that -# OVS has complete control over IPsec configuration for the box. - -# xxx To-do: -# - Doesn't actually check that Interface is connected to bridge -# - If a certificate is badly formed, Racoon will refuse to start. We -# should do a better job of verifying certificates are valid before -# adding an interface to racoon.conf. - - -import argparse -import glob -import os -import subprocess -import sys - -import ovs.dirs -from ovs.db import error -from ovs.db import types -import ovs.util -import ovs.daemon -import ovs.db.idl -import ovs.unixctl -import ovs.unixctl.server -import ovs.vlog - -vlog = ovs.vlog.Vlog("ovs-monitor-ipsec") -root_prefix = '' # Prefix for absolute file names, for testing. -SETKEY = "/usr/sbin/setkey" -exiting = False - - -def unixctl_exit(conn, unused_argv, unused_aux): - global exiting - exiting = True - conn.reply(None) - - -# Class to configure the racoon daemon, which handles IKE negotiation -class Racoon: - # Default locations for files - conf_file = "/etc/racoon/racoon.conf" - cert_dir = "/etc/racoon/certs" - psk_file = "/etc/racoon/psk.txt" - - # Racoon configuration header we use for IKE - conf_header = """# Configuration file generated by Open vSwitch -# -# Do not modify by hand! - -path pre_shared_key "%s"; -path certificate "%s"; - -""" - - # Racoon configuration footer we use for IKE - conf_footer = """sainfo anonymous { - pfs_group 2; - lifetime time 1 hour; - encryption_algorithm aes; - authentication_algorithm hmac_sha1, hmac_md5; - compression_algorithm deflate; -} - -""" - - # Certificate entry template. - cert_entry = """remote %s { - exchange_mode main; - nat_traversal on; - ike_frag on; - certificate_type x509 "%s" "%s"; - my_identifier asn1dn; - peers_identifier asn1dn; - peers_certfile x509 "%s"; - verify_identifier on; - proposal { - encryption_algorithm aes; - hash_algorithm sha1; - authentication_method rsasig; - dh_group 2; - } -} - -""" - - # Pre-shared key template. - psk_entry = """remote %s { - exchange_mode main; - nat_traversal on; - proposal { - encryption_algorithm aes; - hash_algorithm sha1; - authentication_method pre_shared_key; - dh_group 2; - } -} - -""" - - def __init__(self): - self.psk_hosts = {} - self.cert_hosts = {} - - if not os.path.isdir(root_prefix + self.cert_dir): - os.mkdir(self.cert_dir) - - # Clean out stale peer certs from previous runs - for ovs_cert in glob.glob("%s%s/ovs-*.pem" - % (root_prefix, self.cert_dir)): - try: - os.remove(ovs_cert) - except OSError: - vlog.warn("couldn't remove %s" % ovs_cert) - - # Replace racoon's conf file with our template - self.commit() - - def reload(self): - exitcode = subprocess.call([root_prefix + "/etc/init.d/racoon", - "reload"]) - if exitcode != 0: - # Racoon is finicky about its configuration file and will - # refuse to start if it sees something it doesn't like - # (e.g., a certificate file doesn't exist). Try restarting - # the process before giving up. - vlog.warn("attempting to restart racoon") - exitcode = subprocess.call([root_prefix + "/etc/init.d/racoon", - "restart"]) - if exitcode != 0: - vlog.warn("couldn't reload racoon") - - def commit(self): - # Rewrite the Racoon configuration file - conf_file = open(root_prefix + self.conf_file, 'w') - conf_file.write(Racoon.conf_header % (self.psk_file, self.cert_dir)) - - for host, vals in self.cert_hosts.iteritems(): - conf_file.write(Racoon.cert_entry % (host, vals["certificate"], - vals["private_key"], vals["peer_cert_file"])) - - for host in self.psk_hosts: - conf_file.write(Racoon.psk_entry % host) - - conf_file.write(Racoon.conf_footer) - conf_file.close() - - # Rewrite the pre-shared keys file; it must only be readable by root. - orig_umask = os.umask(0077) - psk_file = open(root_prefix + Racoon.psk_file, 'w') - os.umask(orig_umask) - - psk_file.write("# Generated by Open vSwitch...do not modify by hand!") - psk_file.write("\n\n") - for host, vals in self.psk_hosts.iteritems(): - psk_file.write("%s %s\n" % (host, vals["psk"])) - psk_file.close() - - self.reload() - - def _add_psk(self, host, psk): - if host in self.cert_hosts: - raise error.Error("host %s already defined for cert" % host) - - self.psk_hosts[host] = psk - self.commit() - - def _verify_certs(self, vals): - # Racoon will refuse to start if the certificate files don't - # exist, so verify that they're there. - if not os.path.isfile(root_prefix + vals["certificate"]): - raise error.Error("'certificate' file does not exist: %s" - % vals["certificate"]) - elif not os.path.isfile(root_prefix + vals["private_key"]): - raise error.Error("'private_key' file does not exist: %s" - % vals["private_key"]) - - # Racoon won't start if a given certificate or private key isn't - # valid. This is a weak test, but will detect the most flagrant - # errors. - if vals["peer_cert"].find("-----BEGIN CERTIFICATE-----") == -1: - raise error.Error("'peer_cert' is not in valid PEM format") - - cert = open(root_prefix + vals["certificate"]).read() - if cert.find("-----BEGIN CERTIFICATE-----") == -1: - raise error.Error("'certificate' is not in valid PEM format") - - cert = open(root_prefix + vals["private_key"]).read() - if cert.find("-----BEGIN RSA PRIVATE KEY-----") == -1: - raise error.Error("'private_key' is not in valid PEM format") - - def _add_cert(self, host, vals): - if host in self.psk_hosts: - raise error.Error("host %s already defined for psk" % host) - - if vals["certificate"] == None: - raise error.Error("'certificate' not defined for %s" % host) - elif vals["private_key"] == None: - # Assume the private key is stored in the same PEM file as - # the certificate. We make a copy of "vals" so that we don't - # modify the original "vals", which would cause the script - # to constantly think that the configuration has changed - # in the database. - vals = vals.copy() - vals["private_key"] = vals["certificate"] - - self._verify_certs(vals) - - # The peer's certificate comes to us in PEM format as a string. - # Write that string to a file for Racoon to use. - f = open(root_prefix + vals["peer_cert_file"], "w") - f.write(vals["peer_cert"]) - f.close() - - self.cert_hosts[host] = vals - self.commit() - - def _del_cert(self, host): - peer_cert_file = self.cert_hosts[host]["peer_cert_file"] - del self.cert_hosts[host] - self.commit() - try: - os.remove(root_prefix + peer_cert_file) - except OSError: - pass - - def add_entry(self, host, vals): - if vals["peer_cert"]: - self._add_cert(host, vals) - elif vals["psk"]: - self._add_psk(host, vals) - - def del_entry(self, host): - if host in self.cert_hosts: - self._del_cert(host) - elif host in self.psk_hosts: - del self.psk_hosts[host] - self.commit() - - -# Class to configure IPsec on a system using racoon for IKE and setkey -# for maintaining the Security Association Database (SAD) and Security -# Policy Database (SPD). Only policies for GRE are supported. -class IPsec: - def __init__(self): - self.sad_flush() - self.spd_flush() - self.racoon = Racoon() - self.entries = [] - - def call_setkey(self, cmds): - try: - p = subprocess.Popen([root_prefix + SETKEY, "-c"], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE) - except: - vlog.err("could not call %s%s" % (root_prefix, SETKEY)) - sys.exit(1) - - # xxx It is safer to pass the string into the communicate() - # xxx method, but it didn't work for slightly longer commands. - # xxx An alternative may need to be found. - p.stdin.write(cmds) - return p.communicate()[0] - - def get_spi(self, local_ip, remote_ip, proto="esp"): - # Run the setkey dump command to retrieve the SAD. Then, parse - # the output looking for SPI buried in the output. Note that - # multiple SAD entries can exist for the same "flow", since an - # older entry could be in a "dying" state. - spi_list = [] - host_line = "%s %s" % (local_ip, remote_ip) - results = self.call_setkey("dump ;\n").split("\n") - for i in range(len(results)): - if results[i].strip() == host_line: - # The SPI is in the line following the host pair - spi_line = results[i + 1] - if (spi_line[1:4] == proto): - spi = spi_line.split()[2] - spi_list.append(spi.split('(')[1].rstrip(')')) - return spi_list - - def sad_flush(self): - self.call_setkey("flush;\n") - - def sad_del(self, local_ip, remote_ip): - # To delete all SAD entries, we should be able to use setkey's - # "deleteall" command. Unfortunately, it's fundamentally broken - # on Linux and not documented as such. - cmds = "" - - # Delete local_ip->remote_ip SAD entries - spi_list = self.get_spi(local_ip, remote_ip) - for spi in spi_list: - cmds += "delete %s %s esp %s;\n" % (local_ip, remote_ip, spi) - - # Delete remote_ip->local_ip SAD entries - spi_list = self.get_spi(remote_ip, local_ip) - for spi in spi_list: - cmds += "delete %s %s esp %s;\n" % (remote_ip, local_ip, spi) - - if cmds: - self.call_setkey(cmds) - - def spd_flush(self): - self.call_setkey("spdflush;\n") - - def spd_add(self, local_ip, remote_ip): - cmds = ("spdadd %s %s gre -P out ipsec esp/transport//require;\n" % - (local_ip, remote_ip)) - cmds += ("spdadd %s %s gre -P in ipsec esp/transport//require;\n" % - (remote_ip, local_ip)) - self.call_setkey(cmds) - - def spd_del(self, local_ip, remote_ip): - cmds = "spddelete %s %s gre -P out;\n" % (local_ip, remote_ip) - cmds += "spddelete %s %s gre -P in;\n" % (remote_ip, local_ip) - self.call_setkey(cmds) - - def add_entry(self, local_ip, remote_ip, vals): - if remote_ip in self.entries: - raise error.Error("host %s already configured for ipsec" - % remote_ip) - - self.racoon.add_entry(remote_ip, vals) - self.spd_add(local_ip, remote_ip) - - self.entries.append(remote_ip) - - def del_entry(self, local_ip, remote_ip): - if remote_ip in self.entries: - self.racoon.del_entry(remote_ip) - self.spd_del(local_ip, remote_ip) - self.sad_del(local_ip, remote_ip) - - self.entries.remove(remote_ip) - - -def update_ipsec(ipsec, interfaces, new_interfaces): - for name, vals in interfaces.iteritems(): - if name not in new_interfaces: - ipsec.del_entry(vals["local_ip"], vals["remote_ip"]) - - for name, vals in new_interfaces.iteritems(): - orig_vals = interfaces.get(name) - if orig_vals: - # Configuration for this host already exists. Check if it's - # changed. We use set difference, since we want to ignore - # any local additions to "orig_vals" that we've made - # (e.g. the "peer_cert_file" key). - if set(vals.items()) - set(orig_vals.items()): - ipsec.del_entry(vals["local_ip"], vals["remote_ip"]) - else: - continue - - try: - ipsec.add_entry(vals["local_ip"], vals["remote_ip"], vals) - except error.Error, msg: - vlog.warn("skipping ipsec config for %s: %s" % (name, msg)) - - -def get_ssl_cert(data): - for ovs_rec in data["Open_vSwitch"].rows.itervalues(): - if ovs_rec.ssl: - ssl = ovs_rec.ssl[0] - if ssl.certificate and ssl.private_key: - return (ssl.certificate, ssl.private_key) - - return None - - -def main(): - - parser = argparse.ArgumentParser() - parser.add_argument("database", metavar="DATABASE", - help="A socket on which ovsdb-server is listening.") - parser.add_argument("--root-prefix", metavar="DIR", - help="Use DIR as alternate root directory" - " (for testing).") - - ovs.vlog.add_args(parser) - ovs.daemon.add_args(parser) - args = parser.parse_args() - ovs.vlog.handle_args(args) - ovs.daemon.handle_args(args) - - global root_prefix - if args.root_prefix: - root_prefix = args.root_prefix - - remote = args.database - schema_helper = ovs.db.idl.SchemaHelper() - schema_helper.register_columns("Interface", ["name", "type", "options"]) - schema_helper.register_columns("Open_vSwitch", ["ssl"]) - schema_helper.register_columns("SSL", ["certificate", "private_key"]) - idl = ovs.db.idl.Idl(remote, schema_helper) - - ovs.daemon.daemonize() - - ovs.unixctl.command_register("exit", "", 0, 0, unixctl_exit, None) - error, unixctl_server = ovs.unixctl.server.UnixctlServer.create(None) - if error: - ovs.util.ovs_fatal(error, "could not create unixctl server", vlog) - - ipsec = IPsec() - - interfaces = {} - seqno = idl.change_seqno # Sequence number when we last processed the db - while True: - unixctl_server.run() - if exiting: - break - - idl.run() - if seqno == idl.change_seqno: - poller = ovs.poller.Poller() - unixctl_server.wait(poller) - idl.wait(poller) - poller.block() - continue - seqno = idl.change_seqno - - ssl_cert = get_ssl_cert(idl.tables) - - new_interfaces = {} - for rec in idl.tables["Interface"].rows.itervalues(): - if rec.type == "ipsec_gre" or rec.type == "ipsec_gre64": - name = rec.name - options = rec.options - peer_cert_name = "ovs-%s.pem" % (options.get("remote_ip")) - entry = { - "remote_ip": options.get("remote_ip"), - "local_ip": options.get("local_ip", "0.0.0.0/0"), - "certificate": options.get("certificate"), - "private_key": options.get("private_key"), - "use_ssl_cert": options.get("use_ssl_cert"), - "peer_cert": options.get("peer_cert"), - "peer_cert_file": Racoon.cert_dir + "/" + peer_cert_name, - "psk": options.get("psk")} - - if entry["peer_cert"] and entry["psk"]: - vlog.warn("both 'peer_cert' and 'psk' defined for %s" - % name) - continue - elif not entry["peer_cert"] and not entry["psk"]: - vlog.warn("no 'peer_cert' or 'psk' defined for %s" % name) - continue - - # The "use_ssl_cert" option is deprecated and will - # likely go away in the near future. - if entry["use_ssl_cert"] == "true": - if not ssl_cert: - vlog.warn("no valid SSL entry for %s" % name) - continue - - entry["certificate"] = ssl_cert[0] - entry["private_key"] = ssl_cert[1] - - new_interfaces[name] = entry - - if interfaces != new_interfaces: - update_ipsec(ipsec, interfaces, new_interfaces) - interfaces = new_interfaces - - unixctl_server.close() - idl.close() - - -if __name__ == '__main__': - try: - main() - except SystemExit: - # Let system.exit() calls complete normally - raise - except: - vlog.exception("traceback") - sys.exit(ovs.daemon.RESTART_EXIT_CODE) diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/patches/ovs-ctl-dpdk.patch b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/patches/ovs-ctl-dpdk.patch deleted file mode 100644 index b417e00..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/patches/ovs-ctl-dpdk.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/utilities/ovs-ctl.in -+++ b/utilities/ovs-ctl.in -@@ -253,7 +253,11 @@ start_forwarding () { - fi - - # Start ovs-vswitchd. -- set ovs-vswitchd unix:"$DB_SOCK" -+ set ovs-vswitchd -+ if test X"$DPDK_OPTS" != X; then -+ set "$@" $DPDK_OPTS -- -+ fi -+ set "$@" unix:"$DB_SOCK" - set "$@" -vconsole:emer -vsyslog:err -vfile:info - if test X"$MLOCKALL" != Xno; then - set "$@" --mlockall diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/patches/series b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/patches/series deleted file mode 100644 index 7bd5bc6..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/patches/series +++ /dev/null @@ -1 +0,0 @@ -ovs-ctl-dpdk.patch diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/rules b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/rules deleted file mode 100755 index 881774f..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/rules +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -#export DH_VERBOSE=1 - -%: - dh $@ --with autoreconf,python2,systemd --parallel - -# use --as-needed only if supported by dh-autoreconf (to simplify backporting) -DH_AS_NEEDED=$(shell dpkg --compare-versions $$(dpkg --status dh-autoreconf | grep Version | cut -d' ' -f2) ge 6 && echo --as-needed) -override_dh_autoreconf: - dh_autoreconf $(DH_AS_NEEDED) - -ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) -PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) -else -PARALLEL = -endif - -override_dh_auto_configure: - dh_auto_configure -- --enable-ssl --with-dpdk=/usr $(DATAPATH_CONFIGURE_OPTS) - -override_dh_auto_test: -# NOTE(jamespage): skip tests on powerpc until -# https://bugs.launchpad.net/ubuntu/+source/openvswitch/+bug/1483572 -# is resolved -ifneq (powerpc, $(DEB_BUILD_ARCH)) -ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) - if $(MAKE) check TESTSUITEFLAGS='$(PARALLEL)' || \ - $(MAKE) check TESTSUITEFLAGS='--recheck'; then :; \ - else \ - cat tests/testsuite.log; \ - exit 1; \ - fi -endif -endif # powerpc - -override_dh_auto_build: - dh_auto_build -- distdir=openvswitch - -override_dh_auto_clean: - rm -f python/ovs/*.pyc python/ovs/db/*.pyc - dh_auto_clean - -override_dh_install: - install -D vswitchd/ovs-vswitchd \ - $(CURDIR)/debian/openvswitch-switch-dpdk/usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk - -override_dh_installinit: - : - -override_dh_auto_install: - : - -# Helper target for creating snapshots from upstream git -DATE=$(shell date +%Y%m%d) -# Upstream branch to track -BRANCH=branch-2.4 - -get-orig-snapshot: - rm -Rf openvswitch-upstream - git clone https://github.com/openvswitch/ovs openvswitch-upstream - cd openvswitch-upstream && \ - git checkout -b $(BRANCH) remotes/origin/$(BRANCH) && \ - export COMMIT=`git rev-parse --short HEAD` && \ - export UPSTREAM_VERSION=`head -1 NEWS | awk '{ print $$1 }' | sed 's/v//'` && \ - git archive --format tgz --prefix=openvswitch-$$UPSTREAM_VERSION+git$(DATE)/ \ - -o ../../openvswitch_$$UPSTREAM_VERSION~git$(DATE).$$COMMIT.orig.tar.gz $(BRANCH) - rm -Rf openvswitch-upstream diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/source/format b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/source/format deleted file mode 100644 index 163aaf8..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/common b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/common deleted file mode 100755 index ba8f27f..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/common +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -set -e - -update-alternatives --set ovs-vswitchd \ - /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk -service openvswitch-switch restart - -modprobe openvswitch || true - -echo "kernel modules loaded: " -# Check that ovs loaded -lsmod | grep "openvswitch" -echo "OK" - -echo "Checking daemons: " -pgrep ovs-vswitchd -pgrep ovsdb-server -echo "OK" - -echo -n "running openflow tests using mininet" -python `dirname $0`/openflow.py 2>&1 -echo "OK" diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/control b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/control deleted file mode 100644 index a233244..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/control +++ /dev/null @@ -1,4 +0,0 @@ -Tests: kernel -Depends: mininet (>= 2.2.0~), iperf, openvswitch-switch-dpdk, - openvswitch-testcontroller -Restrictions: needs-root rw-build-tree diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/kernel b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/kernel deleted file mode 100755 index befe158..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/kernel +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -set -e - -`dirname $0`/common diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/openflow b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/openflow deleted file mode 100755 index 004e994..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/openflow +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -set -e - -service openvswitch-controller stop - -python `dirname $0`/openflow.py 2>&1 diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/openflow.py b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/openflow.py deleted file mode 100755 index 216b57c..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/tests/openflow.py +++ /dev/null @@ -1,66 +0,0 @@ -import unittest -import logging -from mininet.net import Mininet -import mininet.log as log -from mininet.node import OVSController, OVSKernelSwitch - -Switch = OVSKernelSwitch -Controller = OVSController -logging.basicConfig(level=logging.DEBUG) -log.setLogLevel('info') - - -class BasicOpenflowTest(unittest.TestCase): - - def addHost(self, N): - logging.debug("Creating host h%s and add to net.", N) - name = 'h%d' % N - ip = '10.0.0.%d' % N - return self.net.addHost(name, ip=ip) - - def setUp(self): - self.net = Mininet(controller=Controller, switch=Switch) - - logging.info("Creating controllers") - self.net.addController('c1', command='ovs-testcontroller') - - logging.info("Creating switches") - s1 = self.net.addSwitch('s1', protocols="OpenFlow10") - s2 = self.net.addSwitch('s2', protocols="OpenFlow10") - - logging.info("Creating hosts (7 on each switch)") - hosts1 = [self.addHost(n) for n in (1, 2, 3, 4, 5, 6, 7)] - hosts2 = [self.addHost(n) for n in (8, 9, 10, 11, 12, 13, 14)] - - logging.info("Creating links") - for h in hosts1: - self.net.addLink(s1, h) - for h in hosts2: - self.net.addLink(s2, h) - self.net.addLink(s1, s2) - - logging.info("Starting network") - self.net.start() - - def testPingAll(self): - logging.info("Testing network") - packetLoss = self.net.pingAll() - self.assertTrue( - packetLoss == 0, - "Packet loss during ping test %s" % - packetLoss) - - def testIPerfTCP(self): - logging.info("Running TCP performance test") - self.net.iperf() - - def testIPerfUDP(self): - logging.info("Running UDP performance test") - self.net.iperf(l4Type='UDP') - - def tearDown(self): - logging.info("Stopping network") - self.net.stop() - -if __name__ == '__main__': - unittest.main() diff --git a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/watch b/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/watch deleted file mode 100644 index f42bab5..0000000 --- a/ovs_build/openvswitch-nsh-dpdk_2.5.90/debian/watch +++ /dev/null @@ -1,2 +0,0 @@ -version=3 -http://openvswitch.org/releases/ openvswitch-(.*).tar.gz diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/automake.mk b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/automake.mk similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/automake.mk rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/automake.mk diff --git a/ovs_build/dpdk_2.2.0/debian/compat b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/compat similarity index 100% rename from ovs_build/dpdk_2.2.0/debian/compat rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/compat diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/control b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/control similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/control rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/control diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/copyright b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/copyright similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/copyright rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/copyright diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/copyright.in b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/copyright.in similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/copyright.in rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/copyright.in diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.README.Debian b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/openvswitch-switch-dpdk.README.Debian similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.README.Debian rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/openvswitch-switch-dpdk.README.Debian diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/openvswitch-switch-dpdk.postinst similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.postinst rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/openvswitch-switch-dpdk.postinst diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.prerm b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/openvswitch-switch-dpdk.prerm similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/openvswitch-switch-dpdk.prerm rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/openvswitch-switch-dpdk.prerm diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/ovs-monitor-ipsec b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/ovs-monitor-ipsec similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/ovs-monitor-ipsec rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/ovs-monitor-ipsec diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/patches/series b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/patches/series similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/patches/series rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/patches/series diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/rules b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/rules similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/rules rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/rules diff --git a/ovs_build/dpdk_2.2.0/debian/source/format b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/source/format similarity index 100% rename from ovs_build/dpdk_2.2.0/debian/source/format rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/source/format diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/tests/common b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/common similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/tests/common rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/common diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/tests/control b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/control similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/tests/control rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/control diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/tests/kernel b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/kernel similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/tests/kernel rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/kernel diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/tests/openflow b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/openflow similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/tests/openflow rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/openflow diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/tests/openflow.py b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/openflow.py similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/tests/openflow.py rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/tests/openflow.py diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/watch b/ovs_build/openvswitch_2.6-dpdk_16.07/debian/watch similarity index 100% rename from ovs_build/openvswitch-dpdk_2.5.90/debian/watch rename to ovs_build/openvswitch_2.6-dpdk_16.07/debian/watch