path: root/mk
AgeCommit message (Collapse)Author
2015-12-09mk: fix install with minimal shellThomas Monjalon
Some shells like dash do not support the syntax {}: {mk,scripts}: No such file or directory Reported-by: Thiago Martins <> Reported-by: Piotr Bartosiewicz <> Signed-off-by: Thomas Monjalon <>
2015-12-08nfp: introduce driver initializationAlejandro Lucero
Signed-off-by: Alejandro Lucero <> Signed-off-by: Rolf Neugebauer <>
2015-12-08mk: fix external library build when combine is enabledThomas Monjalon
The object files are copied to prepare the internal combined library. It must be disabled when building an external library. It has been seen because the directory was missing: examples/ethtool/lib/x86_64-native-linuxapp-gcc/build/lib: No such file or directory Signed-off-by: Thomas Monjalon <>
2015-12-08mk: remove ABI versioning for external libraryAndrew G. Harvey
Signed-off-by: Andrew G. Harvey <> Signed-off-by: Thomas Monjalon <>
2015-12-08mk: fix warnings when adding extra warning flagsPanu Matilainen
Starting with commit 9aa2053c6e81493b23346ff4e387903560de5c81 EXTRA_CFLAGS is sometimes being passed to the compiler without WERROR_FLAGS which can cause spurious warnings by the dozen, for example with when compiling with EXTRA_CFLAGS="-Wformat-security": cc1: warning: -Wformat-security ignored without -Wformat [-Wformat-security] Passing WERROR_FLAGS to AUTO_CPU helper makes the warning flag usage consistent throughout the codebase, silencing the warnings. Fixes: 9aa2053c6e81 ("mk: influence CPU flags with user input") Signed-off-by: Panu Matilainen <> Acked-by: Simon Kagstrom <>
2015-12-08mk: fix external shared library dependencies of driversPanu Matilainen
Similar to commit 5f9115e58cc6f304ff4ade694cf5823d32887d1a, but for qat and mpipe drivers. The former did not exist when the previous patch was sent and latter I just missed. Fixes: 5f9115e58cc6 ("mk: fix shared library dependencies of drivers") Signed-off-by: Panu Matilainen <> Acked-by: Aaron Conole <>
2015-12-06mk: fix shared library dependencies of driversPanu Matilainen
Similar to commit 113c8e13c4201eee207723571f83aaf285277d75, but for bnx2x, pcap, sze2data and xenvirt PMDs. Requiring applications to know about library internal details like dependencies to external helper libraries is a limitation of static linkage, shared libraries should always know their own dependencies for sane operation. This is especially highlighted with dlopen()'ed items, having applications link against about plugin internal dependencies goes on the side of absurd. Note that linking with a shared combined library still requires to know the internal dependencies. Signed-off-by: Panu Matilainen <> Signed-off-by: Thomas Monjalon <>
2015-12-06mk: prepare dependencies in shared libraries not combinedThomas Monjalon
Some DPDK libraries have a dependency. The Mellanox drivers embed this declaration in shared library case. So the application do not need to know the dependency when linking. But it cannot work with static libraries or the combined one. Note that Mellanox drivers are currently not supported in a shared combined library case. Most of the DPDK libraries declare their dependencies to be linked with the application in every cases, even when using drivers as shared library plugins. This patch improves the condition used for Mellanox drivers, so that it can be applied to other drivers without breaking the shared combined library case. Signed-off-by: Thomas Monjalon <>
2015-12-06app/proc_info: rename binary with prefixThomas Monjalon
In order to be installed system-wise, this application needs a prefix. So it makes clear that it is DPDK related. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: install examplesThomas Monjalon
The examples are part of the installed documentation. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: install docThomas Monjalon
The HTML API and HTML/PDF guides may be installed if generated. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: install binding tool in sbin directoryThomas Monjalon
sbin/dpdk_nic_bind is a symbolic link to tools/ where some python objects may be generated. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: install kernel modulesThomas Monjalon
Add kernel modules to "make install". Nothing is done if there is no kernel module compiled. When using "make install T=", the default path is the same as before. The Linux path is based on host kernel version. Suggested-by: Mario Carrillo <> Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: split install ruleThomas Monjalon
Provides new sub-rules to install runtime and sdk separately. The build directory must be changed from BUILD_DIR to O in install rules to avoid a bad recursive effect (O being BUILD_DIR being O + T). Suggested-by: Mario Carrillo <> Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: introduce new install syntaxThomas Monjalon
The old install command was: make install T=x86_64-native-linuxapp-gcc DESTDIR=install It still works and can be replaced by these more standard commands: make config T=x86_64-native-linuxapp-gcc 0=x86_64-native-linuxapp-gcc make O=x86_64-native-linuxapp-gcc make install O=x86_64-native-linuxapp-gcc prefix= DESTDIR=install It means the "make install" do not perform any compilation anymore when T is not used. It is done only in pre_install to keep compatibility with the old syntax based on T= option. The default prefix /usr/local is empty in the T= case which is used only for a local install. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: install a standard cutomizable treeThomas Monjalon
The rule "install" follows these conventions: The variable sdkdir has been added to the more standards ones, to configure the directory used with RTE_SDK when using the DPDK makefiles to build an application. It is still possible to build DPDK with the "install T=" rule without specifying any DESTDIR. In such case there is no install, as before. The old usage of an installed SDK is: make -C examples/helloworld RTE_SDK=$(readlink -m $DESTDIR) \ RTE_TARGET=x86_64-native-linuxapp-gcc RTE_TARGET can be specified but is useless now with an installed SDK. The RTE_SDK directory must now point to a different path depending of the installation. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: move installation procedure in install ruleThomas Monjalon
The real installation was called "binary install" and was done after the build when DESTDIR was specified. Remove this limitation and move the code in install rule only. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: remove multi-target installThomas Monjalon
The multi-target install create some subdirectories with the target name which is not standard for a "make install" procedure. The uninstall procedure cannot be applied properly (without removing all files in a directory). It would need to pre-compute paths. As it is a packaging issue, it is removed from the build system capabilities. The variable BUILD_DIR is also renamed to RTE_OUTPUT used in other files. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: remove testallThomas Monjalon
It is not possible to test every configs on an unique machine. Signed-off-by: Thomas Monjalon <> Acked-by: Panu Matilainen <>
2015-12-06mk: fix combined lib build with ABI versioningFerruh Yigit
Fixes following error (observed when versioning macros used): LD /usr/bin/ld: /root/dpdk/build/lib/ version node not found for symbol <function>@DPDK_x.y Also resulting combined library contains symbol version information: $ readelf -a build/lib/ | grep rte_eal_ | grep @ | head <...> GLOBAL DEFAULT 12 rte_eal_alarm_set@@DPDK_2.0 <...> GLOBAL DEFAULT 12 rte_eal_pci_write_config@@DPDK_2.1 <...> GLOBAL DEFAULT 12 rte_eal_remote_launch@@DPDK_2.0 ... Versioning fixed by merging all version scripts into one automatically and feeding it to final library. Signed-off-by: Ferruh Yigit <>
2015-12-04mk: fix combined library build with Xen driverChristian Ehrhardt
Building RTE_LIBRTE_PMD_XENVIRT was broken when RTE_BUILD_COMBINE_LIBS was enabled ( Now the underlying issue is rather simple, the xen code needs libxenstore. But so far only considered that when RTE_BUILD_COMBINE_LIBS was disabled. While it is correct to create the DPDK sublib linking only in the RTE_BUILD_COMBINE_LIBS=n case, the libxenstore should be added to the linked libs in any case if RTE_LIBRTE_PMD_XENVIRT is enabled. Reported-by: Thiago Martins <> Signed-off-by: Christian Ehrhardt <>
2015-12-04mk: influence CPU flags with user inputSimon Kagstrom
We have encountered a CPU where the AES-NI instruction set is disabled due to export restrictions. Since the build machine and target machine is different, using -native configs doesn't work, and on this CPU, the application refuses to run due to the AES CPU flags being amiss. The patch passes EXTRA_CFLAGS to the figure-out-cpu-flags helper, which allows us to add -mno-aes to the compile flags and resolve this problem. Signed-off-by: Simon Kagstrom <> Acked-by: Olivier Matz <>
2015-12-04mk: fix objects and libraries order when linkingDavid Marchand
The initial problem has been seen while building mlx4 pmd as a shared library on Ubuntu 14.04 (gcc 4.8.4-2ubuntu1~14.04). Resulting .so will lack the DT_NEEDED entry for libibverbs: marchand@ubuntu1404:~/dpdk$ ldd ./build/lib/ => (0x00007fff87ebb000) => /lib/x86_64-linux-gnu/ (0x00007f2ced21a000) /lib64/ (0x00007f2ced821000) And trying to load it in testpmd triggers this error: [...] EAL: undefined symbol: ibv_query_port [...] After some strace, the problem comes from the --as-needed option passed to the linker. It is safer to specify libraries we depend on after the objects we are linking into a shared library, especially when the linker is invoked with options like --as-needed. Fixes: bef06a8a0655 ("mk: set library dependencies in shared object file") Signed-off-by: David Marchand <> Acked-by: Adrien Mazarguil <>
2015-11-25mk: add xgene1 machine target based on armv8-aJerin Jacob
created the new xgene1 machine target to address the difference in optional armv8-a CRC extension availability compared to default armv8-a machine target(enabled CRC extension by default) Signed-off-by: Jerin Jacob <>
2015-11-25hash: use armv8-a CRC32 instructionsJerin Jacob
armv8-a has optional CRC32 extension, march=armv8-a+crc enables code generation for the ARMv8-A architecture together with the optional CRC32 extensions. added RTE_MACHINE_CPUFLAG_CRC32 to detect the availability of CRC32 extension in compile time. At run-time, The RTE_CPUFLAG_CRC32 can be used to find the availability. armv8-a+crc target support added in GCC 4.9, Used inline assembly and emulated __ARM_FEATURE_CRC32 to work with tool-chain < 4.9 Signed-off-by: Jerin Jacob <>
2015-11-25aesni_mb: add driver for multi buffer based cryptoDeclan Doherty
This patch provides the initial implementation of the AES-NI multi-buffer based crypto poll mode driver using DPDK's new cryptodev framework. This PMD is dependent on Intel's multibuffer library, see the whitepaper "Fast Multi-buffer IPsec Implementations on IntelĀ® Architecture Processors", see ref 1 for details on the library's design and ref 2 to download the library itself. This initial implementation is limited to supporting the chained operations of "hash then cipher" or "cipher then hash" for the following cipher and hash algorithms: Cipher algorithms: - RTE_CRYPTO_CIPHER_AES_CBC (with 128-bit, 192-bit and 256-bit keys supported) Authentication algorithms: - RTE_CRYPTO_AUTH_SHA1_HMAC - RTE_CRYPTO_AUTH_SHA256_HMAC - RTE_CRYPTO_AUTH_SHA512_HMAC - RTE_CRYPTO_AUTH_AES_XCBC_MAC Important Note: Due to the fact that the multi-buffer library is designed for accelerating IPsec crypto operation, the digest's generated for the HMAC functions are truncated to lengths specified by IPsec RFC's, ie RFC2404 for using HMAC-SHA-1 with IPsec specifies that the digest is truncate from 20 to 12 bytes. Build instructions: To build DPDK with the AESNI_MB_PMD the user is required to download (ref 2) and compile the multi-buffer library on there system before building DPDK. The environmental variable AESNI_MULTI_BUFFER_LIB_PATH must be exported with the path where you extracted and built the multi buffer library and finally set CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y in config/common_linuxapp. Current status: It's doesn't support crypto operation across chained mbufs, or cipher only or hash only operations. ref 1: ref 2: Signed-off-by: Declan Doherty <> Acked-by: Sergio Gonzalez Monroy <>
2015-11-25qat: add driver for QuickAssist devicesDeclan Doherty
This patch adds a PMD for the Intel Quick Assist Technology DH895xxC hardware accelerator. This patch depends on a QAT PF driver for device initialization. See the file docs/guides/cryptodevs/qat.rst for configuration details This patch supports a limited subset of QAT device functionality, currently supporting chaining of cipher and hash operations for the following algorithmsd: Cipher algorithms: - RTE_CRYPTO_CIPHER_AES_CBC (with 128-bit, 192-bit and 256-bit keys supported) Hash algorithms: - RTE_CRYPTO_AUTH_SHA1_HMAC - RTE_CRYPTO_AUTH_SHA256_HMAC - RTE_CRYPTO_AUTH_SHA512_HMAC - RTE_CRYPTO_AUTH_AES_XCBC_MAC Some limitation on this patchset which shall be contributed in a subsequent release: - Chained mbufs are not supported. - Hash only is not supported. - Cipher only is not supported. - Only in-place is currently supported (destination address is the same as source address). - Only supports session-oriented API implementation (session-less APIs are not supported). Signed-off-by: Declan Doherty <> Signed-off-by: John Griffin <> Signed-off-by: Des O Dea <> Signed-off-by: Fiona Trahe <> Acked-by: Sergio Gonzalez Monroy <>
2015-11-25mbuf_offload: introduce library to attach offloads to mbufDeclan Doherty
This library add support for adding a chain of offload operations to a mbuf. It contains the definition of the rte_mbuf_offload structure as well as helper functions for attaching offloads to mbufs and a mempool management functions. This initial implementation supports attaching multiple offload operations to a single mbuf, but only a single offload operation of a specific type can be attach to that mbuf. Signed-off-by: Declan Doherty <> Acked-by: Konstantin Ananyev <>
2015-11-25cryptodev: introduce API and framework for crypto devicesDeclan Doherty
This patch contains the initial proposed APIs and device framework for integrating crypto packet processing into DPDK. features include: - Crypto device configuration / management APIs - Definitions of supported cipher algorithms and operations. - Definitions of supported hash/authentication algorithms and operations. - Crypto session management APIs - Crypto operation data structures and APIs allocation of crypto operation structure used to specify the crypto operations to be performed on a particular mbuf. - Extension of mbuf to contain crypto operation data pointer and extra flags. - Burst enqueue / dequeue APIs for processing of crypto operations. Signed-off-by: Des O Dea <> Signed-off-by: John Griffin <> Signed-off-by: Fiona Trahe <> Signed-off-by: Declan Doherty <> Acked-by: Sergio Gonzalez Monroy <>
2015-11-20szedata2: add new poll mode driverMatej Vido
Add virtual PMD which communicates with COMBO cards through sze2 layer using libsze2 library. Since link_speed is uint16_t, there can not be used number for 100G speed, therefore link_speed is set to ETH_LINK_SPEED_10G until the type of link_speed is solved. Signed-off-by: Matej Vido <>
2015-11-20mk: fix extra options when linking lib through compilerThomas Monjalon
When using a linker option not known by the compiler like -rpath, the library linkage was failing. It is fixed by prefixing the option with -Wl, as it is done in other makefiles. Signed-off-by: Thomas Monjalon <> Acked-by: Olivier Matz <>
2015-11-20mk: fix build with icc 16Declan Doherty
This patch changes the ICC conditional check to disable -no-inline-max-size and -no-inline-max-total-size to be for all versions of icc greater than 14 and not just for version 15. Signed-off-by: Declan Doherty <> Acked-by: Olivier Matz <>
2015-11-18mk: add thunderx machine target based on armv8-aJerin Jacob
Created the new thunderx machine target to address difference in "cache line size" and "-mcpu=thunderx" vs default armv8-a machine target Signed-off-by: Jerin Jacob <>
2015-11-18mk: introduce ARMv8 architectureJerin Jacob
Signed-off-by: Jerin Jacob <>
2015-11-18mk: introduce ARMv7 architectureVlastimil Kosar
Make DPDK run on ARMv7-A architecture. This patch assumes ARM Cortex-A9. However, it is known to be working on Cortex-A7 and Cortex-A15. Signed-off-by: Vlastimil Kosar <> Signed-off-by: Jan Viktorin <> Acked-by: David Marchand <>
2015-11-18mk: ignore alignment errors for ARMv7Jan Viktorin
There several issues with alignment when compiling for ARMv7. They are not considered to be fatal (ARMv7 supports unaligned access of 32b words), so we just leave them as warnings. They should be solved later, however. Signed-off-by: Jan Viktorin <> Signed-off-by: Vlastimil Kosar <> Acked-by: David Marchand <>
2015-11-18eal/arm: add CPU flags for ARMv7Vlastimil Kosar
This implementation is based on IBM POWER version of rte_cpuflags. We use software emulation of HW capability registers, because those are usually not directly accessible from userspace on ARM. Signed-off-by: Vlastimil Kosar <> Signed-off-by: Jan Viktorin <> Acked-by: David Marchand <>
2015-10-30mlx5: introduce new driver for Mellanox ConnectX-4 adaptersAdrien Mazarguil
In its current state, this driver implements the bare minimum to initialize itself and Mellanox ConnectX-4 adapters without doing anything else (no RX/TX for instance). It is disabled by default since it is based on the mlx4 driver and also depends on libibverbs. Signed-off-by: Adrien Mazarguil <> Signed-off-by: Nelio Laranjeiro <> Signed-off-by: Or Ami <>
2015-10-25mk: quote KERNELCC to allow ccache buildSimon Kagstrom
Otherwise building with KERNELCC="ccache gcc" will fail: ccache: invalid option -- 'p' Signed-off-by: Simon Kagstrom <> Acked-by: Olivier Matz <>
2015-09-03mem: remove dummy malloc libraryThomas Monjalon
The malloc library is now part of the EAL. Signed-off-by: Thomas Monjalon <> Acked-by: Stephen Hemminger <> Acked-by: Neil Horman <>
2015-08-03mlx4: fix shared library dependencyNelio Laranjeiro needs to be linked with libibverbs otherwise, the PMD is not able to open Mellanox devices and the following message is printed by testpmd at startup "librte_pmd_mlx4: cannot access device, is mlx4_ib loaded?". Applications dependency on libibverbs are moved to be only valid in static mode, in shared mode, applications do not depend on it anymore, keeps this dependency and thus is linked with libibverbs. MLX4 cannot be supported in combined shared library because there is no clean way of adding -libverbs to the combined library. Signed-off-by: Nelio Laranjeiro <> Acked-by: Olivier Matz <>
2015-08-03mk: set library dependencies in shared object fileNelio Laranjeiro
Some .so libraries needs to be linked with external libraries. For that the LDLIBS and EXTRA_LDFLAGS variables should be present on the link line when those .so files are created. PMD Makefile is responsible for filling the LDLIBS variable with the link to the external library it needs. Signed-off-by: Nelio Laranjeiro <> Acked-by: Olivier Matz <>
2015-07-27bnx2x: enable PMD buildStephen Hemminger
This is build infrastructure changes for bnx2x driver. - enable BNX2X poll mode driver in default config. - add it to mk - put entry in MAINTAINERS Note: I intentionally did not list myself as maintainer of this driver. QLogic has discussed taking over as maintainer. Signed-off-by: Stephen Hemminger <> Acked-by: Harish Patil <>
2015-07-17app: replace dump_cfg by proc_infoMaryam Tahhan
proc_info displays statistics information including extended stats for given DPDK ports and dumps the memory information for DPDK. Signed-off-by: Maryam Tahhan <> Acked-by: Olivier Matz <>
2015-07-13mpipe: add TILE-Gx mPIPE poll mode driverCyril Chemparathy
This commit adds a poll mode driver for the mPIPE hardware present on TILE-Gx SoCs. Signed-off-by: Cyril Chemparathy <> Signed-off-by: Zhigang Lu <>
2015-07-13eal/tile: add initial TILE-Gx supportCyril Chemparathy
This commit adds support for the TILE-Gx platform, as well as the TILE CPU architecture. This architecture port is fairly simple due to its reliance on generics for most arch stuff. Signed-off-by: Cyril Chemparathy <> Signed-off-by: Zhigang Lu <>
2015-07-13config: remove combined library name optionCyril Chemparathy
The library name is now being pinned to "dpdk" instead of intel_dpdk, powerpc_dpdk, etc. As a result, we no longer need this config item. This patch removes it. Signed-off-by: Cyril Chemparathy <> Signed-off-by: Zhigang Lu <> Acked-by: Bruce Richardson <>
2015-07-13mk: fix shared lib build with stable abiThomas Monjalon
When next ABI is enabled, the shared lib extension is .so.x.1. That's why a double basename was introduced. But the "ifeq NEXT_ABI" was forgotten, removing the .so extension when NEXT_ABI is disabled. It was preventing the linker from finding the .so libraries. Fixes: 506f51cc0da7 ("mk: enable next abi preview") Reported-by: John McNamara <> Signed-off-by: Thomas Monjalon <> Acked-by: John McNamara <>
2015-07-09mk: enable next abi previewThomas Monjalon
When a change makes really hard to keep ABI compatibility, instead of waiting next release to break the ABI, it is smoother to introduce the new code as a preview and disable it when packaging. The flag RTE_NEXT_ABI must be used to "ifdef" the new code. When the release is out, a dynamically linked application can use the new shared libraries with the old ABI while developpers can prepare their application for the next ABI by reading the deprecation notice and easily testing the new code. When starting the next release cycle, the "ifdefs" will be removed and the ABI break will be marked by incrementing LIBABIVER. The map files will also be updated. The default value is enabled to be developer compliant. The packagers must disable it as done in pkg/dpdk.spec. When enabled, all shared library numbers are incremented by appending a minor .1 to the old ABI number. In the next release, only impacted libraries will have a major +1 increment. The impacted libraries must provide an alternative map file to use with this option. The ABI policy is updated. Signed-off-by: Thomas Monjalon <> Acked-by: Neil Horman <>
2015-07-09mk: remove variables identical to config onesThomas Monjalon
CONFIG_RTE_BUILD_SHARED_LIB and CONFIG_RTE_BUILD_COMBINE_LIBS does not have quotes in their values (only y or n). That's why the variables RTE_BUILD_SHARED_LIB and RTE_BUILD_COMBINE_LIBS are always identical to their CONFIG_ counterpart, and are useless. In order to have consistent naming of config options in the makefiles, these options are removed and the "CONFIG_ prefixed" variables are used. Fixes: e25e4d7ef16b ("mk: shared libraries") Fixes: 4d3d79e7a5c6 ("mk: combined library") Signed-off-by: Thomas Monjalon <> Acked-by: Neil Horman <>