Determine the multipath hint from data usage.

Bug: 35142602
Test: builds, boots
Change-Id: I0f5de5e313ead442aa210f163db035fcf7de5e73
This commit is contained in:
Lorenzo Colitti
2018-01-24 17:35:07 +09:00
parent d6aa30a780
commit 389a81485e
2 changed files with 16 additions and 0 deletions

View File

@@ -137,6 +137,7 @@ import com.android.server.connectivity.IpConnectivityMetrics;
import com.android.server.connectivity.KeepaliveTracker; import com.android.server.connectivity.KeepaliveTracker;
import com.android.server.connectivity.LingerMonitor; import com.android.server.connectivity.LingerMonitor;
import com.android.server.connectivity.MockableSystemProperties; import com.android.server.connectivity.MockableSystemProperties;
import com.android.server.connectivity.MultipathPolicyTracker;
import com.android.server.connectivity.NetworkAgentInfo; import com.android.server.connectivity.NetworkAgentInfo;
import com.android.server.connectivity.NetworkDiagnostics; import com.android.server.connectivity.NetworkDiagnostics;
import com.android.server.connectivity.NetworkMonitor; import com.android.server.connectivity.NetworkMonitor;
@@ -507,6 +508,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
@VisibleForTesting @VisibleForTesting
final MultinetworkPolicyTracker mMultinetworkPolicyTracker; final MultinetworkPolicyTracker mMultinetworkPolicyTracker;
@VisibleForTesting
final MultipathPolicyTracker mMultipathPolicyTracker;
/** /**
* Implements support for the legacy "one network per network type" model. * Implements support for the legacy "one network per network type" model.
* *
@@ -890,6 +894,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
mContext, mHandler, () -> rematchForAvoidBadWifiUpdate()); mContext, mHandler, () -> rematchForAvoidBadWifiUpdate());
mMultinetworkPolicyTracker.start(); mMultinetworkPolicyTracker.start();
mMultipathPolicyTracker = new MultipathPolicyTracker(mContext, mHandler);
mDnsManager = new DnsManager(mContext, mNetd, mSystemProperties); mDnsManager = new DnsManager(mContext, mNetd, mSystemProperties);
registerPrivateDnsSettingsCallbacks(); registerPrivateDnsSettingsCallbacks();
} }
@@ -1966,6 +1972,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
pw.println(); pw.println();
dumpAvoidBadWifiSettings(pw); dumpAvoidBadWifiSettings(pw);
pw.println();
mMultipathPolicyTracker.dump(pw);
if (argsContain(args, SHORT_ARG) == false) { if (argsContain(args, SHORT_ARG) == false) {
pw.println(); pw.println();
synchronized (mValidationLogs) { synchronized (mValidationLogs) {
@@ -2901,6 +2910,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
return ConnectivityManager.MULTIPATH_PREFERENCE_UNMETERED; return ConnectivityManager.MULTIPATH_PREFERENCE_UNMETERED;
} }
Integer networkPreference = mMultipathPolicyTracker.getMultipathPreference(network);
if (networkPreference != null) {
return networkPreference;
}
return mMultinetworkPolicyTracker.getMeteredMultipathPreference(); return mMultinetworkPolicyTracker.getMeteredMultipathPreference();
} }
@@ -2994,6 +3008,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) { for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
nai.networkMonitor.systemReady = true; nai.networkMonitor.systemReady = true;
} }
mMultipathPolicyTracker.start();
break; break;
} }
case EVENT_REVALIDATE_NETWORK: { case EVENT_REVALIDATE_NETWORK: {

View File

@@ -122,6 +122,7 @@ public class MultinetworkPolicyTracker {
return mAvoidBadWifi; return mAvoidBadWifi;
} }
// TODO: move this to MultipathPolicyTracker.
public int getMeteredMultipathPreference() { public int getMeteredMultipathPreference() {
return mMeteredMultipathPreference; return mMeteredMultipathPreference;
} }