diff --git a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
index 3751b3c..2db0acb 100644
--- a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
+++ b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
@@ -35,6 +35,8 @@
 import android.test.AndroidTestCase;
 import android.util.Log;
 
+import java.util.HashSet;
+import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
@@ -170,12 +172,20 @@
         args = {int.class, int.class}
     )
     public void testRequestRouteToHost() {
+        Set<Integer> exceptionFreeTypes = new HashSet<Integer>();
+        exceptionFreeTypes.add(ConnectivityManager.TYPE_BLUETOOTH);
+        exceptionFreeTypes.add(ConnectivityManager.TYPE_ETHERNET);
+        exceptionFreeTypes.add(ConnectivityManager.TYPE_MOBILE);
+        exceptionFreeTypes.add(ConnectivityManager.TYPE_MOBILE_DUN);
+        exceptionFreeTypes.add(ConnectivityManager.TYPE_MOBILE_HIPRI);
+        exceptionFreeTypes.add(ConnectivityManager.TYPE_MOBILE_MMS);
+        exceptionFreeTypes.add(ConnectivityManager.TYPE_MOBILE_SUPL);
 
         NetworkInfo[] ni = mCm.getAllNetworkInfo();
         for (NetworkInfo n : ni) {
-            // make sure network is up (except WIFI due to always fail)
-            if (n.isConnected() && (n.getType() != TYPE_WIFI)) {
-                assertTrue(mCm.requestRouteToHost(n.getType(), HOST_ADDRESS));
+            if (n.isConnected() && exceptionFreeTypes.contains(n.getType())) {
+                assertTrue("Network type: " + n.getType(), mCm.requestRouteToHost(n.getType(),
+                        HOST_ADDRESS));
             }
         }
 
diff --git a/tests/cts/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java b/tests/cts/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
index 196e102..6b9b985 100644
--- a/tests/cts/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
+++ b/tests/cts/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
@@ -16,12 +16,13 @@
 
 package android.net.cts;
 
-import android.net.NetworkInfo.DetailedState;
-import android.test.AndroidTestCase;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
 
+import android.net.NetworkInfo.DetailedState;
+import android.test.AndroidTestCase;
+
 @TestTargetClass(DetailedState.class)
 public class NetworkInfo_DetailedStateTest extends AndroidTestCase {
 
@@ -52,7 +53,7 @@
     )
     public void testValues() {
         DetailedState[] expected = DetailedState.values();
-        assertEquals(10, expected.length);
+        assertEquals(11, expected.length);
         assertEquals(DetailedState.IDLE, expected[0]);
         assertEquals(DetailedState.SCANNING, expected[1]);
         assertEquals(DetailedState.CONNECTING, expected[2]);
@@ -63,6 +64,7 @@
         assertEquals(DetailedState.DISCONNECTING, expected[7]);
         assertEquals(DetailedState.DISCONNECTED, expected[8]);
         assertEquals(DetailedState.FAILED, expected[9]);
+        assertEquals(DetailedState.BLOCKED, expected[10]);
     }
 
 }
