Re: [PATCH] net: filter: Convert the BPF VM to threaded code

From
Eric Dumazet <hidden>
Date
2011-08-01 18:38:01
Reply to
Hagen Paul Pfeifer, 2011-08-01
Le lundi 01 août 2011 à 20:16 +0200, Hagen Paul Pfeifer a écrit :
* Rui Ueyama | 2011-07-29 01:10:26 [-0700]:
quoted
Convert the BPF VM to threaded code to improve performance.

The BPF VM is basically a big for loop containing a switch statement.  That is
slow because for each instruction it checks the for loop condition and does the
conditional branch of the switch statement.

This patch eliminates the conditional branch, by replacing it with jump table
using GCC's labels-as-values feature. The for loop condition check can also be
removed, because the filter code always end with a RET instruction.
With commit 01f2f3f6ef4d076c I reworked the BPF code so that gcc is in the
ability to generate a jump table, I double checked this. Not sure what happened
in the meantime.
A switch() always generates one conditional branch, catching values not
enumerated in the "case ..." clauses.


Thread (13 messages) 13 messages, 5 authors, last reply 2011-08-09
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help