]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: net: Add BPF JIT
authorMarkos Chandras <markos.chandras@imgtec.com>
Tue, 8 Apr 2014 11:47:14 +0000 (12:47 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 30 May 2014 14:10:20 +0000 (16:10 +0200)
commita2ef9023e922fe030b8446ce0e297bea2bb58af4
tree856218411defc225858174e0e2384cffba68c86b
parentccbce95dacbc716f68f8c7ef6b36b0e1667c1eb1
MIPS: net: Add BPF JIT

This adds initial support for BPF-JIT on MIPS

Tested on mips32 LE/BE and mips64 BE/n64 using
dhcp, ping and various tcpdump filters.

Benchmarking:

Assuming the remote MIPS target uses 192.168.154.181
as its IP address, and the local host uses 192.168.154.136,
the following results can be obtained using the following
tcpdump filter (catches no frames) and a simple
'time ping -f -c 1000000' command.

[root@(none) ~]# tcpdump -p -n -s 0 -i eth0 net 10.0.0.0/24 -d
(000) ldh      [12]
(001) jeq      #0x800           jt 2 jf 8
(002) ld       [26]
(003) and      #0xffffff00
(004) jeq      #0xa000000       jt 16 jf 5
(005) ld       [30]
(006) and      #0xffffff00
(007) jeq      #0xa000000       jt 16 jf 17
(008) jeq      #0x806           jt 10 jf 9
(009) jeq      #0x8035          jt 10 jf 17
(010) ld       [28]
(011) and      #0xffffff00
(012) jeq      #0xa000000       jt 16 jf 13
(013) ld       [38]
(014) and      #0xffffff00
(015) jeq      #0xa000000       jt 16 jf 17
(016) ret      #65535

- BPF-JIT Disabled

real    1m38.005s
user    0m1.510s
sys     0m6.710s

- BPF-JIT Enabled

real    1m35.215s
user    0m1.200s
sys     0m4.140s

[ralf@linux-mips.org: Resolved conflict.]

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
arch/mips/Kbuild
arch/mips/net/Makefile [new file with mode: 0644]
arch/mips/net/bpf_jit.c [new file with mode: 0644]
arch/mips/net/bpf_jit.h [new file with mode: 0644]