cvs commit: src/sys/contrib/ipfilter/netinet fil.c src/sys/dev/netif/sr if_sr.c src/sys/emulation/linux linux_ioctl.c src/sys/net if.c if_atmsubr.c if_var.h net_osdep.h netisr.c rtsock.c src/sys/net/ef if_ef.c src/sys/net/ip6fw ip6_fw.c src/sys/net/ipfw ip_fw2.c ...

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Fri Mar 7 03:35:01 PST 2008


sephe       2008/03/07 03:34:21 PST

DragonFly src repository

  Modified files:
    sys/contrib/ipfilter/netinet fil.c 
    sys/dev/netif/sr     if_sr.c 
    sys/emulation/linux  linux_ioctl.c 
    sys/net              if.c if_atmsubr.c if_var.h net_osdep.h 
                         netisr.c rtsock.c 
    sys/net/ef           if_ef.c 
    sys/net/ip6fw        ip6_fw.c 
    sys/net/ipfw         ip_fw2.c 
    sys/net/pf           pf_if.c 
    sys/net/sppp         if_spppsubr.c 
    sys/net/stf          if_stf.c 
    sys/net/tun          if_tun.c 
    sys/netgraph/eiface  ng_eiface.c 
    sys/netgraph/fec     ng_fec.c 
    sys/netgraph/iface   ng_iface.c 
    sys/netinet          if_ether.c in.c ip_carp.c ip_divert.c 
                         ip_icmp.c ip_input.c sctp_asconf.c 
                         sctp_output.c sctp_pcb.c sctp_usrreq.c 
                         sctputil.c 
    sys/netinet6         icmp6.c in6.c in6_ifattach.c in6_prefix.c 
                         in6_var.h nd6.c nd6_nbr.c nd6_rtr.c 
    sys/netproto/atalk   aarp.c at_control.c 
    sys/netproto/atm     atm_if.c 
    sys/netproto/ipx     ipx.c ipx_input.c ipx_usrreq.c 
    sys/netproto/ns      idp_usrreq.c ns.c ns_input.c 
    sys/platform/pc32/i386 autoconf.c 
    sys/sys              kernel.h 
    sys/vfs/nfs          bootp_subr.c 
    usr.bin/netstat      if.c 
    usr.sbin/ifmcstat    ifmcstat.c 
  Log:
  Parallelize ifnet.if_addrhead accessing by duplicating the list itself
  on each CPU, each list element points to ifaddr:
  - Add SI_SUB_PRE_DRIVERS before SI_SUB_DRIVERS, so action could be taken
    before drivers' initialization (mainly before NIC driver's if_attach())
  - Move netisr_init() to the FIRST of SI_SUB_PRE_DRIVERS, so that
    netmsg_service_port_init() could be called in earlier stage of system
    initialization.
  - Create one thread on each CPU to propagate changes to ifnet.if_addrhead.
    Their thread ports are registered with netmsg_service_port_init() for
    port syncing operation.
  - Change to ifnet.if_addrhead begins in netisr0, i.e. serial of changes
    to ifnet.if_addrhead are serialized by netisr0
  - ifaddr's refcnt is moved to its list elements, i.e. per-CPU refcnt.
    They are initialized to 1 instead of 0.
  - A magic field is added to ifaddr list element to make sure that IFAREF
    and IFAFREE are called on valid ifaddr list element.  This field is
    initialized to a magic value and is wiped out once the list element's
    refcnt drops to 0
  - To close the gap between testing and freeing, once the ifaddr list
    element's refcnt drops to 0, ifa_portfn(0) (a thread's port on CPU0) is
    poked to check whether ifaddr is referenced on other CPUs, if not, then
    ifaddr is freed on ifa_portfn(0)
  
  Reviewed-by: dillon@ (earlier version)
  
  Revision  Changes    Path
  1.11      +18 -3     src/sys/contrib/ipfilter/netinet/fil.c
  1.24      +2 -2      src/sys/dev/netif/sr/if_sr.c
  1.25      +8 -4      src/sys/emulation/linux/linux_ioctl.c
  1.61      +307 -48   src/sys/net/if.c
  1.18      +5 -10     src/sys/net/if_atmsubr.c
  1.45      +53 -10    src/sys/net/if_var.h
  1.8       +0 -2      src/sys/net/net_osdep.h
  1.37      +1 -1      src/sys/net/netisr.c
  1.43      +21 -10    src/sys/net/rtsock.c
  1.26      +3 -19     src/sys/net/ef/if_ef.c
  1.19      +4 -2      src/sys/net/ip6fw/ip6_fw.c
  1.41      +4 -2      src/sys/net/ipfw/ip_fw2.c
  1.10      +4 -2      src/sys/net/pf/pf_if.c
  1.30      +21 -56    src/sys/net/sppp/if_spppsubr.c
  1.21      +4 -2      src/sys/net/stf/if_stf.c
  1.34      +6 -5      src/sys/net/tun/if_tun.c
  1.17      +7 -6      src/sys/netgraph/eiface/ng_eiface.c
  1.23      +0 -1      src/sys/netgraph/fec/ng_fec.c
  1.15      +5 -4      src/sys/netgraph/iface/ng_iface.c
  1.45      +4 -2      src/sys/netinet/if_ether.c
  1.26      +104 -27   src/sys/netinet/in.c
  1.7       +38 -19    src/sys/netinet/ip_carp.c
  1.36      +5 -2      src/sys/netinet/ip_divert.c
  1.28      +6 -2      src/sys/netinet/ip_icmp.c
  1.77      +6 -2      src/sys/netinet/ip_input.c
  1.7       +12 -5     src/sys/netinet/sctp_asconf.c
  1.13      +85 -30    src/sys/netinet/sctp_output.c
  1.14      +6 -2      src/sys/netinet/sctp_pcb.c
  1.13      +11 -4     src/sys/netinet/sctp_usrreq.c
  1.9       +5 -2      src/sys/netinet/sctputil.c
  1.27      +10 -4     src/sys/netinet6/icmp6.c
  1.28      +57 -47    src/sys/netinet6/in6.c
  1.22      +17 -9     src/sys/netinet6/in6_ifattach.c
  1.13      +43 -24    src/sys/netinet6/in6_prefix.c
  1.9       +5 -5      src/sys/netinet6/in6_var.h
  1.27      +7 -4      src/sys/netinet6/nd6.c
  1.23      +13 -5     src/sys/netinet6/nd6_nbr.c
  1.17      +16 -8     src/sys/netinet6/nd6_rtr.c
  1.22      +7 -6      src/sys/netproto/atalk/aarp.c
  1.13      +5 -53     src/sys/netproto/atalk/at_control.c
  1.16      +2 -2      src/sys/netproto/atm/atm_if.c
  1.15      +4 -6      src/sys/netproto/ipx/ipx.c
  1.18      +9 -3      src/sys/netproto/ipx/ipx_input.c
  1.13      +4 -3      src/sys/netproto/ipx/ipx_usrreq.c
  1.15      +5 -4      src/sys/netproto/ns/idp_usrreq.c
  1.17      +4 -6      src/sys/netproto/ns/ns.c
  1.21      +12 -6     src/sys/netproto/ns/ns_input.c
  1.39      +5 -3      src/sys/platform/pc32/i386/autoconf.c
  1.30      +1 -0      src/sys/sys/kernel.h
  1.25      +6 -3      src/sys/vfs/nfs/bootp_subr.c
  1.12      +43 -4     src/usr.bin/netstat/if.c
  1.9       +26 -4     src/usr.sbin/ifmcstat/ifmcstat.c


http://www.dragonflybsd.org/cvsweb/src/sys/contrib/ipfilter/netinet/fil.c.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/dev/netif/sr/if_sr.c.diff?r1=1.23&r2=1.24&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/emulation/linux/linux_ioctl.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/if.c.diff?r1=1.60&r2=1.61&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/if_atmsubr.c.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/if_var.h.diff?r1=1.44&r2=1.45&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/net_osdep.h.diff?r1=1.7&r2=1.8&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/netisr.c.diff?r1=1.36&r2=1.37&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/rtsock.c.diff?r1=1.42&r2=1.43&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/ef/if_ef.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/ip6fw/ip6_fw.c.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/ipfw/ip_fw2.c.diff?r1=1.40&r2=1.41&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/pf/pf_if.c.diff?r1=1.9&r2=1.10&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/sppp/if_spppsubr.c.diff?r1=1.29&r2=1.30&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/stf/if_stf.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/tun/if_tun.c.diff?r1=1.33&r2=1.34&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netgraph/eiface/ng_eiface.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netgraph/fec/ng_fec.c.diff?r1=1.22&r2=1.23&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netgraph/iface/ng_iface.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/if_ether.c.diff?r1=1.44&r2=1.45&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/in.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/ip_carp.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/ip_divert.c.diff?r1=1.35&r2=1.36&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/ip_icmp.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/ip_input.c.diff?r1=1.76&r2=1.77&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/sctp_asconf.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/sctp_output.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/sctp_pcb.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/sctp_usrreq.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/sctputil.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/icmp6.c.diff?r1=1.26&r2=1.27&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/in6.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/in6_ifattach.c.diff?r1=1.21&r2=1.22&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/in6_prefix.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/in6_var.h.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/nd6.c.diff?r1=1.26&r2=1.27&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/nd6_nbr.c.diff?r1=1.22&r2=1.23&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/nd6_rtr.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/atalk/aarp.c.diff?r1=1.21&r2=1.22&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/atalk/at_control.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/atm/atm_if.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/ipx/ipx.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/ipx/ipx_input.c.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/ipx/ipx_usrreq.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/ns/idp_usrreq.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/ns/ns.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netproto/ns/ns_input.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/pc32/i386/autoconf.c.diff?r1=1.38&r2=1.39&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/kernel.h.diff?r1=1.29&r2=1.30&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/bootp_subr.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/usr.bin/netstat/if.c.diff?r1=1.11&r2=1.12&f=u
http://www.dragonflybsd.org/cvsweb/src/usr.sbin/ifmcstat/ifmcstat.c.diff?r1=1.8&r2=1.9&f=u





More information about the Commits mailing list