Stuart Henderson [EMAIL PROTECTED] wrote: > > case SIOCSIFMTU: > - if (ifr->ifr_mtu > ETHERMTU || ifr->ifr_mtu < ETHERMIN) > + if (ifr->ifr_mtu > ETHERMTU + ETHER_VLAN_ENCAP_LEN || > + ifr->ifr_mtu < ETHERMIN) > error = EINVAL; > else if (ifp->if_mtu != ifr->ifr_mtu) > ifp->if_mtu = ifr->ifr_mtu;
This isn't the idea. The MTU is not supposed to be set to 1504, it stays at 1500 and if_vlan sees IFCAP_VLAN_MTU and knows that the chip actually supports MTU + EVL_ENCAPLEN. With this change, then on several chips, if the user expected to set 1504 and then use if_vlan on top of that (say, to pass packets that are alreay tagged by another device) then it would fail.