diff options
-rw-r--r-- | bridge.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -510,7 +510,7 @@ bridge_member_check_cb(struct uloop_timeout *t) bm = container_of(t, struct bridge_member, check_timer); bst = bm->bst; - if (!system_bridge_vlan_check(&bst->dev, bm->dev.dev->ifname)) + if (system_bridge_vlan_check(&bst->dev, bm->dev.dev->ifname) <= 0) return; bridge_disable_member(bm, true); @@ -534,9 +534,6 @@ bridge_member_cb(struct device_user *dep, enum device_event ev) if (bst->n_present == 1) device_set_present(&bst->dev, true); fallthrough; - case DEV_EVENT_LINK_UP: - uloop_timeout_set(&bm->check_timer, 1000); - break; case DEV_EVENT_AUTH_UP: if (!bst->dev.active) break; @@ -552,6 +549,10 @@ bridge_member_cb(struct device_user *dep, enum device_event ev) system_if_apply_settings(&bst->dev, &bst->dev.settings, DEV_OPT_MTU | DEV_OPT_MTU6); break; + case DEV_EVENT_LINK_UP: + if (bst->has_vlans) + uloop_timeout_set(&bm->check_timer, 1000); + break; case DEV_EVENT_LINK_DOWN: if (!dev->settings.auth) break; |