vlan: Propagate physical MTU changes
authorHerbert Xu <herbert@gondor.apana.org.au>
Mon, 20 Jul 2009 14:35:37 +0000 (07:35 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 20 Jul 2009 14:35:37 +0000 (07:35 -0700)
When the physical MTU changes we want to ensure that all existing
VLAN device MTUs do not exceed the new underlying MTU.  This patch
adds that propagation.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/8021q/vlan.c

index fe649081fbdcc192426bfc1639068110b2ba6717..6d37b7e2a76726f70e880cc5bfe397ca432edf8d 100644 (file)
@@ -468,6 +468,19 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
                }
                break;
 
+       case NETDEV_CHANGEMTU:
+               for (i = 0; i < VLAN_GROUP_ARRAY_LEN; i++) {
+                       vlandev = vlan_group_get_device(grp, i);
+                       if (!vlandev)
+                               continue;
+
+                       if (vlandev->mtu <= dev->mtu)
+                               continue;
+
+                       dev_set_mtu(vlandev, dev->mtu);
+               }
+               break;
+
        case NETDEV_FEAT_CHANGE:
                /* Propagate device features to underlying device */
                for (i = 0; i < VLAN_GROUP_ARRAY_LEN; i++) {