Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16f89f88 authored by Jack Yu's avatar Jack Yu
Browse files

Set legacy MTU field for backward compatibility

For IWLAN, MTU is not negotiated as part of the RA. The interface
MTU is still necessary here to ensure full backward compatibility.
To workaround this, we set legacy mtu field with the larger value
of mtu v4 and mtu v6.

Fix: 153470573
Test: FrameworkTelephonyTests
Change-Id: I5bc30437ec4be2b51100a1623543100784ac7d44
parent c8f01a95
Loading
Loading
Loading
Loading
+13 −19
Original line number Diff line number Diff line
@@ -6727,7 +6727,6 @@ public class RIL extends BaseCommands implements CommandsInterface {
        String[] pcscfs = null;

        List<LinkAddress> laList = new ArrayList<>();
        int version;

        if (dcResult instanceof android.hardware.radio.V1_0.SetupDataCallResult) {
            final android.hardware.radio.V1_0.SetupDataCallResult result =
@@ -6750,9 +6749,12 @@ public class RIL extends BaseCommands implements CommandsInterface {
            if (!TextUtils.isEmpty(result.pcscf)) {
                pcscfs = result.pcscf.split("\\s+");
            }
            mtu = result.mtu;
            mtuV4 = mtuV6 = 0;
            version = 0;
            mtu = mtuV4 = mtuV6 = result.mtu;
            if (addresses != null) {
                for (String address : addresses) {
                    laList.add(createLinkAddressFromString(address));
                }
            }
        } else if (dcResult instanceof android.hardware.radio.V1_4.SetupDataCallResult) {
            final android.hardware.radio.V1_4.SetupDataCallResult result =
                    (android.hardware.radio.V1_4.SetupDataCallResult) dcResult;
@@ -6766,9 +6768,12 @@ public class RIL extends BaseCommands implements CommandsInterface {
            dnses = result.dnses.stream().toArray(String[]::new);
            gateways = result.gateways.stream().toArray(String[]::new);
            pcscfs = result.pcscf.stream().toArray(String[]::new);
            mtu = result.mtu;
            mtuV4 = mtuV6 = 0;
            version = 4;
            mtu = mtuV4 = mtuV6 = result.mtu;
            if (addresses != null) {
                for (String address : addresses) {
                    laList.add(createLinkAddressFromString(address));
                }
            }
        } else if (dcResult instanceof android.hardware.radio.V1_5.SetupDataCallResult) {
            final android.hardware.radio.V1_5.SetupDataCallResult result =
                    (android.hardware.radio.V1_5.SetupDataCallResult) dcResult;
@@ -6785,24 +6790,14 @@ public class RIL extends BaseCommands implements CommandsInterface {
            dnses = result.dnses.stream().toArray(String[]::new);
            gateways = result.gateways.stream().toArray(String[]::new);
            pcscfs = result.pcscf.stream().toArray(String[]::new);
            mtu = 0;
            mtu = Math.max(result.mtuV4, result.mtuV6);
            mtuV4 = result.mtuV4;
            mtuV6 = result.mtuV6;
            version = 5;
        } else {
            Rlog.e(RILJ_LOG_TAG, "Unsupported SetupDataCallResult " + dcResult);
            return null;
        }

        if (version < 5) {
            // Process address
            if (addresses != null) {
                for (String address : addresses) {
                    laList.add(createLinkAddressFromString(address));
                }
            }
        }

        // Process dns
        List<InetAddress> dnsList = new ArrayList<>();
        if (dnses != null) {
@@ -6862,7 +6857,6 @@ public class RIL extends BaseCommands implements CommandsInterface {
                .setMtu(mtu)
                .setMtuV4(mtuV4)
                .setMtuV6(mtuV6)
                .setVersion(version)
                .build();
    }

+3 −1
Original line number Diff line number Diff line
@@ -1855,6 +1855,8 @@ public class RILTest extends TelephonyTest {
                        InetAddresses.parseNumericAddress("fd00:976a:c206:20::9"),
                        InetAddresses.parseNumericAddress("fd00:976a:c202:1d::9")))
                .setMtu(1500)
                .setMtuV4(1500)
                .setMtuV6(1500)
                .build();

        assertEquals(response, RIL.convertDataCallResult(result10));
@@ -1925,9 +1927,9 @@ public class RILTest extends TelephonyTest {
                        InetAddresses.parseNumericAddress("fd00:976a:c206:20::6"),
                        InetAddresses.parseNumericAddress("fd00:976a:c206:20::9"),
                        InetAddresses.parseNumericAddress("fd00:976a:c202:1d::9")))
                .setMtu(3000)
                .setMtuV4(1500)
                .setMtuV6(3000)
                .setVersion(5)
                .build();

        assertEquals(response, RIL.convertDataCallResult(result15));