diff options
author | nobodyAtall <birbilis@gmail.com> | 2011-10-13 21:04:01 +0300 |
---|---|---|
committer | nobodyAtall <birbilis@gmail.com> | 2011-10-13 21:04:01 +0300 |
commit | 43248a419c3baad070c80b0146532bb662f16c1f (patch) | |
tree | 59c3d713bbc941f6bdb36146f9bd24f2da128567 | |
parent | 07914a409fa653807bc94829e9aaa7a4fee20bc7 (diff) | |
download | frameworks_base-43248a419c3baad070c80b0146532bb662f16c1f.zip frameworks_base-43248a419c3baad070c80b0146532bb662f16c1f.tar.gz frameworks_base-43248a419c3baad070c80b0146532bb662f16c1f.tar.bz2 |
For some devices (like SEMC 2010 ones), the kernel sends back a kickback usb disconnect message when usb tethering is enabled.
This patch ignores this disconnect message and is configurable by the ro.tethering.kb_disconnect property by the devices needing it.
Change-Id: I5cff63c015aeb5630452f828859aa7c523f1b068
-rw-r--r-- | services/java/com/android/server/connectivity/Tethering.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/java/com/android/server/connectivity/Tethering.java index ff57ffd..6c6667a 100644 --- a/services/java/com/android/server/connectivity/Tethering.java +++ b/services/java/com/android/server/connectivity/Tethering.java @@ -43,6 +43,7 @@ import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.SystemProperties; import android.provider.Settings; import android.util.Log; @@ -116,6 +117,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub { private boolean mLegacy = false; // whether we need legacy tethering support or not private int mProbing = 0; // track RNDIS enable/disable disconnects + private int kb_disconnect = 0; // whether there is a kickback usb disconnection event when rndis is enabled public Tethering(Context context, Looper looper) { mContext = context; @@ -505,7 +507,12 @@ public class Tethering extends INetworkManagementEventObserver.Stub { if (enable) { interfaceAdded(iface); } else { - interfaceRemoved(iface); + if (kb_disconnect == 0) { + interfaceRemoved(iface); + } + else { + kb_disconnect--; + } } } } @@ -1301,6 +1308,9 @@ public class Tethering extends INetworkManagementEventObserver.Stub { sm.sendMessage(TetherInterfaceSM.CMD_TETHER_CONNECTION_CHANGED, ifaceName); } + String kb_disc = SystemProperties.get("ro.tethering.kb_disconnect"); + if("1".equals(kb_disc)) + kb_disconnect=1; } } |