diff --git a/nci/jni/NativeNfcManager.cpp b/nci/jni/NativeNfcManager.cpp
index a112501..6f3c569 100755
--- a/nci/jni/NativeNfcManager.cpp
+++ b/nci/jni/NativeNfcManager.cpp
@@ -907,7 +907,13 @@
 **
 *******************************************************************************/
 static jboolean nfcManager_commitRouting(JNIEnv* e, jobject) {
-  return RoutingManager::getInstance().commitRouting();
+  if (sRfEnabled) {
+    /*Update routing table only in Idle state.*/
+    startRfDiscovery(false);
+  }
+  jboolean commitStatus = RoutingManager::getInstance().commitRouting();
+  startRfDiscovery(true);
+  return commitStatus;
 }
 
 /*******************************************************************************
diff --git a/nci/jni/RoutingManager.cpp b/nci/jni/RoutingManager.cpp
index cc37431..ba2e3ab 100755
--- a/nci/jni/RoutingManager.cpp
+++ b/nci/jni/RoutingManager.cpp
@@ -84,6 +84,9 @@
     }
   }
 
+  mOffHostAidRoutingPowerState =
+      NfcConfig::getUnsigned(NAME_OFFHOST_AID_ROUTE_PWR_STATE, 0x01);
+
   memset(&mEeInfo, 0, sizeof(mEeInfo));
   mReceivedEeInfo = false;
   mSeTechMask = 0x00;
@@ -143,6 +146,8 @@
           (eeHandle == (mDefaultOffHostRoute | NFA_HANDLE_GROUP_EE))) {
         if (mEeInfo.ee_disc_info[i].la_protocol != 0)
           seTechMask |= NFA_TECHNOLOGY_MASK_A;
+        if (mEeInfo.ee_disc_info[i].lb_protocol != 0)
+          seTechMask |= NFA_TECHNOLOGY_MASK_B;
       }
       if ((mDefaultFelicaRoute != 0) &&
           (eeHandle == (mDefaultFelicaRoute | NFA_HANDLE_GROUP_EE))) {
@@ -359,8 +364,10 @@
                                    int route, int aidInfo) {
   static const char fn[] = "RoutingManager::addAidRouting";
   DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", fn);
+  uint8_t powerState =
+      (route == mDefaultOffHostRoute) ? mOffHostAidRoutingPowerState : 0x01;
   tNFA_STATUS nfaStat =
-      NFA_EeAddAidRouting(route, aidLen, (uint8_t*)aid, 0x01, aidInfo);
+      NFA_EeAddAidRouting(route, aidLen, (uint8_t*)aid, powerState, aidInfo);
   if (nfaStat == NFA_STATUS_OK) {
     DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: routed AID", fn);
     return true;
diff --git a/nci/jni/RoutingManager.h b/nci/jni/RoutingManager.h
index 843d490..2d3f315 100755
--- a/nci/jni/RoutingManager.h
+++ b/nci/jni/RoutingManager.h
@@ -89,6 +89,7 @@
   uint16_t mDefaultSysCode;
   uint16_t mDefaultSysCodeRoute;
   uint8_t mDefaultSysCodePowerstate;
+  uint8_t mOffHostAidRoutingPowerState;
   bool mReceivedEeInfo;
   tNFA_EE_CBACK_DATA mCbEventData;
   tNFA_EE_DISCOVER_REQ mEeInfo;
