freebsd-skq/sys/net
Robert Watson a7a91e6592 Maintain and observe a ZBUF_FLAG_IMMUTABLE flag on zero-copy BPF
buffer kernel descriptors, which is used to allow the buffer
currently in the BPF "store" position to be assigned to userspace
when it fills, even if userspace hasn't acknowledged the buffer
in the "hold" position yet.  To implement this, notify the buffer
model when a buffer becomes full, and check that the store buffer
is writable, not just for it being full, before trying to append
new packet data.  Shared memory buffers will be assigned to
userspace at most once per fill, be it in the store or in the
hold position.

This removes the restriction that at most one shared memory can
by owned by userspace, reducing the chances that userspace will
need to call select() after acknowledging one buffer in order to
wait for the next buffer when under high load.  This more fully
realizes the goal of zero system calls in order to process a
high-speed packet stream from BPF.

Update bpf.4 to reflect that both buffers may be owned by userspace
at once; caution against assuming this.
2008-04-07 02:51:00 +00:00
..
bpf_buffer.c Fix build with option BPF_JITTER. 2008-03-24 22:21:32 +00:00
bpf_buffer.h Introduce support for zero-copy BPF buffering, which reduces the 2008-03-24 13:49:17 +00:00
bpf_filter.c Improve convergence of bpf_filter.c toward style(9). 2008-03-09 21:13:43 +00:00
bpf_jitter.c
bpf_jitter.h
bpf_zerocopy.c Maintain and observe a ZBUF_FLAG_IMMUTABLE flag on zero-copy BPF 2008-04-07 02:51:00 +00:00
bpf_zerocopy.h Maintain and observe a ZBUF_FLAG_IMMUTABLE flag on zero-copy BPF 2008-04-07 02:51:00 +00:00
bpf.c Maintain and observe a ZBUF_FLAG_IMMUTABLE flag on zero-copy BPF 2008-04-07 02:51:00 +00:00
bpf.h Introduce support for zero-copy BPF buffering, which reduces the 2008-03-24 13:49:17 +00:00
bpfdesc.h Introduce support for zero-copy BPF buffering, which reduces the 2008-03-24 13:49:17 +00:00
bridgestp.c Fix spelling. 2007-12-09 20:47:12 +00:00
bridgestp.h Fix spelling. 2007-12-09 20:47:12 +00:00
bsd_comp.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
ethernet.h Use a uint16_t type for the vlan tag rather an int. 2007-10-18 21:52:31 +00:00
fddi.h
firewire.h
ieee8023ad_lacp.c Switch the LACP state machine over to its own mutex to protect the internals, 2008-03-16 19:25:30 +00:00
ieee8023ad_lacp.h Remove extra semicolons. 2008-03-17 01:26:44 +00:00
if_arc.h
if_arcsubr.c
if_arp.h
if_atm.h
if_atmsubr.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
if_bridge.c Remove a chunk of duplicated code, test the destination address against the 2008-01-18 09:34:09 +00:00
if_bridgevar.h Add an option to limit the number of source MACs that can be behind a bridge 2007-11-04 08:32:27 +00:00
if_clone.c
if_clone.h
if_disc.c Add a comment explaining why disc(4) bears the IFF_LOOPBACK flag. 2007-10-27 19:57:41 +00:00
if_dl.h
if_edsc.c
if_ef.c Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
if_enc.c Remove redundant inclusions of net/bpfdesc.h. 2008-03-24 22:16:46 +00:00
if_ethersubr.c back out last change as Sam believes that it breaks multicast - need to revisit after following up with pyun 2008-03-20 06:19:34 +00:00
if_faith.c
if_fddisubr.c Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
if_fwsubr.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
if_gif.c Improve EtherIP interaction with the bridge 2008-03-06 19:02:37 +00:00
if_gif.h
if_gre.c Replace really convoluted code that simplifies to "a ^= 0x01;" 2008-03-19 22:29:11 +00:00
if_gre.h
if_iso88025subr.c Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
if_lagg.c Switch the LACP state machine over to its own mutex to protect the internals, 2008-03-16 19:25:30 +00:00
if_lagg.h
if_llc.h
if_loop.c Coerce if_loop.c in the general direction of style(9): 2008-04-07 01:43:30 +00:00
if_media.c
if_media.h IFM_IEEE80211_IBSSMASTER hasn't been used in many years; replace it 2008-03-25 21:22:43 +00:00
if_mib.c
if_mib.h
if_ppp.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
if_ppp.h
if_pppvar.h
if_sl.c Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
if_slvar.h
if_sppp.h
if_spppfr.c
if_spppsubr.c
if_stf.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
if_stf.h
if_tap.c
if_tap.h
if_tapvar.h
if_tun.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
if_tun.h
if_types.h
if_var.h expose if_purgemaddrs, it will be used by the vap code unless someone 2008-03-25 21:23:32 +00:00
if_vlan_var.h
if_vlan.c The bridging output function puts the mbuf directly on the interfaces send 2007-10-18 21:22:15 +00:00
if.c expose if_purgemaddrs, it will be used by the vap code unless someone 2008-03-25 21:23:32 +00:00
if.h Add IFF_NEEDSGIANT to IFF_CANTCHANGE, to prevent user-level code 2008-03-27 18:02:30 +00:00
iso88025.h
netisr.c In keeping with style(9)'s recommendations on macros, use a ';' 2008-03-16 10:58:09 +00:00
netisr.h Update netisr comment for the SMPng world order: netisr is no longer 2007-12-31 20:58:50 +00:00
pfil.c pfil(9) locking take 3: Switch to rmlock(9) 2007-11-25 12:41:47 +00:00
pfil.h pfil(9) locking take 3: Switch to rmlock(9) 2007-11-25 12:41:47 +00:00
pfkeyv2.h
ppp_comp.h
ppp_deflate.c
ppp_defs.h
ppp_tty.c
radix.c
radix.h
raw_cb.c Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
raw_cb.h
raw_usrreq.c
route.c Use RTFREE_LOCKED() instead of rtfree() when releasing a reference on the 2008-02-13 16:57:58 +00:00
route.h Add a workaround for a deadlock between the rt_setgate() and rt_check() 2007-12-27 10:00:57 +00:00
rtsock.c In keeping with style(9)'s recommendations on macros, use a ';' 2008-03-16 10:58:09 +00:00
slcompress.c
slcompress.h
slip.h
zlib.c
zlib.h