diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 732d4c8..2908829 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -993,9 +993,9 @@
         return isEnable;
     }
 
-    private void setMobileDataEnabled(boolean enabled) {
+    private void setMobileDataEnabled(int subId, boolean enabled) {
         if (LOGD) Log.d(TAG, "setMobileDataEnabled()");
-        mTelephonyManager.setDataEnabled(enabled);
+        mTelephonyManager.setDataEnabled(subId, enabled);
         mMobileDataEnabled = enabled;
         updatePolicy(false);
     }
@@ -1162,12 +1162,12 @@
                     if (Utils.showSimCardTile(getActivity())) {
                         handleMultiSimDataDialog();
                     } else {
-                        setMobileDataEnabled(true);
+                        setMobileDataEnabled(getSubId(currentTab), true);
                     }
                 } else {
                     // disabling data; show confirmation dialog which eventually
                     // calls setMobileDataEnabled() once user confirms.
-                    ConfirmDataDisableFragment.show(DataUsageSummary.this);
+                    ConfirmDataDisableFragment.show(DataUsageSummary.this, getSubId(mCurrentTab));
                 }
             }
 
@@ -1185,7 +1185,7 @@
         // the pop-up.
         if (!Utils.showSimCardTile(context) ||
                 (nextSir != null && currentSir.getSubscriptionId() == nextSir.getSubscriptionId())) {
-            setMobileDataEnabled(true);
+            setMobileDataEnabled(currentSir.getSubscriptionId(), true);
             updateBody();
             return;
         }
@@ -1204,7 +1204,7 @@
             @Override
             public void onClick(DialogInterface dialog, int id) {
                 mSubscriptionManager.setDefaultDataSubId(currentSir.getSubscriptionId());
-                setMobileDataEnabled(true);
+                setMobileDataEnabled(currentSir.getSubscriptionId(), true);
                 updateBody();
             }
         });
@@ -2142,7 +2142,9 @@
      * Dialog to request user confirmation before disabling data.
      */
     public static class ConfirmDataDisableFragment extends DialogFragment {
-        public static void show(DataUsageSummary parent) {
+        static int mSubId;
+        public static void show(DataUsageSummary parent, int subId) {
+            mSubId = subId;
             if (!parent.isAdded()) return;
 
             final ConfirmDataDisableFragment dialog = new ConfirmDataDisableFragment();
@@ -2163,7 +2165,7 @@
                     final DataUsageSummary target = (DataUsageSummary) getTargetFragment();
                     if (target != null) {
                         // TODO: extend to modify policy enabled flag.
-                        target.setMobileDataEnabled(false);
+                        target.setMobileDataEnabled(mSubId, false);
                     }
                 }
             });
