svn commit: r190307 - stable/7/sys/net

Sean Farley scf at FreeBSD.org
Sun Mar 22 20:03:45 PDT 2009


Author: scf
Date: Mon Mar 23 03:03:44 2009
New Revision: 190307
URL: http://svn.freebsd.org/changeset/base/190307

Log:
  Merge r189866 from head to stable/7:
  
    Add the SIOCSIFMTU ioctl handling directly to tap(4) permitting it to have
    its MTU set higher than 1500 (ETHERMTU).  Its new limit is now 65535 as
    enforced by ifhwioctl() in if.c
  
    This allows a tap(4) device to be added to a bridge, which requires all
    interface members to have the same MTU, with an interface configured for
    jumbo frames.  QEMU may now connect to a network via tap(4) without
    requiring the real interface to have its MTU set to 1500 or lower.
  
    Reviewed by:	rpaulo, bms
  
  Merge r189907 from head to stable/7:
  
    Remove the splimp()/splx() calls around the setting of the MTU.  They are
    no-op's that I inadvertently added.  Even if locking is needed in general
    for the ioctl's, setting a single long will not need it due to the
    operation being atomic.
  
    Reported by:	rwatson

Modified:
  stable/7/sys/net/if_tap.c

Modified: stable/7/sys/net/if_tap.c
==============================================================================
--- stable/7/sys/net/if_tap.c	Mon Mar 23 01:24:17 2009	(r190306)
+++ stable/7/sys/net/if_tap.c	Mon Mar 23 03:03:44 2009	(r190307)
@@ -600,6 +600,7 @@ static int
 tapifioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 {
 	struct tap_softc	*tp = ifp->if_softc;
+	struct ifreq		*ifr = (struct ifreq *)data;
 	struct ifstat		*ifs = NULL;
 	int			 s, dummy;
 
@@ -609,6 +610,10 @@ tapifioctl(struct ifnet *ifp, u_long cmd
 		case SIOCDELMULTI:
 			break;
 
+		case SIOCSIFMTU:
+			ifp->if_mtu = ifr->ifr_mtu;
+			break;
+
 		case SIOCGIFSTATUS:
 			s = splimp();
 			ifs = (struct ifstat *)data;


More information about the svn-src-all mailing list