git: network - Completely revamp the netisr / dispatch code

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Sep 10 09:10:29 PDT 2010


commit c3c96e4421a1087a390825eac6c01c9ed9182387
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Sep 9 15:13:36 2010 -0700

    network - Completely revamp the netisr / dispatch code
    
    * All netisrs are dispatched MPSAFE (followup in later commits)
    
    * Centralize the protocol threads.  There is now just one thread
      per cpu managed by the netisr code.  No more separate tcp/udp threads
      on each cpu.
    
    * Make the mbuf M_HASH/m_pkthdr.hash mechanic the central routing
      mechanic for netmsgs.
    
    * Remove the netisr ip_mport and pktinfo_portfn stuff and replace with a
      cpufn function which handles M_HASH/m_pkthdr.hash when M_HASH is not
      already set.
    
    * Seriously clean up the packet input paths.  Adjust ether_input_chain() and
      friends to not have to adjust the mbuf forwards and backwards, instead
      pass a header offset to the ni_cpufn function.  The ip pullup and other
      related code will use the offset to determine where the ip header is
      within the packet.

Summary of changes:
 sys/bus/usb/usb_ethersubr.c          |    7 +-
 sys/dev/acpica5/acpi_cpu_pstate.c    |   14 +-
 sys/dev/netif/ic/if_ic.c             |    2 +-
 sys/kern/kern_poll.c                 |   18 +-
 sys/net/bpf.c                        |    2 +-
 sys/net/bridge/if_bridge.c           |    2 +-
 sys/net/ef/if_ef.c                   |    8 +-
 sys/net/faith/if_faith.c             |    3 +-
 sys/net/gif/if_gif.c                 |    3 +-
 sys/net/if.c                         |   22 +-
 sys/net/if_atmsubr.c                 |    3 +-
 sys/net/if_ethersubr.c               |  146 ++------
 sys/net/if_poll.c                    |   20 +-
 sys/net/if_var.h                     |    1 -
 sys/net/ipfw/ip_fw2.c                |    4 +-
 sys/net/netisr.c                     |  667 +++++++++++++++-------------------
 sys/net/netisr.h                     |   39 +--
 sys/net/netmsg.h                     |  174 +++++-----
 sys/net/netmsg2.h                    |   12 +-
 sys/net/ppp/if_ppp.c                 |    7 +-
 sys/net/sppp/if_spppsubr.c           |   13 +-
 sys/net/stf/if_stf.c                 |    2 +-
 sys/net/tun/if_tun.c                 |    2 +-
 sys/netbt/bt_input.c                 |    4 +
 sys/netbt/bt_proto.c                 |    3 +-
 sys/netgraph/iface/ng_iface.c        |    2 +-
 sys/netgraph/netgraph/ng_base.c      |    8 +-
 sys/netgraph7/ng_base.c              |    4 +-
 sys/netgraph7/ng_iface.c             |    2 +-
 sys/netgraph7/ng_ip_input.c          |    2 +-
 sys/netinet/if_ether.c               |   20 +-
 sys/netinet/in_proto.c               |    7 +-
 sys/netinet/ip_demux.c               |  178 ++++------
 sys/netinet/ip_divert.c              |   15 +-
 sys/netinet/ip_flow.c                |    6 +-
 sys/netinet/ip_gre.c                 |    4 +-
 sys/netinet/ip_input.c               |  121 ++++---
 sys/netinet/ip_var.h                 |    9 +-
 sys/netinet/tcp_subr.c               |   65 +---
 sys/netinet/tcp_syncache.c           |    4 +-
 sys/netinet/tcp_usrreq.c             |    4 +-
 sys/netinet/tcp_var.h                |    1 -
 sys/netinet/udp_usrreq.c             |   16 +-
 sys/netinet6/ah_input.c              |    2 +-
 sys/netinet6/esp_input.c             |    2 +-
 sys/netinet6/frag6.c                 |    5 +-
 sys/netinet6/in6_proto.c             |    7 +-
 sys/netinet6/ip6_input.c             |    5 +-
 sys/netinet6/ip6_var.h               |    2 +-
 sys/netproto/atalk/aarp.c            |    5 +-
 sys/netproto/atalk/ddp_input.c       |    7 +-
 sys/netproto/atalk/ddp_usrreq.c      |    9 +-
 sys/netproto/atm/atm_subr.c          |    5 +-
 sys/netproto/atm/ipatm/ipatm_input.c |    2 +-
 sys/netproto/ipx/ipx_input.c         |    8 +-
 sys/netproto/ipx/ipx_ip.c            |    2 +-
 sys/netproto/mpls/mpls_demux.c       |   39 +-
 sys/netproto/mpls/mpls_input.c       |   15 +-
 sys/netproto/mpls/mpls_var.h         |    3 +-
 sys/netproto/natm/natm.c             |   11 +-
 sys/netproto/ns/ns_input.c           |    8 +-
 sys/netproto/ns/ns_ip.c              |    2 +-
 sys/sys/mbuf.h                       |    3 +-
 sys/sys/thread.h                     |    4 +-
 64 files changed, 783 insertions(+), 1009 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/c3c96e4421a1087a390825eac6c01c9ed9182387


-- 
DragonFly BSD source repository





More information about the Commits mailing list