diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index ae9c1cb..0d003b3 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -784,7 +784,7 @@
 
         } else {
             mAppSettingsIntent = null;
-            mAppSettings.setEnabled(false);
+            mAppSettings.setVisibility(View.GONE);
         }
 
         updateDetailData();
@@ -1601,19 +1601,21 @@
 
             final Resources res = parent.getResources();
             final CharSequence message;
+            final long minLimitBytes = (long) (
+                    parent.mPolicyEditor.getPolicy(parent.mTemplate).warningBytes * 1.2f);
             final long limitBytes;
 
             // TODO: customize default limits based on network template
             final String currentTab = parent.mCurrentTab;
             if (TAB_3G.equals(currentTab)) {
                 message = res.getString(R.string.data_usage_limit_dialog_mobile);
-                limitBytes = 5 * GB_IN_BYTES;
+                limitBytes = Math.max(5 * GB_IN_BYTES, minLimitBytes);
             } else if (TAB_4G.equals(currentTab)) {
                 message = res.getString(R.string.data_usage_limit_dialog_mobile);
-                limitBytes = 5 * GB_IN_BYTES;
+                limitBytes = Math.max(5 * GB_IN_BYTES, minLimitBytes);
             } else if (TAB_MOBILE.equals(currentTab)) {
                 message = res.getString(R.string.data_usage_limit_dialog_mobile);
-                limitBytes = 5 * GB_IN_BYTES;
+                limitBytes = Math.max(5 * GB_IN_BYTES, minLimitBytes);
             } else {
                 throw new IllegalArgumentException("unknown current tab: " + currentTab);
             }
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 1922100..88fac0a 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -31,6 +31,9 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.Bundle;
+import android.os.INetworkManagementService;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.UserId;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
@@ -359,6 +362,17 @@
                 if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
                     target.remove(header);
                 }
+            } else if (id == R.id.data_usage_settings) {
+                // Remove data usage when kernel module not enabled
+                final INetworkManagementService netManager = INetworkManagementService.Stub
+                        .asInterface(ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
+                try {
+                    if (!netManager.isBandwidthControlEnabled()) {
+                        target.remove(header);
+                    }
+                } catch (RemoteException e) {
+                    // ignored
+                }
             } else if (id == R.id.user_settings) {
                 if (!mEnableUserManagement
                         || !UserId.MU_ENABLED || UserId.myUserId() != 0
diff --git a/src/com/android/settings/net/DataUsageMeteredSettings.java b/src/com/android/settings/net/DataUsageMeteredSettings.java
index 4967611..fea8a12 100644
--- a/src/com/android/settings/net/DataUsageMeteredSettings.java
+++ b/src/com/android/settings/net/DataUsageMeteredSettings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.net;
 
+import static android.net.NetworkPolicy.LIMIT_DISABLED;
 import static android.net.wifi.WifiInfo.removeDoubleQuotes;
 import static com.android.settings.DataUsageSummary.hasReadyMobileRadio;
 import static com.android.settings.DataUsageSummary.hasWifiRadio;
@@ -106,19 +107,35 @@
 
     private class MeteredPreference extends CheckBoxPreference {
         private final NetworkTemplate mTemplate;
+        private boolean mBinding;
 
         public MeteredPreference(Context context, NetworkTemplate template) {
             super(context);
             mTemplate = template;
 
             setPersistent(false);
-            setChecked(mPolicyEditor.getPolicyMetered(mTemplate));
+
+            mBinding = true;
+            final NetworkPolicy policy = mPolicyEditor.getPolicy(template);
+            if (policy != null) {
+                if (policy.limitBytes != LIMIT_DISABLED) {
+                    setChecked(true);
+                    setEnabled(false);
+                } else {
+                    setChecked(policy.metered);
+                }
+            } else {
+                setChecked(false);
+            }
+            mBinding = false;
         }
 
         @Override
         protected void notifyChanged() {
             super.notifyChanged();
-            mPolicyEditor.setPolicyMetered(mTemplate, isChecked());
+            if (!mBinding) {
+                mPolicyEditor.setPolicyMetered(mTemplate, isChecked());
+            }
         }
     }
 }
