]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/bridge/br_notify.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
[mv-sheeva.git] / net / bridge / br_notify.c
index f8fb49e34764e86cc8884c32b2ee924d512b3365..a43a9c1d50d7daa21c732523e9d2cdb3d36e3a9e 100644 (file)
@@ -52,17 +52,18 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v
                br_stp_recalculate_bridge_id(br);
                break;
 
-       case NETDEV_CHANGE:     /* device is up but carrier changed */
-               if (!(br->dev->flags & IFF_UP))
-                       break;
-
-               if (netif_carrier_ok(dev)) {
-                       if (p->state == BR_STATE_DISABLED)
-                               br_stp_enable_port(p);
-               } else {
-                       if (p->state != BR_STATE_DISABLED)
-                               br_stp_disable_port(p);
-               }
+       case NETDEV_CHANGE:
+               if (br->dev->flags & IFF_UP)
+                       schedule_delayed_work(&p->carrier_check, BR_PORT_DEBOUNCE);
+               break;
+
+       case NETDEV_FEAT_CHANGE:
+               if (br->dev->flags & IFF_UP) 
+                       br_features_recompute(br);
+
+               /* could do recursive feature change notification
+                * but who would care?? 
+                */
                break;
 
        case NETDEV_DOWN: