diff options
Diffstat (limited to 'meta-networking')
5 files changed, 239 insertions, 0 deletions
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 <akuster808@gmail.com> +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 <akuster808@gmail.com> +--- + 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 <akuster@mvista.com> + +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 <<EOF +#define NETMAP_LINUX_HAVE_HRTIMER_MODE_REL +#define NETMAP_LINUX_HAVE_HRTIMER_FORWARD_NOW +#define NETMAP_LINUX_HAVE_PHYS_ADDR_T +#define NETMAP_LINUX_HAVE_ACCESS_ONCE +#define NETMAP_LINUX_HAVE_NETDEV_OPS +#define NETMAP_LINUX_ALLOC_NETDEV_4ARGS +#define NETMAP_LINUX_HAVE_INIT_NET +#define NETMAP_LINUX_HAVE_LIVE_ADDR_CHANGE +#define NETMAP_LINUX_HAVE_TX_SKB_SHARING +#define NETMAP_LINUX_HAVE_UNLOCKED_IOCTL +#define NETMAP_LINUX_HAVE_PERNET_OPS_ID +#define NETMAP_LINUX_VIRTIO_FUNCTIONS +#define NETMAP_LINUX_VIRTIO_FREE_PAGES +#define NETMAP_LINUX_VIRTIO_GET_VRSIZE +#define NETMAP_LINUX_TIMER_RTYPE enum hrtimer_restart +#define NETMAP_LINUX_VIRTIO_MULTI_QUEUE +#define NETMAP_LINUX_HAVE_E1000E_EXT_RXDESC +#define NETMAP_LINUX_HAVE_E1000E_DOWN2 +EOF +} + +do_compile () { + cd ${S}/LINUX + oe_runmake +} + +do_install () { + cd ${S}/LINUX + oe_runmake install +} diff --git a/meta-networking/recipes-kernel/netmap/netmap.inc b/meta-networking/recipes-kernel/netmap/netmap.inc new file mode 100644 index 0000000000..ab33e765d4 --- /dev/null +++ b/meta-networking/recipes-kernel/netmap/netmap.inc @@ -0,0 +1,17 @@ +SUMMARY = "netmap and VALE - very fast packet I/O from userspace (FreeBSD/Linux)" +DESCRIPTION= "NETMAP is a framework for very fast packet I/O from userspace. VALE is an equally fast in-kernel software switch using the netmap API. Both are implemented as a single kernel module for FreeBSD and Linux, and can deal with line rate on real or emulated 10 Gbit ports." +SECTION = "networking" +HOMEPAGE = "http://code.google.com/p/netmap/" +LICENSE = "GPLv2+" + +LIC_FILES_CHKSUM = "file://README;beginline=13;endline=14;md5=56ae0b9c7ba0476ab9098de94c2714d6" + +SRCREV = "da9e19e69b84e4f6f8ae125f8d01b42a4abade6a" +PV = "master+git${SRCPV}" + +SRC_URI = "git://github.com/luigirizzo/netmap.git" +SRC_URI += "file://makefile_fixup.patch" + +S = "${WORKDIR}/git" + +COMPATIBLE_HOST = '(x86_64|i.86|mips|arm).*-linux' diff --git a/meta-networking/recipes-kernel/netmap/netmap_git.bb b/meta-networking/recipes-kernel/netmap/netmap_git.bb new file mode 100644 index 0000000000..f15a626cba --- /dev/null +++ b/meta-networking/recipes-kernel/netmap/netmap_git.bb @@ -0,0 +1,35 @@ +require netmap.inc + +DEPENDS = "netmap-modules" + +EXTRA_OECONF = "--kernel-dir=${STAGING_KERNEL_BUILDDIR} \ + --kernel-sources=${STAGING_KERNEL_DIR} \ + --no-drivers \ + --disable-generic \ + --prefix=${prefix} \ + --destdir=${D} \ + --cc='${CC}' \ + --ld='${LD}' \ + " +SRC_URI += "file://0001-testmmap-fix-compile-issue-with-gcc-5.x.patch" + +do_fetch[depends] += "netmap-modules:do_fetch" + +do_configure () { + cd ${S}/LINUX + ./configure ${EXTRA_OECONF} +} + +do_compile () { + cd ${S}/LINUX + make apps +} + +do_install () { + cd ${S}/LINUX + make install-apps DESTDIR=${D} +} + +FILES_${PN} += "${bindir}" +RDEPENDS_${PN} = "kernel-module-netmap" +RRECOMMENDS_${PN} = "kernel-module-netmap" |