diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 4b3a7f7..7a5a60a 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -867,6 +867,30 @@
             throw new IllegalStateException("unknown tab: " + currentTab);
         }
 
+        mPolicyEditor.read();
+        final NetworkPolicy policy = mPolicyEditor.getPolicy(mTemplate);
+        if (policy != null) {
+            final long currentTime = System.currentTimeMillis();
+            final long start = computeLastCycleBoundary(currentTime, policy);
+            final long end = currentTime;
+            long totalBytes = 0;
+
+            try {
+                totalBytes = mStatsService.getNetworkTotalBytes(policy.template, start, end);
+            } catch (RuntimeException e) {
+            } catch (RemoteException e) {
+            }
+
+            if (policy.isOverLimit(totalBytes) && policy.lastLimitSnooze < start) {
+                setPreferenceSummary(mDataEnabledView,
+                        getString(R.string.data_usage_cellular_data_summary));
+            } else {
+                final TextView summary = (TextView) mDataEnabledView
+                        .findViewById(android.R.id.summary);
+                summary.setVisibility(View.GONE);
+            }
+        }
+
         // kick off loader for network history
         // TODO: consider chaining two loaders together instead of reloading
         // network history when showing app detail.
@@ -1515,6 +1539,7 @@
         @Override
         public void onLimitChanged() {
             setPolicyLimitBytes(mChart.getLimitBytes());
+            updateBody();
         }
 
         @Override
