From 1692d5c3020434404fc1ee6911a60b88287a5efb Mon Sep 17 00:00:00 2001 From: Armin Kuster Date: Sun, 9 Aug 2015 05:38:30 +0530 Subject: netmap: add new package this adds netmap, the fast packet I/O framework http://info.iet.unipi.it/~luigi/netmap/ - updated to latest version to get kernel 4.1 support - fixed printf type issue - Fixed manual config options Signed-off-by: Armin Kuster Signed-off-by: Martin Jansa Signed-off-by: Joe MacDonald --- ...1-testmmap-fix-compile-issue-with-gcc-5.x.patch | 33 ++++++++ .../netmap/files/makefile_fixup.patch | 97 ++++++++++++++++++++++ .../recipes-kernel/netmap/netmap-modules_git.bb | 57 +++++++++++++ meta-networking/recipes-kernel/netmap/netmap.inc | 17 ++++ .../recipes-kernel/netmap/netmap_git.bb | 35 ++++++++ 5 files changed, 239 insertions(+) create mode 100644 meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch create mode 100644 meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch create mode 100644 meta-networking/recipes-kernel/netmap/netmap-modules_git.bb create mode 100644 meta-networking/recipes-kernel/netmap/netmap.inc create mode 100644 meta-networking/recipes-kernel/netmap/netmap_git.bb (limited to 'meta-networking/recipes-kernel') diff --git a/meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch b/meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch new file mode 100644 index 0000000000..ea36b1cd91 --- /dev/null +++ b/meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch @@ -0,0 +1,33 @@ +Upstream-Status: Pending + +From c81bf54d6eb870286662a11d3b4a994717c47696 Mon Sep 17 00:00:00 2001 +From: Armin Kuster +Date: Tue, 8 Sep 2015 05:36:27 -0700 +Subject: [PATCH] testmmap: fix compile issue with gcc 5.x + +this fixes: +examples/testmmap.c:540:10: error: format '%ld' expects argument of type 'long int', but argument 3 has type 'ssize_t {aka const int}' [-Werror=format=] +| printf("ring_ofs[%d] %ld\n", i, nifp->ring_ofs[i]); +| ^ + +Signed-off-by: Armin Kuster +--- + examples/testmmap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/examples/testmmap.c b/examples/testmmap.c +index d7f6acc..934489a 100644 +--- a/examples/testmmap.c ++++ b/examples/testmmap.c +@@ -537,7 +537,7 @@ do_if() + for (i = 0; i < 5; i++) + printf("spare1[%d] %u\n", i, nifp->ni_spare1[i]); + for (i = 0; i < (nifp->ni_tx_rings + nifp->ni_rx_rings + 2); i++) +- printf("ring_ofs[%d] %ld\n", i, nifp->ring_ofs[i]); ++ printf("ring_ofs[%d] %zd\n", i, nifp->ring_ofs[i]); + } + + struct netmap_ring * +-- +2.3.5 + diff --git a/meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch b/meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch new file mode 100644 index 0000000000..b050bf0011 --- /dev/null +++ b/meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch @@ -0,0 +1,97 @@ +The makefile assumes building locally. + +Upstream Status: Inappropriate [Native] + +The configure is not auto-make based + +Signed-of-by: Armin Kuster + +Index: LINUX/netmap.mak.in +=================================================================== +--- a/LINUX/netmap.mak.in ++++ b/LINUX/netmap.mak.in +@@ -12,10 +12,9 @@ SRCDIR:=@SRCDIR@ + # The following commands are needed to build the modules as out-of-tree, + # in fact the kernel sources path must be specified. + +-PWD ?= $(CURDIR) + + # Additional compile flags (e.g. header location) +-EXTRA_CFLAGS := -I$(PWD) -I$(SRCDIR) -I$(SRCDIR)/../sys -I$(SRCDIR)/../sys/dev -DCONFIG_NETMAP ++EXTRA_CFLAGS := -I$(SRCDIR) -I$(SRCDIR)/../sys -I$(SRCDIR)/../sys/dev -DCONFIG_NETMAP + EXTRA_CFLAGS += -Wno-unused-but-set-variable + EXTRA_CFLAGS += $(foreach s,$(SUBSYS),-DCONFIG_NETMAP_$(shell echo $s|tr a-z- A-Z_)) + +Index: LINUX/configure +=================================================================== +--- a/LINUX/configure ++++ b/LINUX/configure +@@ -349,52 +349,6 @@ reset_tests() { + EOF + } + +-# run_tests: run all accumulated tests and exec the pertinent +-# success/failure actions for each one. +-run_tests() { +- local t= # prevent -EOF to eat the make TAB +- cat > $TMPDIR/Makefile <<-EOF +- ifneq (\$(KERNELRELEASE),) +- obj-m := $TESTOBJS +- else +- S_DRIVERS := $(drv print) +- all: \$(S_DRIVERS:%=get-%) +- $t \$(MAKE) -C $ksrc M=\$\$PWD $kopts +- +- -include $TOPDIR/drivers.mak +- EOF +- for d in $(drv print); do +- cat >> $TMPDIR/Makefile <<-EOF +- get-$d: +- $t [ -z "\$($d-src)" ] || cp -Rp \$($d-src) \$(if \$($d-dst),\$($d-dst),.) +- $t touch get-$d +- EOF +- done +- echo endif >> $TMPDIR/Makefile +- { +- cat <<-EOF +-############################################################################## +-## BEGIN RUNNING TESTS: $(date) +-############################################################################## +-## Makefile: +- EOF +- cat $TMPDIR/Makefile +- cat <<-EOF +-############################################################################## +- EOF +- } >> config.log +- ( +- cd $TMPDIR +- make -k -j $(grep -c processor /proc/cpuinfo) +- ) >> config.log +- eval "$TESTPOSTPROC" +- cat >> config.log <<-EOF +-############################################################################## +-## END RUNNING TESTS: $(date) +-############################################################################## +- EOF +-} +- + configh=netmap_linux_config.h + # succes/failure actions are expected to write some macros + # in netma_linux_config.h. The following functions can be +@@ -619,7 +573,6 @@ configuration. Please check 'config.log' + reset_tests + rm -f drivers.mak + add_test true broken_buildsystem < /dev/null +-run_tests + + drvname2config() { + local name=$1 +@@ -1280,7 +1233,6 @@ cat > $configh <<-EOF + EOF + + # the TESTPOSTPROC script will add macros to $configh +-run_tests + + define DRIVER_SUFFIX \"$drvsuffix\" + diff --git a/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb b/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb new file mode 100644 index 0000000000..f9ac9ccda1 --- /dev/null +++ b/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb @@ -0,0 +1,57 @@ +require netmap.inc + +DEPENDS = "virtual/kernel" +do_configure[depends] += "virtual/kernel:do_shared_workdir" + +inherit module + +CLEANBROKEN = "1" + +export INSTALL_MOD_DIR="kernel/netmap-modules" + +EXTRA_OECONF = "--kernel-dir=${STAGING_KERNEL_BUILDDIR} \ + --kernel-sources=${STAGING_KERNEL_DIR} \ + --install-mod-path=${D} \ + --driver-suffix="-netmap" \ + " + +LDFLAGS := "${@'${LDFLAGS}'.replace('-Wl,-O1', '')}" +LDFLAGS := "${@'${LDFLAGS}'.replace('-Wl,--as-needed', '')}" + +do_configure () { + cd ${S}/LINUX + ./configure ${EXTRA_OECONF} +} + +do_configure_append () { + cat >> ${S}/LINUX/netmap_linux_config.h <