From cdd6de9c3f02b98c4af1e40f1097001c52144873 Mon Sep 17 00:00:00 2001 From: Grzegorz Kolodziejczyk Date: Wed, 30 Jul 2014 11:14:22 +0200 Subject: [PATCH] Fix Bluetooth tethering Ignore linkstate down events for bt-pan interface which cause its remove. Interface should only be removed when we receive the interface remove event. At connect init to bluetooth PAN service, bridge pan device adds tetherable bt-pan interface as set in bluetooth regexs. Before bt-pan interface gets tethered, multiple linkstate events are received by linkstate change notifier. Receiving multiple time of linkstate down may cause remove of tetherable interface (bt-pan), before we call tether method. Finally when tethering method is called and bt-pan tether interface is removed, error is returned because of not available tetherable interfaces. Bug found during bluetooth PTS PAN testing. It affects multiple test cases. Change-Id: Ifb0d16657ca238aa62064fee0fc4ee974a2518ad --- services/java/com/android/server/connectivity/Tethering.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/java/com/android/server/connectivity/Tethering.java index 231a40aef67f..2111f2094b01 100644 --- a/services/java/com/android/server/connectivity/Tethering.java +++ b/services/java/com/android/server/connectivity/Tethering.java @@ -229,6 +229,10 @@ public class Tethering extends INetworkManagementEventObserver.Stub { // ignore usb0 down after enabling RNDIS // we will handle disconnect in interfaceRemoved instead if (VDBG) Log.d(TAG, "ignore interface down for " + iface); + } else if (isBluetooth(iface)) { + // ignore interface down for bt liskstate change + // disconnect will only be handled in interfaceRemoved + if (VDBG) Log.d(TAG, "ignore interface down for " + iface); } else if (sm != null) { sm.sendMessage(TetherInterfaceSM.CMD_INTERFACE_DOWN); mIfaces.remove(iface); -- 2.11.0