cvs commit: src/sys/dev/usb usb_ethersubr.c src/sys/kern kern_poll.c src/sys/net if_ppp.c netisr.c netisr.h rtsock.c src/sys/netatalk ddp_usrreq.c src/sys/netgraph ng_base.c src/sys/netinet if_ether.c ip_input.c src/sys/netinet6 ip6_input.c ...

Robert Watson rwatson at
Fri Jul 4 00:24:03 UTC 2008

rwatson     2008-07-04 00:21:38 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/usb          usb_ethersubr.c 
    sys/kern             kern_poll.c 
    sys/net              if_ppp.c netisr.c netisr.h rtsock.c 
    sys/netatalk         ddp_usrreq.c 
    sys/netgraph         ng_base.c 
    sys/netinet          if_ether.c ip_input.c 
    sys/netinet6         ip6_input.c 
    sys/netipx           ipx_input.c 
    sys/netnatm          natm_proto.c 
  SVN rev 180239 on 2008-07-04 00:21:38Z by rwatson
  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
  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.
  Revision  Changes    Path
  1.24      +6 -1      src/sys/dev/usb/usb_ethersubr.c
  1.33      +2 -4      src/sys/kern/kern_poll.c
  1.123     +4 -3      src/sys/net/if_ppp.c
  1.22      +15 -31    src/sys/net/netisr.c
  1.35      +1 -1      src/sys/net/netisr.h
  1.147     +1 -1      src/sys/net/rtsock.c
  1.56      +3 -3      src/sys/netatalk/ddp_usrreq.c
  1.160     +1 -2      src/sys/netgraph/ng_base.c
  1.172     +1 -1      src/sys/netinet/if_ether.c
  1.338     +1 -1      src/sys/netinet/ip_input.c
  1.101     +1 -1      src/sys/netinet6/ip6_input.c
  1.58      +1 -1      src/sys/netipx/ipx_input.c
  1.21      +1 -1      src/sys/netnatm/natm_proto.c

More information about the cvs-all mailing list