netifd: Fix bridge MTU setting when a bridge member is added
[project/netifd.git] / bridge.c
index 4ef0d7e..147fe0a 100644 (file)
--- a/bridge.c
+++ b/bridge.c
@@ -231,10 +231,17 @@ bridge_member_cb(struct device_user *dev, enum device_event ev)
                bm->present = true;
                bst->n_present++;
 
-               if (bst->dev.active)
-                       bridge_enable_member(bm);
-               else if (bst->n_present == 1)
+               if (bst->n_present == 1)
                        device_set_present(&bst->dev, true);
+               if (bst->dev.active && !bridge_enable_member(bm)) {
+                       /*
+                        * Adding a bridge member can overwrite the bridge mtu
+                        * in the kernel, apply the bridge settings in case the
+                        * bridge mtu is set
+                        */
+                       system_if_apply_settings(&bst->dev, &bst->dev.settings,
+                                                DEV_OPT_MTU);
+               }
 
                break;
        case DEV_EVENT_REMOVE: