freebsd-nq/sys/netgraph
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
..
atm Remove netatm from HEAD as it is not MPSAFE and relies on the now removed 2008-05-25 22:11:40 +00:00
bluetooth Several changes breaking netgraph module ABI collected together: 2008-04-15 21:15:32 +00:00
netflow Add code to allow the system to handle multiple routing tables. 2008-05-09 23:03:00 +00:00
netgraph.h Make it simpler to build netgraph modules outside of the kernel source 2008-06-24 18:49:49 +00:00
ng_async.c
ng_async.h
ng_atmllc.c
ng_atmllc.h
ng_base.c Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
ng_bpf.c Prepare hooks direct pointers on setup to avoid heavy ng_findhook() calls 2008-02-04 19:26:53 +00:00
ng_bpf.h
ng_bridge.c
ng_bridge.h Use variable-sized arrays where appropriate. 2005-10-28 14:41:28 +00:00
ng_car.c - Account all node stats at the shape mode. 2008-03-30 07:53:51 +00:00
ng_car.h Add option to set packets per second limits instead of default 2007-12-19 22:50:14 +00:00
ng_cisco.c Add ipv6 to ng_cisco node. ipv6 wasn't a reality when I wrote it.. 2007-11-30 23:27:39 +00:00
ng_cisco.h
ng_deflate.c Whitespace cleanup. 2007-01-15 05:55:56 +00:00
ng_deflate.h A node that implements the Deflate sub-protocols of the Compression Control 2006-12-28 15:44:05 +00:00
ng_device.c Rename m_getm() to m_getm2() and rewrite it to allocate up to page sized 2006-11-02 17:37:22 +00:00
ng_device.h
ng_echo.c - Return error, if there was one. 2005-04-15 10:14:00 +00:00
ng_echo.h
ng_eiface.c Honor the IFF_MONITOR flag. 2007-07-26 10:54:33 +00:00
ng_eiface.h
ng_etf.c
ng_etf.h
ng_ether.c Implement reference counting for ifmultiaddr, in_multi, and in6_multi 2007-03-20 00:36:10 +00:00
ng_ether.h
ng_fec.c Help ng_fec deal with multicast addresses. 2007-05-18 15:05:49 +00:00
ng_fec.h
ng_frame_relay.c Initialize variable. 2006-01-14 21:49:31 +00:00
ng_frame_relay.h
ng_gif_demux.c
ng_gif_demux.h
ng_gif.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
ng_gif.h
ng_hole.c Fix memory leak. 2005-12-09 07:09:44 +00:00
ng_hole.h
ng_hub.c
ng_hub.h
ng_iface.c Implement stack protection based on GET_STACK_USAGE() macro. 2008-01-31 08:51:48 +00:00
ng_iface.h
ng_ip_input.c
ng_ip_input.h
ng_ipfw.c Unbreak this. 2006-02-14 15:22:24 +00:00
ng_ipfw.h Remove unused now field. 2006-02-17 09:42:49 +00:00
ng_ksocket.c Send only one incoming notification at a time to reduce queue 2008-03-07 21:12:56 +00:00
ng_ksocket.h Use variable-sized arrays where appropriate. 2005-10-28 14:41:28 +00:00
ng_l2tp.c Add session ID hashing to speedup incoming packets dispatch in case 2008-03-16 21:33:12 +00:00
ng_l2tp.h
ng_lmi.c Remove dead code. 2006-01-14 14:17:27 +00:00
ng_lmi.h
ng_message.h Make ng_ID_t fixed size, so that its maximum value is platform independent. 2006-10-17 11:01:20 +00:00
ng_mppc.c Fix build with NETGRAPH_MPPC_COMPRESSION but without NETGRAPH_MPPC_ENCRYPTION. 2007-05-18 15:28:01 +00:00
ng_mppc.h
ng_nat.c Pass really available buffer size to libalias instead of MCLBYTES constant. 2008-06-01 15:13:32 +00:00
ng_nat.h Fix incorrect field name. 2008-03-04 11:10:54 +00:00
ng_one2many.c
ng_one2many.h
ng_parse.c Fix various compilation warnings for gcc-4.2. 2007-06-23 00:02:20 +00:00
ng_parse.h Use variable-sized arrays where appropriate. 2005-10-28 14:41:28 +00:00
ng_ppp.c Do not use bcmp() to compare two bytes with constants. 2008-02-06 20:37:34 +00:00
ng_ppp.h Add 64bit statistic counters to the ng_ppp node. 2007-08-01 20:49:35 +00:00
ng_pppoe.c Use more compact LIST instead of TAILQ for session hash. 2008-03-03 19:36:03 +00:00
ng_pppoe.h Remove some prehistoric never used defines. 2007-12-26 19:15:07 +00:00
ng_pptpgre.c Some minor code and math optimizations. 2008-03-26 21:19:03 +00:00
ng_pptpgre.h Rewrite node to support multiple hooks, alike to ng_l2tp, to use one pair 2008-03-24 22:55:22 +00:00
ng_pred1.c Slightly simplify code. 2008-01-27 02:04:12 +00:00
ng_pred1.h A node that implements Predictor-1 compression for PPP. 2006-12-29 09:54:32 +00:00
ng_rfc1490.c
ng_rfc1490.h
ng_sample.c
ng_sample.h
ng_socket.c Improve apply callback error reporting: 2008-03-11 21:58:48 +00:00
ng_socket.h Make the sg_len and sg_family members of the sockaddr_ng the same type 2006-10-17 11:03:55 +00:00
ng_socketvar.h In the splnet times, netgraph was functional and synchronous. Nowadays, 2005-07-05 17:35:20 +00:00
ng_source.c Ensure message passed to "settimestamp" and "setcounter" is the right 2007-03-02 14:36:19 +00:00
ng_source.h Add "setcounter" and "getcounter" messages, providing the the ability 2007-03-02 01:44:04 +00:00
ng_split.c Plug item leak in case when not all hooks are connected. 2005-08-29 13:47:08 +00:00
ng_split.h Make the cookie constant name canonical. 2005-10-25 20:56:12 +00:00
ng_sppp.c Various bpf(4) related fixes to catch places up to the new bpf(4) 2006-12-29 13:59:50 +00:00
ng_sppp.h
ng_tag.c A netgraph node that can do different manipulations with 2006-06-27 12:45:28 +00:00
ng_tag.h A netgraph node that can do different manipulations with 2006-06-27 12:45:28 +00:00
ng_tcpmss.c Update ip and tcp pointers after m_pullup(). 2007-01-15 05:01:31 +00:00
ng_tcpmss.h Add ng_tcpmss node, which alters MSS options of TCP packets. Useful to 2005-06-10 08:02:34 +00:00
ng_tee.c Fix shutdown bug made by previous commit. 2008-02-24 10:13:32 +00:00
ng_tee.h
ng_tty.c Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
ng_tty.h
ng_UI.c
ng_UI.h
ng_vjc.c Use __LP64__ to check for the 64-bit pointer type, and fix -Wundef. 2005-12-04 00:25:03 +00:00
ng_vjc.h
ng_vlan.c Silence a gcc warning in a more canonical way (evl = NULL rather than &evl). 2007-06-11 15:29:02 +00:00
ng_vlan.h Use variable-sized arrays where appropriate. 2005-10-28 14:41:28 +00:00
NOTES