How about this patch (still compiling, so untested)? Its based on Rick's suggestion of using an operational and a desired MTU. The operational MTU is simply the net_device's MTU and is always set to the minimum of the lower device's MTU and the desired MTU. The desired MTU can be changed by configuring a MTU for the VLAN device manually. The remaining question is whether we should report the desired MTU to userspace using the netlink interface, or maybe print a message when the MTU is limited by the lower device.