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
MFC after:	1 week
This commit is contained in:
scf 2009-03-16 03:11:02 +00:00
parent eb1d81774b
commit c01f39de6f

View File

@ -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,12 @@ tapifioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
case SIOCDELMULTI:
break;
case SIOCSIFMTU:
s = splimp();
ifp->if_mtu = ifr->ifr_mtu;
splx(s);
break;
case SIOCGIFSTATUS:
s = splimp();
ifs = (struct ifstat *)data;