mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2025-12-15 23:05:34 +01:00
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 <akuster@mvista.com> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
This commit is contained in:
parent
1624ca2f9f
commit
1692d5c302
|
|
@ -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
|
||||
|
||||
|
|
@ -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\"
|
||||
|
||||
57
meta-networking/recipes-kernel/netmap/netmap-modules_git.bb
Normal file
57
meta-networking/recipes-kernel/netmap/netmap-modules_git.bb
Normal file
|
|
@ -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
|
||||
}
|
||||
17
meta-networking/recipes-kernel/netmap/netmap.inc
Normal file
17
meta-networking/recipes-kernel/netmap/netmap.inc
Normal file
|
|
@ -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'
|
||||
35
meta-networking/recipes-kernel/netmap/netmap_git.bb
Normal file
35
meta-networking/recipes-kernel/netmap/netmap_git.bb
Normal file
|
|
@ -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"
|
||||
Loading…
Reference in New Issue
Block a user