freebsd-skq/sys/net
Robert Watson 59dd72d040 Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly
dispatched without Giant, and add NETISR_FORCEQUEUE, which allows specific
netisr handlers to always be dispatched via a queue (deferred).  Mark the
usb and if_ppp netisr handlers as NETISR_FORCEQUEUE, and explicitly
acquire Giant in those handlers.

Previously, any netisr handler not marked NETISR_MPSAFE would necessarily
run deferred and with Giant acquired.  This change removes Giant
scaffolding from the netisr infrastructure, but NETISR_FORCEQUEUE allows
non-MPSAFE handlers to continue to force deferred dispatch so as to avoid
lock order reversals between their acqusition of Giant and any calling
context.

It is likely we will be able to remove NETISR_FORCEQUEUE once
IFF_NEEDSGIANT is removed, as non-MPSAFE usb and if_ppp drivers will no
longer be supported.

Reviewed by:	bz
MFC after:	1 month
X-MFC note:	We can't remove NETISR_MPSAFE from stable/7 for KPI reasons,
		but the rest can go back.
2008-07-04 00:21:38 +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 Set D_TRACKCLOSE to avoid a race in devfs that could lead to orphaned bpf 2008-05-09 19:29:08 +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 Spelling and capitalization fixes. 2008-05-16 03:13:36 +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 Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
if_bridge.c Be smarter about disabling interface capabilities. TOE/TSO/TXCSUM will only be 2008-07-03 15:58:30 +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 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 Add missing braces in #if 0ed code. 2008-05-10 18:33:38 +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 Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
if_gif.c Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
if_gif.h Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
if_gre.c change a variable name ot stop it from colliding with other names in 2008-06-26 22:59:49 +00:00
if_gre.h Add support for the optional key in the GRE header. 2008-06-20 17:26:34 +00:00
if_iso88025subr.c Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +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 Remove the unused softc from the lo(4) driver. 2008-06-29 13:17:01 +00:00
if_media.c
if_media.h Move "1000baseT" from IFM_SUBTYPE_ETHERNET_DESCRIPTIONS to 2008-04-20 16:17:44 +00:00
if_mib.c
if_mib.h
if_ppp.c Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +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 Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
if_stf.h
if_tap.c Don't enforce unique device minor number policy anymore. 2008-06-11 18:55:19 +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 Don't enforce unique device minor number policy anymore. 2008-06-11 18:55:19 +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 Introduce locking around use of ifindex_table, whose use was previously 2008-06-26 23:05:28 +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 Introduce locking around use of ifindex_table, whose use was previously 2008-06-26 23:05:28 +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 Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netisr.h Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +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_mpath.c When RADIX_MPATH is enabled, the route selection is not rotating 2008-05-30 09:34:35 +00:00
radix_mpath.h When RADIX_MPATH is enabled, the route selection is not rotating 2008-05-30 09:34:35 +00:00
radix.c This patch provides the back end support for equal-cost multi-path 2008-04-13 05:45:14 +00:00
radix.h This patch provides the back end support for equal-cost multi-path 2008-04-13 05:45:14 +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
raw_usrreq.c Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
route.c move a #define from a place it shouldn't have been to a place it should 2008-05-10 04:32:58 +00:00
route.h move a #define from a place it shouldn't have been to a place it should 2008-05-10 04:32:58 +00:00
rtsock.c Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
slcompress.c
slcompress.h
slip.h
zlib.c
zlib.h