opnsense-src/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.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
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 Add BPF Just-In-Time compiler support for ng_bpf(4). 2005-12-07 21:30:47 +00:00
bpf_jitter.h Add BPF Just-In-Time compiler support for ng_bpf(4). 2005-12-07 21:30:47 +00:00
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
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 - Make IFP2ENADDR() a pointer to IF_LLADDR() rather than another 2005-11-11 07:36:14 +00:00
firewire.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
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.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
if_arc.h Use ANSI C function protypes and declarations for if_arcsubr. 2006-04-12 07:44:31 +00:00
if_arcsubr.c Use ANSI C function protypes and declarations for if_arcsubr. 2006-04-12 07:44:31 +00:00
if_arp.h - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
if_atm.h Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
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 /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
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 Add some initial locking to gif(4). It doesn't covers the whole driver, 2006-01-30 08:39:09 +00:00
if_gre.c Replace really convoluted code that simplifies to "a ^= 0x01;" 2008-03-19 22:29:11 +00:00
if_gre.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
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 - Introduce ifmedia_baudrate(), which returns correct baudrate of the 2006-02-14 12:10:03 +00:00
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 Add a new leaf to the net.link.generic.ifdata.%d sysctl to retrieve 2006-01-04 12:57:09 +00:00
if_mib.h Add a new leaf to the net.link.generic.ifdata.%d sysctl to retrieve 2006-01-04 12:57:09 +00:00
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 /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
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 Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_sppp.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_spppfr.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
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 /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
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 Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
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 /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
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.c The bridging output function puts the mbuf directly on the interfaces send 2007-10-18 21:22:15 +00:00
if_vlan_var.h Prepare for 802.1p: 2007-02-28 22:05:30 +00:00
iso88025.h - Make IFP2ENADDR() a pointer to IF_LLADDR() rather than another 2005-11-11 07:36:14 +00:00
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 /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_deflate.c This patch fixes a problem, which exists if you have IPSEC in your kernel 2006-02-27 16:56:22 +00:00
ppp_defs.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_tty.c Use callout mechanism instead of timeout()/untimeout(). 2006-12-05 18:54:21 +00:00
radix.c The code in rn_walktree_from() that checks if we backed up too far 2006-02-07 20:25:39 +00:00
radix.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
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 /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
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 Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
slcompress.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
slip.h Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
zlib.c Forward declare z_errmsg with static linkage since it is defined 2005-09-11 16:13:02 +00:00
zlib.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00