aboutsummaryrefslogtreecommitdiffstats
path: root/debian/dpdk-doc.README.Debian
diff options
context:
space:
mode:
Diffstat (limited to 'debian/dpdk-doc.README.Debian')
-rw-r--r--debian/dpdk-doc.README.Debian64
1 files changed, 64 insertions, 0 deletions
diff --git a/debian/dpdk-doc.README.Debian b/debian/dpdk-doc.README.Debian
new file mode 100644
index 00000000..0e3866a9
--- /dev/null
+++ b/debian/dpdk-doc.README.Debian
@@ -0,0 +1,64 @@
+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 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
+
+librte-pmd-* and DPDK PMD autoloading:
+
+PMD driver autoloading. DPDK since its split into several libraries does not
+have all PMD drivers available by default. One always can use EAL argument -d
+to provide a path to an extra .so file.
+TO ease daily usage RTE_EAL_PMD_PATH is set to
+/usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)/dpdk-pmds/.
+Each librte-pmd-* package will place a symlink in there which makes DPDK load
+and register it as PMD on startup.
+This can also be used to globally enable extra PMD drivers as you can link
+self-provided .so files in there to be considered.
+
+ -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Thu, 29 Sep 2016 13:04:47 +0200