Currently we commit the MTU to the device when updating the IP configuration, or when a port device is added to the controller. This means that for a connection with DHCP, the MTU is set only after DHCP has completed. In particular, if DHCP doesn't complete and the connection has an infinite timeout, the MTU is never set.
_commit_mtu() tracks different sources for the MTU of a device, and each source has a different priority. Among these sources there are the parent link (for VLANs), a dynamic IP configuration (DHCP, PPP) and the connection profile.
A MTU from the connection always has the highest priority and overrides other sources.
Therefore, if the connection specifies an MTU it can be applied at stage2, even before configuring IP addressing.