aboutsummaryrefslogtreecommitdiffstats
path: root/meta-dpdk
diff options
context:
space:
mode:
Diffstat (limited to 'meta-dpdk')
-rw-r--r--meta-dpdk/COPYING.MIT17
-rw-r--r--meta-dpdk/LICENSE5
-rw-r--r--meta-dpdk/README85
-rw-r--r--meta-dpdk/conf/include/maintainers.inc4
-rw-r--r--meta-dpdk/conf/layer.conf19
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/dpdk-dev-libibverbs_1.2.1-3.4-2.0.0.0.bb27
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0001-Fix-build-with-clang.patch32
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0002-typecast-enum-to-int-before-comparison.patch115
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0003-initialize-use_config_mr.patch31
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0004-Fix-clang-warnings.patch56
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/init_c.patch23
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk.inc146
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch44
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-Fix-for-misleading-indentation-error.patch56
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch52
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch33
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch30
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch32
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch42
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch81
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk_17.05.bb19
21 files changed, 949 insertions, 0 deletions
diff --git a/meta-dpdk/COPYING.MIT b/meta-dpdk/COPYING.MIT
new file mode 100644
index 00000000..fb950dc6
--- /dev/null
+++ b/meta-dpdk/COPYING.MIT
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/meta-dpdk/LICENSE b/meta-dpdk/LICENSE
new file mode 100644
index 00000000..e57d3b90
--- /dev/null
+++ b/meta-dpdk/LICENSE
@@ -0,0 +1,5 @@
+All metadata files (including, but not limited to bb, bbappend,
+bbclass, inc and conf files) are MIT licensed unless otherwise stated.
+Source code included in tree for individual recipes is under the
+LICENSE stated in the associated recipe (.bb file) unless otherwise
+stated.
diff --git a/meta-dpdk/README b/meta-dpdk/README
new file mode 100644
index 00000000..6563ff9f
--- /dev/null
+++ b/meta-dpdk/README
@@ -0,0 +1,85 @@
+meta-dpdk
+=========
+
+This README file contains information on building and booting
+meta-intel BSP layers. Please see the corresponding sections below
+for details.
+
+
+Yocto Project Compatible
+========================
+
+The BSPs contained in this layer are compatible with the Yocto Project
+as per the requirements listed here:
+
+ https://www.yoctoproject.org/webform/yocto-project-compatible-registration
+
+
+Dependencies
+============
+
+This layer depends on:
+
+ URI: git://git.openembedded.org/bitbake
+ branch: 1.34
+
+ URI: git://git.openembedded.org/openembedded-core
+ layers: meta
+ branch: rocko
+
+
+Guidelines for submitting patches
+====================================
+
+Please submit any patches against meta-dpdk to the meta-intel
+mailing list (meta-intel@yoctoproject.org). Also, if your patches are
+available via a public git repository, please also include a URL to
+the repo and branch containing your patches as that makes it easier
+for maintainers to grab and test your patches.
+
+There are patch submission scripts available that will, among other
+things, automatically include the repo URL and branch as mentioned.
+Please see the Yocto Project Development Manual sections entitled
+'Using Scripts to Push a Change Upstream and Request a Pull' and
+'Using Email to Submit a Patch' for details.
+
+Regardless of how you submit a patch or patchset, the patches should
+at minimum follow the suggestions outlined in the 'Submitting a Change
+to the Yocto Project' section in the Yocto Project Development Manual.
+Specifically, they should:
+
+ - Include a 'Signed-off-by:' line. A commit can't legally be pulled
+ in without this.
+
+ - Provide a single-line, short summary of the change. This short
+ description should be prefixed by the BSP or recipe name, as
+ appropriate, followed by a colon. Capitalize the first character
+ of the summary (following the colon).
+
+ - For the body of the commit message, provide detailed information
+ that describes what you changed, why you made the change, and the
+ approach you used.
+
+ - If the change addresses a specific bug or issue that is associated
+ with a bug-tracking ID, include a reference to that ID in your
+ detailed description in the following format: [YOCTO #<bug-id>].
+
+ - Pay attention to line length - please don't allow any particular
+ line in the commit message to stretch past 72 characters.
+
+ - For any non-trivial patch, provide information about how you
+ tested the patch, and for any non-trivial or non-obvious testing
+ setup, provide details of that setup.
+
+Doing a quick 'git log' in meta-intel will provide you with many
+examples of good example commits if you have questions about any
+aspect of the preferred format.
+
+The meta-intel maintainers will do their best to review and/or pull in
+a patch or patchset within 24 hours of the time it was posted. For
+larger and/or more involved patches and patchsets, the review process
+may take longer.
+
+Please see the meta-intel/MAINTAINERS file for the list of maintainers
+and their specific areas; it's also a good idea to cc: the specific
+maintainer, if applicable.
diff --git a/meta-dpdk/conf/include/maintainers.inc b/meta-dpdk/conf/include/maintainers.inc
new file mode 100644
index 00000000..b1499f6c
--- /dev/null
+++ b/meta-dpdk/conf/include/maintainers.inc
@@ -0,0 +1,4 @@
+# This file contains a list of recipe maintainers for meta-intel
+
+RECIPE_MAINTAINER_pn-dpdk = "TBD DPDK Flex Team"
+RECIPE_MAINTAINER_pn-dpdk-dev-libibverbs = "TBD DPDK Flex Team"
diff --git a/meta-dpdk/conf/layer.conf b/meta-dpdk/conf/layer.conf
new file mode 100644
index 00000000..61331edc
--- /dev/null
+++ b/meta-dpdk/conf/layer.conf
@@ -0,0 +1,19 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "dpdk"
+BBFILE_PATTERN_dpdk := "^${LAYERDIR}/"
+BBFILE_PRIORITY_dpdk = "5"
+
+LAYERDEPENDS_dpdk = "core"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_dpdk = "1"
+LAYERSERIES_COMPAT_dpdk = "rocko"
+
+require ${LAYERDIR}/conf/include/maintainers.inc
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/dpdk-dev-libibverbs_1.2.1-3.4-2.0.0.0.bb b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/dpdk-dev-libibverbs_1.2.1-3.4-2.0.0.0.bb
new file mode 100644
index 00000000..e40c63b8
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/dpdk-dev-libibverbs_1.2.1-3.4-2.0.0.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "libibverbs library to support Mellanox config"
+HOMEPAGE = "https://github.com/Mellanox/dpdk-dev-libibverbs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7c557f27dd795ba77cc419dddc656b51"
+
+SRC_URI = "https://github.com/Mellanox/dpdk-dev-libibverbs/archive/libibverbs-${PV}.tar.gz;name=${PN} \
+ file://init_c.patch \
+ file://0001-Fix-build-with-clang.patch \
+ file://0002-typecast-enum-to-int-before-comparison.patch \
+ file://0003-initialize-use_config_mr.patch \
+ file://0004-Fix-clang-warnings.patch \
+ "
+
+SRC_URI[dpdk-dev-libibverbs.md5sum] = "65234ee278eb437a7069326f37cd4d86"
+SRC_URI[dpdk-dev-libibverbs.sha256sum] = "a6471515556cb8d10ad471bb7efb8cf760b248a28aceb57d4534d50d572f56cd"
+
+# A machine needs to enable this using:
+# COMPATIBLE_MACHINE_pn-dpdk-dev-libibverbs = "<machine name>"
+
+COMPATIBLE_MACHINE = "null"
+COMPATIBLE_HOST_libc-musl_class-target = "null"
+
+S = "${WORKDIR}/${PN}-libibverbs-${PV}"
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+DEPENDS = "libnl"
+
+inherit pkgconfig autotools
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0001-Fix-build-with-clang.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0001-Fix-build-with-clang.patch
new file mode 100644
index 00000000..93d8aba6
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0001-Fix-build-with-clang.patch
@@ -0,0 +1,32 @@
+From b705caef6c717adc80585843b7fcc68700ced4b6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Aug 2017 09:25:24 -0700
+Subject: [PATCH 1/4] Fix build with clang
+
+Fix
+error: logical not is only applied to the left hand side of this bitwise operator [-Werror,-Wlogical-not-parentheses]
+ if ((!port_attr->comp_mask & IBV_EXP_QUERY_PORT_ATTR_MASK1) ||
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ include/infiniband/verbs_exp.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/infiniband/verbs_exp.h b/include/infiniband/verbs_exp.h
+index ae94deb..42ed83d 100644
+--- a/include/infiniband/verbs_exp.h
++++ b/include/infiniband/verbs_exp.h
+@@ -2955,7 +2955,7 @@ static inline int ibv_exp_query_port(struct ibv_context *context,
+ &port_attr->port_attr);
+
+ /* Check that only valid flags were given */
+- if ((!port_attr->comp_mask & IBV_EXP_QUERY_PORT_ATTR_MASK1) ||
++ if (!(port_attr->comp_mask & IBV_EXP_QUERY_PORT_ATTR_MASK1) ||
+ (port_attr->comp_mask & ~IBV_EXP_QUERY_PORT_ATTR_MASKS) ||
+ (port_attr->mask1 & ~IBV_EXP_QUERY_PORT_MASK)) {
+ errno = EINVAL;
+--
+2.14.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0002-typecast-enum-to-int-before-comparison.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0002-typecast-enum-to-int-before-comparison.patch
new file mode 100644
index 00000000..00516eba
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0002-typecast-enum-to-int-before-comparison.patch
@@ -0,0 +1,115 @@
+From 7edab012f2d28de7e6d3657ec698e1090d0112de Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Aug 2017 09:25:49 -0700
+Subject: [PATCH 2/4] typecast enum to int before comparison
+
+Fix
+error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ examples/cc_pingpong.c | 2 +-
+ examples/rc_pingpong.c | 2 +-
+ examples/srq_pingpong.c | 2 +-
+ examples/task_pingpong.c | 2 +-
+ examples/uc_pingpong.c | 2 +-
+ examples/umr_rc.c | 2 +-
+ examples/xsrq_pingpong.c | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/examples/cc_pingpong.c b/examples/cc_pingpong.c
+index 7b3e397..567c503 100644
+--- a/examples/cc_pingpong.c
++++ b/examples/cc_pingpong.c
+@@ -1408,7 +1408,7 @@ int main(int argc, char *argv[])
+
+ case 'm':
+ mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
+- if (mtu < 0) {
++ if ((int)mtu < 0) {
+ usage(argv[0]);
+ return 1;
+ }
+diff --git a/examples/rc_pingpong.c b/examples/rc_pingpong.c
+index 786577e..e661368 100644
+--- a/examples/rc_pingpong.c
++++ b/examples/rc_pingpong.c
+@@ -759,7 +759,7 @@ int main(int argc, char *argv[])
+
+ case 'm':
+ mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
+- if (mtu < 0) {
++ if ((int)mtu < 0) {
+ usage(argv[0]);
+ return 1;
+ }
+diff --git a/examples/srq_pingpong.c b/examples/srq_pingpong.c
+index 9762866..f85a7cd 100644
+--- a/examples/srq_pingpong.c
++++ b/examples/srq_pingpong.c
+@@ -697,7 +697,7 @@ int main(int argc, char *argv[])
+
+ case 'm':
+ mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
+- if (mtu < 0) {
++ if ((int)mtu < 0) {
+ usage(argv[0]);
+ return 1;
+ }
+diff --git a/examples/task_pingpong.c b/examples/task_pingpong.c
+index 748f8bb..d03a8b2 100644
+--- a/examples/task_pingpong.c
++++ b/examples/task_pingpong.c
+@@ -1005,7 +1005,7 @@ int main(int argc, char *argv[])
+
+ case 'm':
+ mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
+- if (mtu < 0) {
++ if ((int)mtu < 0) {
+ usage(argv[0]);
+ return 1;
+ }
+diff --git a/examples/uc_pingpong.c b/examples/uc_pingpong.c
+index 879bd77..a38a054 100644
+--- a/examples/uc_pingpong.c
++++ b/examples/uc_pingpong.c
+@@ -606,7 +606,7 @@ int main(int argc, char *argv[])
+
+ case 'm':
+ mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
+- if (mtu < 0) {
++ if ((int)mtu < 0) {
+ usage(argv[0]);
+ return 1;
+ }
+diff --git a/examples/umr_rc.c b/examples/umr_rc.c
+index ab76d3c..0ec636a 100644
+--- a/examples/umr_rc.c
++++ b/examples/umr_rc.c
+@@ -950,7 +950,7 @@ int main(int argc, char *argv[])
+
+ case 'm':
+ mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
+- if (mtu < 0) {
++ if ((int)mtu < 0) {
+ usage(argv[0]);
+ return 1;
+ }
+diff --git a/examples/xsrq_pingpong.c b/examples/xsrq_pingpong.c
+index c4ae51d..cebae5d 100644
+--- a/examples/xsrq_pingpong.c
++++ b/examples/xsrq_pingpong.c
+@@ -910,7 +910,7 @@ int main(int argc, char *argv[])
+ break;
+ case 'm':
+ ctx.mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
+- if (ctx.mtu < 0) {
++ if ((int)ctx.mtu < 0) {
+ usage(argv[0]);
+ return 1;
+ }
+--
+2.14.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0003-initialize-use_config_mr.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0003-initialize-use_config_mr.patch
new file mode 100644
index 00000000..da4ef15b
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0003-initialize-use_config_mr.patch
@@ -0,0 +1,31 @@
+From 936da7fcab06ff3bc7c1c1e1ab108a36797da039 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Aug 2017 09:28:00 -0700
+Subject: [PATCH 3/4] initialize use_config_mr
+
+Fixes
+error: variable 'use_contig_mr' is uninitialized when used here [-Werror,-Wuninitialized]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ examples/dcini.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/examples/dcini.c b/examples/dcini.c
+index 001e905..08d75ec 100644
+--- a/examples/dcini.c
++++ b/examples/dcini.c
+@@ -269,7 +269,7 @@ int main(int argc, char *argv[])
+ int size = 4096;
+ int iters = 1000;
+ int use_event = 0;
+- int use_contig_mr;
++ int use_contig_mr = 0;
+ int err;
+ struct ibv_ah_attr ah_attr;
+ struct dc_ctx ctx = {
+--
+2.14.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0004-Fix-clang-warnings.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0004-Fix-clang-warnings.patch
new file mode 100644
index 00000000..26f09e54
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0004-Fix-clang-warnings.patch
@@ -0,0 +1,56 @@
+From 08944074f9d9525a57e88a4990dd833d0999b8df Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Aug 2017 09:36:55 -0700
+Subject: [PATCH 4/4] Fix clang warnings
+
+../../../../../../../workspace/sources/dpdk-dev-libibverbs/examples/intf.c:1221:11: error: comparison of array 'ctx->dev_name' not equal to a null pointer is always true [-Werror,-Wtautological-pointer-compare]
+ if (ctx->dev_name != NULL) {
+ ~~~~~^~~~~~~~ ~~~~
+../../../../../../../workspace/sources/dpdk-dev-libibverbs/examples/intf.c:1893:13: error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
+ if (size < 0 || size > MAX_MSG_SIZE)
+ ~~~~ ^ ~
+../../../../../../../workspace/sources/dpdk-dev-libibverbs/examples/intf.c:1901:12: error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
+ if (mtu < 0)
+ ~~~ ^ ~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ examples/intf.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/examples/intf.c b/examples/intf.c
+index 8d158ee..1f1af50 100644
+--- a/examples/intf.c
++++ b/examples/intf.c
+@@ -1218,7 +1218,7 @@ int create_resources(struct intf_context *ctx)
+ return 1;
+ }
+
+- if (!ctx->dev_name) {
++ if (!ctx->dev_name[0]) {
+ ctx->ib_dev = *dev_list;
+ if (!ctx->ib_dev) {
+ fprintf(stderr, "No IB devices found\n");
+@@ -1828,7 +1828,7 @@ int parse_input(struct intf_input *input, struct intf_input *default_input, int
+ char *ib_devname = NULL;
+ char *vrbs_intf = NULL;
+ char *cpus_str = NULL;
+- unsigned long long size;
++ long long size;
+
+ memcpy(input, default_input, sizeof(*input));
+
+@@ -1898,7 +1898,7 @@ int parse_input(struct intf_input *input, struct intf_input *default_input, int
+
+ case 'm':
+ mtu = mtu_to_enum(strtol(optarg, NULL, 0));
+- if (mtu < 0)
++ if ((int)mtu < 0)
+ goto print_usage;
+ input->ib_data.mtu = mtu;
+ break;
+--
+2.14.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/init_c.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/init_c.patch
new file mode 100644
index 00000000..a7708d7c
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/init_c.patch
@@ -0,0 +1,23 @@
+dpdk-dev-libibverbs: suppress gcc7 warnings
+
+We know that format-truncation in init.c is okay.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+
+--- a/src/init.c
++++ b/src/init.c
+@@ -31,6 +31,11 @@
+ * SOFTWARE.
+ */
+
++/* For this file we know we can ignore this warning. */
++#if __GNUC__ > 6
++#pragma GCC diagnostic ignored "-Wformat-truncation"
++#endif
++
+ #if HAVE_CONFIG_H
+ # include <config.h>
+ #endif /* HAVE_CONFIG_H */
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk.inc b/meta-dpdk/recipes-extended/dpdk/dpdk.inc
new file mode 100644
index 00000000..c1d01491
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk.inc
@@ -0,0 +1,146 @@
+DESCRIPTION = "Intel(r) Data Plane Development Kit"
+HOMEPAGE = "http://dpdk.org"
+LICENSE = "BSD & LGPLv2 & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "http://fast.dpdk.org/rel/${BP}.tar.gz;name=dpdk \
+ file://dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch \
+ file://dpdk-16.07-add-sysroot-option-within-app-makefile.patch \
+ file://dpdk-16.04-Fix-for-misleading-indentation-error.patch \
+ file://dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch \
+ file://dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch \
+ file://dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch \
+ "
+
+# A machine needs to enable this using:
+# COMPATIBLE_MACHINE_pn-dpdk-dev-libibverbs = "<machine name>"
+
+COMPATIBLE_MACHINE = "null"
+COMPATIBLE_HOST_libc-musl_class-target = "null"
+
+
+# dpdk example apps dpdk_qat and vhost have dependancy on fuse and qat.
+# fuse is in meta-filesystems and qat is not yet upstreamed.
+# So adding mechanism to explicitly disable the use of fuse and qat.
+# To enable, uncomment the below line or include in .bbappend.
+# PACKAGECONFIG ?= " dpdk_qat vhost libvirt"
+
+PACKAGECONFIG[dpdk_qat] = ",,virtual/qat"
+PACKAGECONFIG[vhost] = ",,fuse"
+PACKAGECONFIG[libvirt] = ",,libvirt"
+
+export CONFIG_EXAMPLE_DPDK_QAT = "${@bb.utils.contains('PACKAGECONFIG', 'dpdk_qat', 'y', 'n', d)}"
+export CONFIG_EXAMPLE_VM_POWER_MANAGER = "${@bb.utils.contains('PACKAGECONFIG', 'libvirt', 'y', 'n', d)}"
+export CONFIG_VHOST_ENABLED = "${@bb.utils.contains('PACKAGECONFIG', 'vhost', 'y', 'n', d)}"
+
+RDEPENDS_${PN} += "python-subprocess dpdk-dev-libibverbs"
+DEPENDS = "virtual/kernel dpdk-dev-libibverbs"
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
+
+inherit module
+
+export MODULE_DIR="/lib/modules/${KERNEL_VERSION}/kernel/drivers/net"
+export RTE_SDK = "${S}"
+export RTE_TARGET="${@bb.utils.contains("TUNE_FEATURES", "m64", "x86_64-native-linuxapp-gcc", "i686-native-linuxapp-gcc", d)}"
+
+export ICP_ROOT = "${PKG_CONFIG_SYSROOT_DIR}/usr/include"
+export ICP_LIB_ROOT= "${PKG_CONFIG_SYSROOT_DIR}/usr/lib"
+export RTE_KERNELDIR = "${STAGING_KERNEL_DIR}"
+export RTE_KERNELDIR_OUT = "${STAGING_KERNEL_BUILDDIR}"
+export INSTALL_PATH = "${prefix}/share"
+export RTE_OUTPUT = "${S}/${RTE_TARGET}"
+export ETHTOOL_LIB_PATH = "${S}/examples/ethtool/lib/${RTE_TARGET}/"
+export SYSROOTPATH = "--sysroot=${STAGING_DIR_HOST}"
+export DPDK_TARGET_MACH = "${@get_dpdk_target_mach(bb,d)}"
+export ICP_LAC_API_DIR = "${STAGING_DIR_TARGET}${includedir}/lac"
+
+# The list of intel Comms platforms and their target machine
+# process mapping. The supported target machine is listed under
+# dpdk/mk/machine
+def get_dpdk_target_mach(bb, d):
+ target_arch = d.getVar('DPDK_TARGET_MACHINE', True)
+ if target_arch:
+ target_arch
+ return "default"
+
+do_configure () {
+ #############################################################
+ ### default value for prefix is "usr", unsetting it, so it
+ ### will not be concatenated in ${RTE_TARGET}/Makefile
+ ### which will cause compilation failure
+ #############################################################
+ unset prefix
+
+ # Fix-up CONFIG_RTE_MACHINE based on target machine
+ sed -e "s#CONFIG_RTE_MACHINE=\"native\"#CONFIG_RTE_MACHINE=\"${DPDK_TARGET_MACH}\"#" -i ${S}/config/defconfig_x86_64-native-linuxapp-gcc
+ sed -e "s#CONFIG_RTE_MACHINE=\"native\"#CONFIG_RTE_MACHINE=\"${DPDK_TARGET_MACH}\"#" -i ${S}/config/defconfig_i686-native-linuxapp-gcc
+
+ # Fix-up vhost configs based on package config
+ sed -e "s#CONFIG_RTE_KNI_VHOST=n#CONFIG_RTE_KNI_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linuxapp
+ sed -e "s#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=n#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linuxapp
+ sed -e "s#CONFIG_RTE_LIBRTE_VHOST=n#CONFIG_RTE_LIBRTE_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linuxapp
+
+ make O=$RTE_TARGET T=$RTE_TARGET config
+}
+
+do_compile () {
+ unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS
+
+ cd ${S}/${RTE_TARGET}
+ oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" \
+ EXTRA_CFLAGS="--sysroot=${STAGING_DIR_HOST} -I${STAGING_INCDIR}" \
+ CROSS="${TARGET_PREFIX}" \
+ prefix="" LDFLAGS="" WERROR_FLAGS="-w" V=1
+
+ cd ${S}/examples/
+ oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu -fuse-ld=bfd" \
+ EXTRA_CFLAGS="--sysroot=${STAGING_DIR_HOST} -I${STAGING_INCDIR}" \
+ CROSS="${TARGET_PREFIX}" O="${S}/examples/$@/"
+}
+
+do_install () {
+ oe_runmake O=${RTE_OUTPUT} T= install-runtime DESTDIR=${D}
+ oe_runmake O=${RTE_OUTPUT} T= install-kmod DESTDIR=${D} kerneldir=${MODULE_DIR}
+ oe_runmake O=${RTE_OUTPUT} T= install-sdk DESTDIR=${D}
+
+ # Install examples
+ for dirname in ${S}/examples/*
+ do
+ install -m 0755 -d ${D}/${INSTALL_PATH}/examples/`basename ${dirname}`
+
+ for appname in `find ${dirname} -regex ".*${EXAMPLES_BUILD_DIR}\/app\/[-0-9a-zA-Z0-9/_]*$"`
+ do
+ install -m 755 ${appname} ${D}/${INSTALL_PATH}/examples/`basename ${dirname}`/
+ done
+ done
+}
+
+PACKAGES += "${PN}-examples"
+
+FILES_${PN}-dbg += " \
+ ${INSTALL_PATH}/.debug \
+ ${INSTALL_PATH}/examples/*/.debug \
+ "
+
+FILES_${PN}-doc += "\
+ ${INSTALL_PATH}/doc \
+ "
+
+FILES_${PN}-dev += " \
+ ${INSTALL_PATH}/${RTE_TARGET}/.config \
+ ${includedir} \
+ ${includedir}/${ARCHDIR} \
+ ${includedir}/exec-env \
+ ${INSTALL_PATH}/buildtools/ \
+ ${INSTALL_PATH}/${RTE_TARGET}/include \
+ ${INSTALL_PATH}/${RTE_TARGET}/lib \
+ "
+
+FILES_${PN} += " ${INSTALL_PATH}/usertools/ \
+ ${prefix}/sbin/ \
+ ${prefix}/bin/ \
+ ${libdir}/ \
+ "
+FILES_${PN}-examples += " \
+ ${INSTALL_PATH}/examples/* \
+ "
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch
new file mode 100644
index 00000000..cc8041e7
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch
@@ -0,0 +1,44 @@
+From 3924f5df5aca5ba23abbe9a84173280ede8be2dd Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 1 Aug 2017 20:18:46 -0700
+Subject: [PATCH] examples: Fix maybe-uninitialized warning
+
+Initialize arrays to 0, makes compiler happy about
+
+error: 'vals[0]' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ examples/qos_sched/args.c | 2 +-
+ examples/vhost/virtio_net.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
+index 476a0ee..fd601c3 100644
+--- a/examples/qos_sched/args.c
++++ b/examples/qos_sched/args.c
+@@ -241,7 +241,7 @@ static int
+ app_parse_flow_conf(const char *conf_str)
+ {
+ int ret;
+- uint32_t vals[5];
++ uint32_t vals[5] = {0};
+ struct flow_conf *pconf;
+ uint64_t mask;
+
+diff --git a/examples/vhost/virtio_net.c b/examples/vhost/virtio_net.c
+index cc2c3d8..16b5392 100644
+--- a/examples/vhost/virtio_net.c
++++ b/examples/vhost/virtio_net.c
+@@ -327,7 +327,7 @@ vs_dequeue_pkts(struct vhost_dev *dev, uint16_t queue_id,
+ {
+ struct vhost_queue *queue;
+ struct rte_vhost_vring *vr;
+- uint32_t desc_indexes[MAX_PKT_BURST];
++ uint32_t desc_indexes[MAX_PKT_BURST] = {0};
+ uint32_t used_idx;
+ uint32_t i = 0;
+ uint16_t free_entries;
+--
+2.13.3
+
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-Fix-for-misleading-indentation-error.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-Fix-for-misleading-indentation-error.patch
new file mode 100644
index 00000000..8786af7c
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-Fix-for-misleading-indentation-error.patch
@@ -0,0 +1,56 @@
+From 8cd0a16af531cca0af6b4f9b729c252b8bdbf8e2 Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Tue, 5 Jul 2016 00:05:25 +0800
+Subject: [PATCH] Fix for misleading indentation error
+
+fix the indentation of the code to match the block structure. This may cause
+build errors if you have -Wall -Werror in your project.
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+---
+ lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c | 8 ++++----
+ lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c b/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c
+index df22470..ba28eba 100644
+--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c
++++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c
+@@ -3302,8 +3302,8 @@ s32 e1000_read_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 *data)
+ /* Disable access to mPHY if it was originally disabled */
+ if (locked)
+ ready = e1000_is_mphy_ready(hw);
+- if (!ready)
+- return -E1000_ERR_PHY;
++ if (!ready)
++ return -E1000_ERR_PHY;
+ E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
+ E1000_MPHY_DIS_ACCESS);
+
+@@ -3367,8 +3367,8 @@ s32 e1000_write_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 data,
+ /* Disable access to mPHY if it was originally disabled */
+ if (locked)
+ ready = e1000_is_mphy_ready(hw);
+- if (!ready)
+- return -E1000_ERR_PHY;
++ if (!ready)
++ return -E1000_ERR_PHY;
+ E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
+ E1000_MPHY_DIS_ACCESS);
+
+diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c
+index 017dfe1..7248a7e 100644
+--- a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c
++++ b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c
+@@ -870,7 +870,7 @@ s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
+ if (speed & IXGBE_LINK_SPEED_10GB_FULL)
+ if (orig_autoc & IXGBE_AUTOC_KX4_SUPP)
+ autoc |= IXGBE_AUTOC_KX4_SUPP;
+- if ((orig_autoc & IXGBE_AUTOC_KR_SUPP) &&
++ if ((orig_autoc & IXGBE_AUTOC_KR_SUPP) &&
+ (hw->phy.smart_speed_active == false))
+ autoc |= IXGBE_AUTOC_KR_SUPP;
+ if (speed & IXGBE_LINK_SPEED_1GB_FULL)
+--
+1.9.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch
new file mode 100644
index 00000000..e446ce44
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch
@@ -0,0 +1,52 @@
+From 6c8d348190a8cf6c35111913cbf117ca98137e84 Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Fri, 18 Dec 2015 18:30:47 +0800
+Subject: [PATCH] dpdk v2.2.0: add RTE_KERNELDIR_OUT to split kernel build
+ artifact
+
+Introduce RTE_KERNELDIR_OUT to be the path to which kernel build
+artifacts are located. This is for matching the workflow change
+since Yocto Project v1.8 onwards whereby tmp/work-shared contains
+separate directories for kernel source and kernel artifacts.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+---
+ mk/rte.module.mk | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/mk/rte.module.mk b/mk/rte.module.mk
+index 53ed4fe..b7a014b 100644
+--- a/mk/rte.module.mk
++++ b/mk/rte.module.mk
+@@ -77,7 +77,7 @@ build: _postbuild
+ # build module
+ $(MODULE).ko: $(SRCS_LINKS)
+ @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
+- @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
++ @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
+ CC="$(KERNELCC)" CROSS_COMPILE=$(CROSS) V=$(if $V,1,0)
+
+ # install module in $(RTE_OUTPUT)/kmod
+@@ -88,7 +88,7 @@ $(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko
+
+ # install module
+ modules_install:
+- @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
++ @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
+ modules_install
+
+ .PHONY: clean
+@@ -98,7 +98,7 @@ clean: _postclean
+ .PHONY: doclean
+ doclean:
+ @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
+- $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean
++ $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) clean
+ @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
+ if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi ;)
+ @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi
+--
+1.9.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch
new file mode 100644
index 00000000..3719aa78
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch
@@ -0,0 +1,33 @@
+From f7be643cc62860a986c9e0aec990c90bfc58a941 Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Fri, 1 Apr 2016 17:31:55 +0800
+Subject: [PATCH] dpdk: enable ip_fragmentation in common_base config
+
+Upstream-Status: Inappropriate [Configuration]
+
+This configuration need to set for ip_fragmentation application.
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+---
+ config/common_base | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/config/common_base b/config/common_base
+index abd6a64..90259f0 100644
+--- a/config/common_base
++++ b/config/common_base
+@@ -442,6 +442,11 @@ CONFIG_RTE_LIBRTE_POWER_DEBUG=n
+ CONFIG_RTE_MAX_LCORE_FREQS=64
+
+ #
++# Compile ip_fragmentation
++#
++CONFIG_RTE_IP_FRAG=y
++
++#
+ # Compile librte_net
+ #
+ CONFIG_RTE_LIBRTE_NET=y
+--
+1.9.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch
new file mode 100644
index 00000000..4254d073
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch
@@ -0,0 +1,30 @@
+From 8ce0e3249942a90f733bb2113e70e5a90ae67b00 Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Thu, 21 Jul 2016 05:53:52 +0800
+Subject: [PATCH 1/2] dpdk: fix compilation with dynamic libs
+
+Upstream-Status: Inappropriate [Configuration]
+
+Ensure that the correct cflags are being used.
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+---
+ mk/rte.lib.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
+index 8f7e021..42610c9 100644
+--- a/mk/rte.lib.mk
++++ b/mk/rte.lib.mk
+@@ -70,7 +70,7 @@ exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
+
+ ifeq ($(LINK_USING_CC),1)
+ # Override the definition of LD here, since we're linking with CC
+-LD := $(CC) $(CPU_CFLAGS)
++LD := $(CC) $(CPU_CFLAGS) $(EXTRA_CFLAGS)
+ _CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
+ override EXTRA_LDFLAGS := $(call linkerprefix,$(EXTRA_LDFLAGS))
+ else
+--
+1.9.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch
new file mode 100644
index 00000000..a4c47112
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch
@@ -0,0 +1,32 @@
+From a33a9e7559b59bc5fb0988af85062436ec4389a4 Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Fri, 19 Aug 2016 11:57:49 +0800
+Subject: [PATCH] dpdk: add --sysroot option within app makefile
+
+Upstream-Status: Inappropriate [configuration]
+
+rte.app.mk has been changed to add -Wl, to all items listed
+under EXTRA_LDFLAGS. It causes --sysroot=<path> to not setup
+correctly when we depends on gcc to setup for GNU ld.
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+---
+ mk/rte.app.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mk/rte.app.mk b/mk/rte.app.mk
+index eb28e11..296c8c7 100644
+--- a/mk/rte.app.mk
++++ b/mk/rte.app.mk
+@@ -195,7 +195,7 @@ exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
+ ifeq ($(LINK_USING_CC),1)
+ O_TO_EXE = $(CC) -o $@ $(CFLAGS) $(OBJS-y) $(call linkerprefix, \
+ $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
+- $(MAPFLAGS))
++ $(MAPFLAGS)) $(SYSROOTPATH)
+ else
+ O_TO_EXE = $(LD) -o $@ $(OBJS-y) \
+ $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
+--
+1.9.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch
new file mode 100644
index 00000000..fc965fa4
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch
@@ -0,0 +1,42 @@
+From 4cdcb5ea4af9677677a007c4f9b286948123be87 Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Fri, 2 Sep 2016 15:48:52 +0800
+Subject: [PATCH] dpdk: fix for parellel make issue
+
+To make sure that the path of libraries should be correct and
+libraries will be build before, And available at the time of
+linking example apps.
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+---
+ examples/Makefile | 1 +
+ examples/ethtool/ethtool-app/Makefile | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/examples/Makefile b/examples/Makefile
+index 18b41b9..c7c2beb 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -43,6 +43,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += distributor
+ DIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += bond
+ DIRS-y += cmdline
+ DIRS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += distributor
++DEPDIRS-y += examples/ethtool/lib
+ DIRS-y += ethtool
+ DIRS-y += exception_path
+ DIRS-y += helloworld
+diff --git a/examples/ethtool/ethtool-app/Makefile b/examples/ethtool/ethtool-app/Makefile
+index 09c66ad..ec068e6 100644
+--- a/examples/ethtool/ethtool-app/Makefile
++++ b/examples/ethtool/ethtool-app/Makefile
+@@ -47,6 +47,7 @@ SRCS-y := main.c ethapp.c
+ CFLAGS += -O3 -D_GNU_SOURCE -pthread -I$(SRCDIR)/../lib
+ CFLAGS += $(WERROR_FLAGS)
+
++LDLIBS += -L$(ETHTOOL_LIB_PATH)/
+ LDLIBS += -L$(subst ethtool-app,lib,$(RTE_OUTPUT))/lib
+ LDLIBS += -lrte_ethtool
+
+--
+1.9.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch
new file mode 100644
index 00000000..f5171674
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch
@@ -0,0 +1,81 @@
+From 363817bf84286fc167e0c3c255a7fd522bf87d8c Mon Sep 17 00:00:00 2001
+From: Shashwat Pandey <shashwatx.p@intel.com>
+Date: Mon, 20 Feb 2017 15:46:22 +0800
+Subject: [PATCH] dpdk: fix installation warning and issue
+
+Upstream-Status: Inappropriate [configuration]
+
+Ensure that all compiled libs should be installed to correct location.
+For cross compiling cp -r and extra tar flags used to avoid QA warning
+[host-user-contaminated].
+Added excluded files from bin and removing mk and app/dpdk-pmdinfogen files
+installation since it is not needed as a part of image.
+
+Signed-off-by: Shashwat Pandey <shashwatx.p@intel.com>
+---
+ mk/rte.sdkinstall.mk | 29 ++++++++++++++---------------
+ 1 file changed, 14 insertions(+), 15 deletions(-)
+
+diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk
+index dbac2a2..563954e 100644
+--- a/mk/rte.sdkinstall.mk
++++ b/mk/rte.sdkinstall.mk
+@@ -115,16 +115,17 @@ endif
+
+ install-runtime:
+ $(Q)$(call rte_mkdir, $(DESTDIR)$(libdir))
+- $(Q)cp -a $O/lib/* $(DESTDIR)$(libdir)
++ $(Q)cp -r $O/lib/* $(DESTDIR)$(libdir)
+ $(Q)$(call rte_mkdir, $(DESTDIR)$(bindir))
+- $(Q)tar -cf - -C $O --exclude 'app/*.map' \
+- --exclude app/dpdk-pmdinfogen \
+- --exclude 'app/cmdline*' --exclude app/test \
+- --exclude app/testacl --exclude app/testpipeline app | \
+- tar -xf - -C $(DESTDIR)$(bindir) --strip-components=1 \
+- --keep-newer-files
++ $(Q)tar -cf - -C $O --exclude app/dpdk-pmdinfogen app | \
++ tar -xf - -C $(DESTDIR)$(bindir) --no-same-owner --no-same-permissions \
++ --strip-components=1 --keep-newer-files --warning=no-ignore-newer
+ $(Q)$(call rte_mkdir, $(DESTDIR)$(datadir))
+- $(Q)cp -a $(RTE_SDK)/usertools $(DESTDIR)$(datadir)
++ $(Q)cp -r $(RTE_SDK)/usertools $(DESTDIR)$(datadir)
++ $(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/usertools/dpdk-setup.sh, \
++ $(DESTDIR)$(datadir)/usertools/setup.sh)
++ $(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/usertools/dpdk-devbind.py, \
++ $(DESTDIR)$(datadir)/usertools/dpdk_nic_bind.py)
+ $(Q)$(call rte_mkdir, $(DESTDIR)$(sbindir))
+ $(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/usertools/dpdk-devbind.py, \
+ $(DESTDIR)$(sbindir)/dpdk-devbind)
+@@ -142,7 +143,7 @@ endif
+ install-kmod:
+ ifneq ($(wildcard $O/kmod/*),)
+ $(Q)$(call rte_mkdir, $(DESTDIR)$(kerneldir))
+- $(Q)cp -a $O/kmod/* $(DESTDIR)$(kerneldir)
++ $(Q)cp -r $O/kmod/* $(DESTDIR)$(kerneldir)
+ endif
+
+ install-sdk:
+@@ -151,11 +152,9 @@ install-sdk:
+ tar -xf - -C $(DESTDIR)$(includedir) --strip-components=1 \
+ --keep-newer-files
+ $(Q)$(call rte_mkdir, $(DESTDIR)$(sdkdir))
+- $(Q)cp -a $(RTE_SDK)/mk $(DESTDIR)$(sdkdir)
+- $(Q)cp -a $(RTE_SDK)/buildtools $(DESTDIR)$(sdkdir)
+- $(Q)$(call rte_mkdir, $(DESTDIR)$(targetdir)/app)
+- $(Q)cp -a $O/.config $(DESTDIR)$(targetdir)
+- $(Q)cp -a $O/app/dpdk-pmdinfogen $(DESTDIR)$(targetdir)/app
++ $(Q)cp -r $(RTE_SDK)/buildtools $(DESTDIR)$(sdkdir)
++ $(Q)$(call rte_mkdir, $(DESTDIR)$(targetdir))
++ $(Q)cp -r $O/.config $(DESTDIR)$(targetdir)
+ $(Q)$(call rte_symlink, $(DESTDIR)$(includedir), $(DESTDIR)$(targetdir)/include)
+ $(Q)$(call rte_symlink, $(DESTDIR)$(libdir), $(DESTDIR)$(targetdir)/lib)
+
+@@ -171,4 +170,4 @@ ifneq ($(wildcard $O/doc/*/*/*pdf),)
+ $(Q)cp -a $O/doc/*/*/*pdf $(DESTDIR)$(docdir)/guides
+ endif
+ $(Q)$(call rte_mkdir, $(DESTDIR)$(datadir))
+- $(Q)cp -a $(RTE_SDK)/examples $(DESTDIR)$(datadir)
++ $(Q)cp -r $(RTE_SDK)/examples $(DESTDIR)$(datadir)
+--
+1.9.1
+
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk_17.05.bb b/meta-dpdk/recipes-extended/dpdk/dpdk_17.05.bb
new file mode 100644
index 00000000..1a696ede
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk_17.05.bb
@@ -0,0 +1,19 @@
+include dpdk.inc
+
+SRC_URI += "\
+ file://dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch \
+ file://0001-examples-Fix-maybe-uninitialized-warning.patch \
+ "
+
+SRC_URI[dpdk.md5sum] = "39c4e1110dd1ef9dab33edbae820f939"
+SRC_URI[dpdk.sha256sum] = "763bfb7e1765efcc949e79d645dc9f1ebd16591431ba0db5ce22becd928dcd0a"
+
+export EXAMPLES_BUILD_DIR = "${RTE_TARGET}"
+export ARCHDIR = "generic"
+
+do_configure_prepend () {
+ sed -e "s#CONFIG_RTE_LIBRTE_POWER=y#CONFIG_RTE_LIBRTE_POWER=${CONFIG_EXAMPLE_VM_POWER_MANAGER}#" -i ${S}/config/common_linuxapp
+}
+
+COMPATIBLE_HOST_linux-gnux32 = "null"
+COMPATIBLE_HOST_libc-musl_class-target = "null"