Send tethered interface callbacks based on interface existence.
Currently, callbacks for tethered interface availability are sent based on interface link state. This is incorrect: - It is acceptable and expected to be able to enable tethering on an interface that does not yet have link up. - It doesn't seem useful to disable Ethernet tethering if link temporarily goes down. Instead, only base the callbacks on whether an interface exists or not. Bug: 150644681 Test: WIP tests in aosp/1260100 pass Change-Id: I015219cbd03626c38fb5156d0cb2991ba7d7def7
This commit is contained in:
@@ -262,6 +262,7 @@ final class EthernetTracker {
|
||||
|
||||
private void removeInterface(String iface) {
|
||||
mFactory.removeInterface(iface);
|
||||
maybeUpdateServerModeInterfaceState(iface, false);
|
||||
}
|
||||
|
||||
private void stopTrackingInterface(String iface) {
|
||||
@@ -308,6 +309,8 @@ final class EthernetTracker {
|
||||
|
||||
Log.d(TAG, "Started tracking interface " + iface);
|
||||
mFactory.addInterface(iface, hwAddress, nc, ipConfiguration);
|
||||
} else {
|
||||
maybeUpdateServerModeInterfaceState(iface, true);
|
||||
}
|
||||
|
||||
// Note: if the interface already has link (e.g., if we crashed and got
|
||||
@@ -341,12 +344,9 @@ final class EthernetTracker {
|
||||
}
|
||||
mListeners.finishBroadcast();
|
||||
}
|
||||
|
||||
updateServerModeInterfaceState(iface, up, mode);
|
||||
}
|
||||
|
||||
private void updateServerModeInterfaceState(String iface, boolean up, int mode) {
|
||||
final boolean available = up && (mode == INTERFACE_MODE_SERVER);
|
||||
private void maybeUpdateServerModeInterfaceState(String iface, boolean available) {
|
||||
if (available == mTetheredInterfaceWasAvailable || !iface.equals(mDefaultInterface)) return;
|
||||
|
||||
final int pendingCbs = mTetheredInterfaceRequests.beginBroadcast();
|
||||
|
||||
Reference in New Issue
Block a user