freebsd-nq/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 Revise network interface cloning to take an optional opaque 2006-07-09 06:04:01 +00:00
if_clone.h Revise network interface cloning to take an optional opaque 2006-07-09 06:04:01 +00:00
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 Give a hint that softc can contain many things besides ifp. 2007-03-26 09:05:10 +00:00
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 With exception of the if_name() macro, all definitions in net_osdep.h 2006-08-04 21:27:40 +00:00
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 Fix two panics in lagg. 2007-10-12 03:03:16 +00:00
if_llc.h Move the __packed declarations. This makes sizeof(struct llc) 8 again 2006-12-01 17:50:11 +00:00
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 Use callout mechanism instead of timeout()/untimeout(). 2006-12-05 18:54:21 +00:00
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 Cast the ioctl define to the type of the variable being switched on. 2007-06-10 04:53:13 +00:00
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 Add a sysctl net.link.tap.up_on_open which defaults to zero; when it 2007-03-19 18:17:31 +00:00
if_tap.h Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
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 Remove IPX over IP tunneling support, which allows IPX routing over IP 2007-06-13 14:01:43 +00:00
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 Prepare for 802.1p: 2007-02-28 22:05:30 +00:00
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 Commit the change from FAST_IPSEC to IPSEC. The FAST_IPSEC 2007-07-03 12:13:45 +00:00
ppp_comp.h
ppp_deflate.c
ppp_defs.h
ppp_tty.c Use callout mechanism instead of timeout()/untimeout(). 2006-12-05 18:54:21 +00:00
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 Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
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