tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [pooka%netbsd.org@localhost: CVS commit: src/sys]



hi,

> On Wed, Jan 20, 2010 at 10:40:56PM +0100, Joerg Sonnenberger wrote:
>> ----- Forwarded message from Antti Kantee <pooka%netbsd.org@localhost> -----
>> 
>> Module Name: src
>> Committed By:        pooka
>> Date:                Tue Jan 19 22:08:18 UTC 2010
>> 
>> Modified Files:
>>      [snip]
>>      src/sys/net: bpf.c bpf.h if_arcsubr.c if_atmsubr.c if_bridge.c
>>          if_ecosubr.c if_etherip.c if_ethersubr.c if_faith.c if_fddisubr.c
>>          if_gif.c if_gre.c if_hippisubr.c if_ieee1394subr.c if_loop.c
>>          if_ppp.c if_pppoe.c if_sl.c if_srt.c if_stf.c if_strip.c if_tap.c
>>          if_tokensubr.c if_tun.c if_vlan.c ppp_tty.c
>> 
>> Log Message:
>> Redefine bpf linkage through an always present op vector, i.e.
>> #if NBPFILTER is no longer required in the client.  This change
>> doesn't yet add support for loading bpf as a module, since drivers
>> can register before bpf is attached.  However, callers of bpf can
>> now be modularized.
>> 
>> ----- End forwarded message -----
>> 
>> I disagree with this change, at least the part about using a function
>> vector. This adds the overhead on an indirect call for no good reason to
>> a common code path for every single network packet, if there is a BPF
>> listener. That happens as soon as the interface is configured by DHCP.
>> 
>> The same benefit of being able to modularize BPF could be obtained by
>> pushing down the indirect calls into the actual functions. That could at
>> some future point also be optimised by binary patching. This only
>> matters of course, if someone actually wants to make BPF a module, which
>> I am not too sure about given the constrains already mentioned.
>> 
>> So please change this back to use normal function calls. It might be a
>> good time to change bpf_mtap and friends to be simple macros that
>> include the if (ifp->if_bpf) check, but that's more a cosmetic question.
> 
> Thank you for your insightful comments.  It is refreshing to see
> people truly try their best to discover problems.
> 
> If you are concerned with dhcp machine performance, may I suggest
> you start by optimizing the thousands of instructions that bpf
> executes for every packet while trying to decide that it's not
> handling dhcp input.  Also, you'd need to fix bus_space on most
> architectures to keep the damn nic drivers from doing *multiple*
> indirect calls (start with sun2, because this project will benefit
> the most from you working on that).  Finally, follow up with
> binary-patching away that pesky if_input method.

if you prefer to expose bpf_ops to each drivers, i'd like to hear why.
or, do you mean that you simply don't care?

YAMAMOTO Takashi

> 
> best regards,
>   antti


Home | Main Index | Thread Index | Old Index