diff options
author | Patrick Williams <patrick@stwcx.xyz> | 2016-08-17 15:04:38 -0500 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2016-08-22 16:43:32 +0000 |
commit | b48b7b4109868a8c0ddda090992e936e821c7ea6 (patch) | |
tree | 696be8ea782f2548c0f63bb0188f4c8d3eeed681 /import-layers/meta-openembedded/meta-networking/recipes-kernel | |
parent | d849ec78de728ef9a2d383b92ccfeabf40f8f1d0 (diff) | |
download | talos-openbmc-b48b7b4109868a8c0ddda090992e936e821c7ea6.tar.gz talos-openbmc-b48b7b4109868a8c0ddda090992e936e821c7ea6.zip |
Squashed 'import-layers/meta-openembedded/' content from commit 247b126
Change-Id: I40827e9ce5fba63f1cca2a0be44976ae8383b4c0
git-subtree-dir: import-layers/meta-openembedded
git-subtree-split: 247b1267bbe95719cd4877d2d3cfbaf2a2f4865a
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Diffstat (limited to 'import-layers/meta-openembedded/meta-networking/recipes-kernel')
5 files changed, 270 insertions, 0 deletions
diff --git a/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/0001-testmmap-fix-compile-issue-with-gcc-5.x.patch new file mode 100644 index 000000000..ea36b1cd9 --- /dev/null +++ b/import-layers/meta-openembedded/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/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/files/makefile_fixup.patch new file mode 100644 index 000000000..b050bf001 --- /dev/null +++ b/import-layers/meta-openembedded/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/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb new file mode 100644 index 000000000..406a4f3cf --- /dev/null +++ b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap-modules_git.bb @@ -0,0 +1,89 @@ +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" \ + " + +# The driver builds are optional, but for deterministic builds, +# we should be able to explicitly enable/disable the builds +# for them in a proper place (maybe in BSP). +# But we can't use PACKAGECONFIG since there is no option for +# each driver, and the options are: +# --no-drivers do not compile any driver +# --no-drivers= do not compile the given drivers (comma sep.) +# --drivers= only compile the given drivers (comma sep.) +# +# So use NETMAP_DRIVERS and the following python code to add proper +# configs to EXTRA_OECONF. +# +# The default is no-drivers, and all supported drivers are listed +# in NETMAP_ALL_DRIVERS. +NETMAP_DRIVERS ??= "" +NETMAP_ALL_DRIVERS = "ixgbe igb e1000e e1000 veth.c forcedeth.c virtio_net.c r8169.c" + +python __anonymous () { + drivers_list = d.getVar("NETMAP_DRIVERS", True).split() + all_drivers_list = d.getVar("NETMAP_ALL_DRIVERS", True).split() + config_drivers = "--drivers=" + ",".join(drivers_list) + + extra_oeconf_drivers = bb.utils.contains_any('NETMAP_DRIVERS', all_drivers_list, config_drivers, '--no-drivers', d) + d.appendVar("EXTRA_OECONF", extra_oeconf_drivers) +} + +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_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 + +if ${@ 'false' if (bb.utils.vercmp_string(d.getVar('KERNEL_VERSION', True), '3.17') < 0) else 'true' } ; then + echo OK + cat >> ${S}/LINUX/netmap_linux_config.h <<EOF +#define NETMAP_LINUX_ALLOC_NETDEV_4ARGS +EOF +fi +} + +do_compile () { + cd ${S}/LINUX + oe_runmake +} + +do_install () { + cd ${S}/LINUX + oe_runmake install +} diff --git a/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap.inc b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap.inc new file mode 100644 index 000000000..ab33e765d --- /dev/null +++ b/import-layers/meta-openembedded/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/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap_git.bb b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap_git.bb new file mode 100644 index 000000000..a0285851a --- /dev/null +++ b/import-layers/meta-openembedded/meta-networking/recipes-kernel/netmap/netmap_git.bb @@ -0,0 +1,34 @@ +require netmap.inc + +DEPENDS = "netmap-modules" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +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_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" |