Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

Several cases of overlapping changes, except the packet scheduler
conflicts which deal with the addition of the free list parameter
to qdisc_enqueue().

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller
2016-06-30 05:03:36 -04:00
725 changed files with 7052 additions and 4289 deletions

View File

@@ -1,6 +1,6 @@
all:
all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder ptr_ring
all: ring virtio_ring_0_9 virtio_ring_poll virtio_ring_inorder ptr_ring noring
CFLAGS += -Wall
CFLAGS += -pthread -O2 -ggdb
@@ -17,6 +17,7 @@ virtio_ring_0_9: virtio_ring_0_9.o main.o
virtio_ring_poll: virtio_ring_poll.o main.o
virtio_ring_inorder: virtio_ring_inorder.o main.o
ptr_ring: ptr_ring.o main.o
noring: noring.o main.o
clean:
-rm main.o
-rm ring.o ring
@@ -24,5 +25,6 @@ clean:
-rm virtio_ring_poll.o virtio_ring_poll
-rm virtio_ring_inorder.o virtio_ring_inorder
-rm ptr_ring.o ptr_ring
-rm noring.o noring
.PHONY: all clean

View File

@@ -1,2 +1,6 @@
Partial implementation of various ring layouts, useful to tune virtio design.
Uses shared memory heavily.
Typical use:
# sh run-on-all.sh perf stat -r 10 --log-fd 1 -- ./ring

View File

@@ -0,0 +1,69 @@
#define _GNU_SOURCE
#include "main.h"
#include <assert.h>
/* stub implementation: useful for measuring overhead */
void alloc_ring(void)
{
}
/* guest side */
int add_inbuf(unsigned len, void *buf, void *datap)
{
return 0;
}
/*
* skb_array API provides no way for producer to find out whether a given
* buffer was consumed. Our tests merely require that a successful get_buf
* implies that add_inbuf succeed in the past, and that add_inbuf will succeed,
* fake it accordingly.
*/
void *get_buf(unsigned *lenp, void **bufp)
{
return "Buffer";
}
void poll_used(void)
{
}
void disable_call()
{
assert(0);
}
bool enable_call()
{
assert(0);
}
void kick_available(void)
{
assert(0);
}
/* host side */
void disable_kick()
{
assert(0);
}
bool enable_kick()
{
assert(0);
}
void poll_avail(void)
{
}
bool use_buf(unsigned *lenp, void **bufp)
{
return true;
}
void call_used(void)
{
assert(0);
}

View File

@@ -3,10 +3,10 @@
#use last CPU for host. Why not the first?
#many devices tend to use cpu0 by default so
#it tends to be busier
HOST_AFFINITY=$(cd /dev/cpu; ls|grep -v '[a-z]'|sort -n|tail -1)
HOST_AFFINITY=$(lscpu -p=cpu | tail -1)
#run command on all cpus
for cpu in $(cd /dev/cpu; ls|grep -v '[a-z]'|sort -n);
for cpu in $(seq 0 $HOST_AFFINITY)
do
#Don't run guest and host on same CPU
#It actually works ok if using signalling