summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobodyAtall <birbilis@gmail.com>2011-10-13 21:04:01 +0300
committernobodyAtall <birbilis@gmail.com>2011-10-13 21:04:01 +0300
commit43248a419c3baad070c80b0146532bb662f16c1f (patch)
tree59c3d713bbc941f6bdb36146f9bd24f2da128567
parent07914a409fa653807bc94829e9aaa7a4fee20bc7 (diff)
downloadframeworks_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.java12
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;
}
}