diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index a44494cabd..80ec8ae206 100755 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -3116,22 +3116,23 @@ public class ConnectivityService extends IConnectivityManager.Stub private void updateMtu(@NonNull LinkProperties newLp, @Nullable LinkProperties oldLp) { final String iface = newLp.getInterfaceName(); final int mtu = newLp.getMtu(); - if (oldLp == null && mtu == 0) { + if (mtu == 0) { // Silently ignore unset MTU value. return; } - if (oldLp != null && newLp.isIdenticalMtu(oldLp)) { - if (VDBG) log("identical MTU - not setting"); + if (oldLp != null && newLp.isIdenticalMtu(oldLp) + && TextUtils.equals(oldLp.getInterfaceName(), iface)) { + if (VDBG) log("identical MTU and iface - not setting"); return; } - if (!LinkProperties.isValidMtu(mtu, newLp.hasGlobalIpv6Address())) { - if (mtu != 0) loge("Unexpected mtu value: " + mtu + ", " + iface); + // Cannot set MTU without interface name + if (TextUtils.isEmpty(iface)) { + if (VDBG) log("Setting MTU size with null iface."); return; } - // Cannot set MTU without interface name - if (TextUtils.isEmpty(iface)) { - loge("Setting MTU size with null iface."); + if (!LinkProperties.isValidMtu(mtu, newLp.hasGlobalIpv6Address())) { + loge("Unexpected mtu value: " + mtu + ", " + iface); return; } diff --git a/tests/unit/java/com/android/server/ConnectivityServiceTest.java b/tests/unit/java/com/android/server/ConnectivityServiceTest.java index 16f7039ee6..3d6ee099c5 100755 --- a/tests/unit/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/unit/java/com/android/server/ConnectivityServiceTest.java @@ -17155,7 +17155,6 @@ public class ConnectivityServiceTest { mWiFiNetworkAgent.sendLinkProperties(new LinkProperties(lp2)); waitForIdle(); - // TODO(b/246398088): the MTU should be set on the new interface. - verify(mMockNetd, never()).interfaceSetMtu(eq(ifaceName2), eq(mtu)); + verify(mMockNetd).interfaceSetMtu(eq(ifaceName2), eq(mtu)); } }