diff --git a/extphone/src/com/qti/extphone/ExtPhoneCallbackBase.java b/extphone/src/com/qti/extphone/ExtPhoneCallbackBase.java
index 1aebe8d..5154e0d 100644
--- a/extphone/src/com/qti/extphone/ExtPhoneCallbackBase.java
+++ b/extphone/src/com/qti/extphone/ExtPhoneCallbackBase.java
@@ -188,4 +188,14 @@
     public void onDdsSwitchRecommendation(int slotId,
             int recommendedSlotId) throws RemoteException {
     }
+
+    @Override
+    public void onDataDeactivateDelayTime(int slotId, long delayTimeMilliSecs)
+            throws RemoteException {
+    }
+
+    @Override
+    public void onEpdgOverCellularDataSupported(int slotId, boolean support)
+            throws RemoteException {
+    }
 }
diff --git a/extphone/src/com/qti/extphone/ExtTelephonyManager.java b/extphone/src/com/qti/extphone/ExtTelephonyManager.java
index c33c0e9..74d1541 100644
--- a/extphone/src/com/qti/extphone/ExtTelephonyManager.java
+++ b/extphone/src/com/qti/extphone/ExtTelephonyManager.java
@@ -872,6 +872,21 @@
         }
     }
 
+    public boolean isEpdgOverCellularDataSupported(int slot) throws RemoteException {
+        boolean support = false;
+        if (!isServiceConnected()) {
+            Log.e(LOG_TAG, "service not connected!");
+            return support;
+        }
+        try {
+            support = mExtTelephonyService.isEpdgOverCellularDataSupported(slot);
+        } catch(RemoteException e) {
+            Log.e(LOG_TAG, "isEpdgOverCellularDataSupported, remote exception");
+            e.printStackTrace();
+        }
+        return support;
+    }
+
     public Client registerCallback(String packageName, IExtPhoneCallback callback) {
         Client client = null;
         if (!isServiceConnected()) {
diff --git a/extphone/src/com/qti/extphone/IExtPhone.aidl b/extphone/src/com/qti/extphone/IExtPhone.aidl
index 8cb604c..3935ee8 100644
--- a/extphone/src/com/qti/extphone/IExtPhone.aidl
+++ b/extphone/src/com/qti/extphone/IExtPhone.aidl
@@ -431,4 +431,12 @@
      */
      Token sendUserPreferenceForDataDuringVoiceCall(int slotId,
              boolean userPreference, in Client client);
+
+    /**
+     * Request for epdg over cellular data (cellular IWLAN) feature is supported or not.
+     *
+     * @param - slotId slot ID
+     * @return - boolean value indicates if the feature is supported or not
+     */
+     boolean isEpdgOverCellularDataSupported(int slotId);
 }
diff --git a/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl b/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
index bcebb82..1b20d3e 100644
--- a/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
+++ b/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
@@ -219,4 +219,20 @@
      * @param - recommendedSlotId slot ID to which DDS has to be switched.
      */
     void onDdsSwitchRecommendation(int slotId, int recommendedSlotId);
+
+    /**
+     * Indiactes the delay time to deactivate default data pdn when cellular IWLAN feature is ON.
+     * @param - delayTimeMilliSecs delayTimeMilliSecs>0 indicates one or more pdns
+     *           are present on cellular IWLAN RAT and wait for delayTimeMilliSecs
+     *           to deactivate default data pdn if required.
+     *           delayTimeMilliSecs<=0 indicates no pdns are available on cellular IWLAN RAT.
+     */
+    void onDataDeactivateDelayTime(int slotId, long delayTimeMilliSecs);
+
+    /**
+     * Indicates epdg over cellular data (cellular IWLAN) feature is supported or not.
+     *
+     * @param - support support indicates if the feature is supported or not.
+     */
+    void onEpdgOverCellularDataSupported(int slotId, boolean support);
 }
