IFF_NEEDSGIANT now gone from 8.x (was: svn commit: r191253 - head/sys/net (fwd))

Robert Watson rwatson at FreeBSD.org
Sat Apr 18 20:54:22 UTC 2009


Dear all:

Just under four years ago, the non-MPSAFE network stack de-orbit burn schedule 
was announced, setting out a plan for eliminating remaining use of the Giant 
lock in the FreeBSD network stack.  With the attached commit, that plan is now 
complete, and almost all of the network stack neither requires Giant nor runs 
with it.  As always there are some loose ends, especially in IPv6, but with 
any luck those can be dealt with 8.0 also.

Special thanks are due to the people who worked on and shepherded the last 
steps of this process -- especially Hans Petter Selasky, Alfred Perlstein, 
Andrew Thompson, Ed Schouten, and John Baldwin, who collectively bought our 
USB, tty, and other non-MPSAFE device driver stacks into a post-SMPng world.

Thanks,

Robert N M Watson
Computer Laboratory
University of Cambridge

---------- Forwarded message ----------
Date: Sat, 18 Apr 2009 20:39:18 +0000 (UTC)
From: Robert Watson <rwatson at FreeBSD.org>
To: src-committers at freebsd.org, svn-src-all at freebsd.org,
     svn-src-head at freebsd.org
Subject: svn commit: r191253 - head/sys/net

Author: rwatson
Date: Sat Apr 18 20:39:17 2009
New Revision: 191253
URL: http://svn.freebsd.org/changeset/base/191253

Log:
   Remove IFF_NEEDSGIANT interface flag: we no longer provide ifnet-layer
   infrastructure to support non-MPSAFE network device drivers.

Modified:
   head/sys/net/if.h

Modified: head/sys/net/if.h
==============================================================================
--- head/sys/net/if.h	Sat Apr 18 20:10:39 2009	(r191252)
+++ head/sys/net/if.h	Sat Apr 18 20:39:17 2009	(r191253)
@@ -149,7 +149,6 @@ struct if_data {
  #define	IFF_PPROMISC	0x20000		/* (n) user-requested promisc mode */
  #define	IFF_MONITOR	0x40000		/* (n) user-requested monitor mode */
  #define	IFF_STATICARP	0x80000		/* (n) static ARP */
-#define	IFF_NEEDSGIANT	0x100000	/* (i) hold Giant over if_start calls */

  /*
   * Old names for driver flags so that user space tools can continue to use
@@ -163,8 +162,7 @@ struct if_data {
  /* flags set internally only: */
  #define	IFF_CANTCHANGE \
  	(IFF_BROADCAST|IFF_POINTOPOINT|IFF_DRV_RUNNING|IFF_DRV_OACTIVE|\
-	    IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI|IFF_SMART|IFF_PROMISC|\
-	    IFF_NEEDSGIANT)
+	    IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI|IFF_SMART|IFF_PROMISC)

  /*
   * Values for if_link_state.


More information about the freebsd-net mailing list