Commit Graph

2815 Commits

Author SHA1 Message Date
JP Abgrall
f6cc17c9d1 NetworkStatsService: check kernel bandwidth support before enabling
And catch the actual errors reported by the other side of NetworkManager.

Change-Id: I9a9393b659d6f896ee1bf40a8deaca7853ef8f94
Signed-off-by: JP Abgrall <jpa@google.com>
2011-06-23 15:37:58 -07:00
JP Abgrall
27cb1fa96b NetworkStatsService: check kernel bandwidth support before enabling
And catch the actual errors reported by the other side of NetworkManager.


Change-Id: I9a9393b659d6f896ee1bf40a8deaca7853ef8f94
Signed-off-by: JP Abgrall <jpa@google.com>
2011-06-23 14:13:28 -07:00
Jeff Sharkey
2e546ddbde Enable bandwidth module from stats service.
During systemReady(), tell netd to enable bandwidth tracking module,
which is used to provide detailed stats and controls.

Change-Id: Iecfd8b17a3b90f5a817d731fbe1c71777681ed6e
2011-06-22 21:44:12 -07:00
Jeff Sharkey
3bc842e4c3 Teach NetworkIdentity about roaming.
And correctly upgrade NetworkIdentitySet written to disk, assuming
that old values aren't roaming.

Bug: 4724762
Change-Id: Ic25897ebbaf43be2390174d8e5fd08386bc8a345
2011-06-19 22:21:05 -07:00
Jeff Sharkey
b590477065 Persist "tagged" network stats along with UIDs.
Now stores tags other than TAG_NONE (0x0), which are useful for app
debugging.  Combine UID and tag together into single long key, and
expose tag data through AIDL when requested.  Change NMS to track
TAG_NONE as total UID traffic, matching the kernel definition.

Added TAG_MAX_HISTORY to control how long tag-granularity statistics
are stored; overall UID usage is still kept for UID_MAX_HISTORY.  Fix
bug to trim NetworkStatsHistory outside normal polling loops to catch
non-active networks and UIDs.

Test to verify UID and tag packing, and to verify that UID traffic on
two networks are combined to match MOBILE_ALL template.

Change-Id: If0e039416d9e7f63b1a39e04cddfb1133b5a78ee
2011-06-19 21:58:39 -07:00
Jeff Sharkey
c04cda602c Handle removed UIDs in network stats and policy.
When UID_REMOVED, clean up any existing UID network policy so it
doesn't linger for future apps.  Also move any NetworkStatsHistory
to special UID_REMOVED tracking bucket.

Tests for new removal code.  Also test detailed UID stats, including
network changes to verify template matching logic.

Bug: 4584212
Change-Id: I9faadf6b6f3830eb45d86c7f1980a27cdbcdb11e
2011-06-19 01:08:12 -07:00
Jeff Sharkey
0d5baa3f21 Read "qtaguid" network stats, refactor templates.
Teach NMS to read qtaguid stats from kernel, but fall back to older
stats when kernel doesn't support.  Add "tags" to NetworkStats entries
to support qtaguid.  To work around double-reporting bug, subtract
tagged stats from TAG_NONE entry.

Flesh out stronger NetworkTemplate.  All NetworkStatsService requests
now require a template, and moved matching logic into template.

Record UID stats keyed on complete NetworkIdentitySet definition,
similar to how interface stats are stored.  Since previous UID stats
didn't have iface breakdown, discard during file format upgrade.

Change-Id: I0447b5e7d205d73d28e71c889c568e536e91b8e4
2011-06-18 22:23:11 -07:00
Jeff Sharkey
dbffe5a999 Avoid clobbering UID stats when not yet loaded.
Bug: 4690822
Change-Id: Ia6c9e8f89e89739cf3380c4b98b9da6f52db48fa
2011-06-17 11:18:27 -07:00
Jeff Sharkey
3ce93600fd Data usage warning and limit notifications.
Watch for network statistics to cross NetworkPolicy warning or limit,
and show notifications to user as needed.  Currently checks during
any statistics update, but will eventually move to event registration
through netd when kernel supports.

Fixed accounting bug in getSummaryForNetwork().  Only apply UID policy
to applications; applying to system processes could break critical
services like RIL.

Change-Id: Iac0f20e910e205f3cbc54ec96395ff268b1aa379
2011-06-14 22:43:08 -07:00
Jeff Sharkey
709e40027d External mutation of full NetworkPolicy set.
Instead of embedding complex template coexistence rules into policy
service, rely on external editors to enforce, and offer atomic
get/set operations for full policy sets.

Generate default mobile policy when none exists, using default of 4GB
warning and cycle reset of current day.  Dispatch listener events
through Handler when holding internal lock, and catch CLASS_UNKNOWN
networks in 3G_LOWER template.

Change-Id: I063cf1eaf330e32b75d0697b89fc04488e6dfaea
2011-06-12 23:21:34 -07:00
Jeff Sharkey
755000588f Growable NetworkStats object instead of builder.
NetworkStats now grows in place with arraycopy() instead of callers
needing to know record count a priori.  Better growth calculation for
both NetworkStats and NetworkStatsHistory; 50% each time.  Better
estimates of buckets needed in calling services.

Change-Id: I3adbffa0b7407612cc6349d9135a8b4eb63cd440
2011-06-11 22:17:17 -07:00
Jeff Sharkey
6fc33809a7 Persist UID stats, lazy loading, resize buckets.
Persisting detailed UID stats in separate "netstats_detail.bin" file
to enable different schedules for summary and detail polling.  Only
load detailed UID history on demand, since it's not needed during
boot.  Add test to verify UID stats are persisted across simulated
reboot.

Move external settings into well-named interface, which is still
backed by Settings.Secure.  During periodic poll events, resize any
history to match current bucket duration setting.  Test to verify.

Change-Id: I6366f3583a591f8ba859b0e5987daf8cafa4e95a
2011-06-11 17:55:56 -07:00
Jeff Sharkey
9d12bd2873 Interface-level network policy, persist policies.
Define NetworkPolicy as cycle-reset day and warning/limit values, and
set/get through NetworkPolicyManager.  Watch ConnectivityManager for
network connection events, and apply quota rules based on matching
interfaces.  Policy service matches based on strong identity to support
IMSI-specific policy values.

Calculates remaining quota based on current stats recorded since the
last reset cycle day.  Tests to verify edge cases around February.

Persist network and UID policies in XML, and restore on boot.

Change-Id: Id40ba7d6eed6094fbd5e18e6331286c606880d80
2011-06-10 19:35:20 -07:00
Jeff Sharkey
98693eb89a Persist network stats using AtomicFile.
Implements read/write of network stats using AtomicFile, along with
magic number and versioning.  Stores in "/data/system/netstats.bin"
for now.  Tests to verify that stats are persisted across a simulated
reboot, and to verify that TEMPLATE_WIFI is working.

Fixed bug where kernel counters rolling backwards would cause negative
stats to be recorded; now we clamp deltas at 0.

Change-Id: I53bce26fc8fd3f4ab1e34ce135d302edfa34db34
2011-06-09 10:14:13 -07:00
Jeff Sharkey
0b1cfc0d55 Compute range-based usage in NetworkStatsHistory.
When given a start/end range, interpolate between buckets to return
the total network usage.  Used to summarize detailed UID stats.  Method
to combine NetworkStatsHistory regardless of bucket size.  Used to
combine all histories matching a template.

Added tests for both methods.

Change-Id: Ia463910c0ecf7cf08dcf97c658ad99742bd6b882
2011-06-07 23:54:28 -07:00
Jeff Sharkey
b06fe7ad72 UID network stats, secure settings, and random.
Collect UID-granularity network stats during regular poll event.  Add
dumpsys argument to generate fake historical data for debugging, and
move stats parameters to Settings.Secure.

Change-Id: I09b36a2955dc10c697d4b9c3ff23dcb3ac37bd70
2011-06-07 23:43:46 -07:00
Jeff Sharkey
1a3eb889f0 Map network identity using ConnectivityService.
Instead of deriving network identity based on raw subsystem broadcasts,
listen for updates from ConnectivityService.  Added atomic view of all
active NetworkState, and build map from "iface" to NetworkIdentity set
for stats tracking.

To avoid exposing internal complexity, INetworkStatsService calls use
general templates.  Added TelephonyManager mapping to classify network
types using broad labels like "3G" or "4G", used to drive templates.

Cleaned up Objects and Preconditions.

Change-Id: I1d4c1403f0503bc3635a59bb378841ba42239a91
2011-06-07 23:09:25 -07:00
Jeff Sharkey
9ab8c6a64d Collect historical network stats.
Periodically records delta network traffic into historical buckets to
support other services, such NetworkPolicyManager and Settings UI.

Introduces NetworkStatsHistory structure which contains sparse, uniform
buckets of data usage defined by timestamps.  Service periodically
polls NetworkStats and records changes into buckets.  It only persists
to disk when substantial changes have occured.  Current parameters
create 4 buckets each day, and persist for 90 days, resulting in about
8kB of data per network.

Only records stats for "well known" network interfaces that have been
claimed by Telephony or Wi-Fi subsystems.  Historical stats are also
keyed off identity (such as IMSI) to support SIM swapping.

Change-Id: Ia27d1289556a2bf9545fbc4f3b789425a01be53a
2011-06-01 17:44:52 -07:00
Jeff Sharkey
33936acd3e APIs to profile network usage for current UID.
Added startDataProfiling() and stopDataProfiling() to TrafficStats,
which can be used by apps to measure network usage delta between two
points in time.  Currently takes two NetworkStats snapshots and returns
delta, which will eventually include tag-level granularity.  Added
tests for NetworkStats delta subtraction.

Added NMS.getNetworkStatsUidDetail() that returns stats for specific
UID.  Always gives stats access for the calling UID, otherwise enforces
that caller has permission.  Fix readSingleLongFromFile(), since
/proc/ files don't have well-defined lengths.

Change-Id: Ic5b6414d8effbd66846e275b00d4b8a82c74589d
2011-05-21 15:02:58 -07:00
Jeff Sharkey
b82cd3db7d Add Socket tagging for granular data accounting.
Introduces public API to apply "tags" to track data traffic originating
from the current thread.  (Under the hood, the tags are maintained and
applied in BlockGuard.)  Also adds tag/untag methods for developers who
maintain their own Socket pools.

Change-Id: Ic2dd3155559a93a7b613c7853748d4c44fb3a39e
2011-05-13 18:19:00 -07:00
Jeff Sharkey
ffd48a2cf8 Return NetworkStats bundle from NM service.
Introduce NetworkStats which is a collection of network statistics,
which should match the structure communicated by kernel module through
netd.  Will introduce tags and fg/bg stats later.  Kept entirely in a
flat data structure to optimize parcel speed.

Initial pass at returning NetworkStats from NetworkManagementService,
both summary and details.  Will eventually pull data from kernel module
over netd connection.

Change-Id: I92d9f61678ec8c22e2ce26775fb035a0cf32413f
2011-05-04 16:07:21 -07:00
Elliott Hughes
df7efc2c9f More native code cleanup.
Use ScopedUtfChars (fixes a leak in TrafficStats, and fixes a crash in Wifi in
a case where GetStringChars could have been called with a pending exception).

Change-Id: I3465ff392b4038dfdafa6af80ec1314cc6d6a11c
2011-04-13 10:34:23 -07:00
Irfan Sheriff
042f4e10f0 data activity reporting on wifi
Initial checkin, need icons to complete the feature

Bug: 3412258

Change-Id: I9a3ecc8159cc314d84707065dafe23d402409a84
2011-02-17 13:57:55 -08:00
Brad Fitzpatrick
cfb77b9e4f am b05fcac4: am a62bf8bb: am 6e5a04af: am c6a47e98: Merge "Fix a race condition in NativeDaemonConnector"
* commit 'b05fcac4a906ce067d701a4767e94bc6beb4969e':
  Fix a race condition in NativeDaemonConnector
2011-02-07 13:51:43 -08:00
Brad Fitzpatrick
b05fcac4a9 am a62bf8bb: am 6e5a04af: am c6a47e98: Merge "Fix a race condition in NativeDaemonConnector"
* commit 'a62bf8bb6b7a547802fb384b497e955940befa9c':
  Fix a race condition in NativeDaemonConnector
2011-02-07 10:09:29 -08:00
Brad Fitzpatrick
6e5a04af0d am c6a47e98: Merge "Fix a race condition in NativeDaemonConnector"
* commit 'c6a47e98717df6980abc56c93a0dcc83c71f9d96':
  Fix a race condition in NativeDaemonConnector
2011-02-07 10:04:54 -08:00
Brad Fitzpatrick
c6a47e9871 Merge "Fix a race condition in NativeDaemonConnector" 2011-02-07 09:55:34 -08:00
anga
c4faee0b10 Fix a race condition in NativeDaemonConnector
Fixes a race between the onDaemonConnected callback and setting the
mOutputStream in NativeDaemonConnector.

MountService connects to vold using the NativeDaemonConnector.
Throws a “NativeDaemonConnectorException: No output stream!”
when the onDaemonConnected callback in MountService calls the doListCommand.

Change-Id: Ib895bab37f7df680e4362df6366198c0a673c5e9
2011-02-07 09:53:59 -08:00
Ashish Sharma
ee18e9a7f0 Merge "Fix a minor documentation bug in TrafficStats." 2011-01-31 17:32:40 -08:00
Ashish Sharma
2e11488c90 Fix a minor documentation bug in TrafficStats.
Change-Id: I3cf2199797d875ccb6ab432c298afaace44c7527
Signed-off-by: Ashish Sharma <ashishsharma@google.com>
2011-01-31 14:30:16 -08:00
The Android Open Source Project
8eb67e74ab am 4d271f15: Reconcile gingerbread-plus-aosp and honeycomb
* commit '4d271f15beec4c091a62791af51cf2ac68cd4e4e':
  resolved conflicts for merge of a314f32b to honeycomb-merge
2011-01-30 12:54:18 -08:00
The Android Open Source Project
4d271f15be Reconcile gingerbread-plus-aosp and honeycomb
Change-Id: I7ca5acfee971105e3f3d6a674f82da0e890b0434
2011-01-30 12:40:39 -08:00
Irfan Sheriff
b00c85fc8d am 4170b463: Merge "Do not add unsolicited events to queue" into gingerbread
* commit '4170b46329ed91e81cf22dba82e2dadc326b3e3d':
  Do not add unsolicited events to queue
2011-01-27 17:04:07 -08:00
Ashish Sharma
df852d8860 TrafficStats: Include UDP stats and packet count to API
Change-Id: I70063e6033d3c181bcc5b9e401f9474900e25281
Signed-off-by: Ashish Sharma <ashishsharma@google.com>
2011-01-27 15:52:38 -08:00
Irfan Sheriff
a29e945814 am ef76b830: am 4170b463: Merge "Do not add unsolicited events to queue" into gingerbread
* commit 'ef76b8306fd6147d9dd7e3b7dce10354eff8033c':
  Do not add unsolicited events to queue
2011-01-21 14:37:14 -08:00
Irfan Sheriff
bc1c40a484 Do not add unsolicited events to queue
Adding unsolicited events to response queue
results in doCommand() returning the wrong
result.

Pulling this change from master.

Bug: 3258529
Change-Id: I2a4b0bd8bb30b31682d7d61ee94a0d246bf10de2
2011-01-16 14:31:55 -08:00
Robert Greenwalt
2d1da31f08 am 9c38a6dc: am e87ebb08: Merge "Cleanup Netd to prevent getting hung." into gingerbread
Merge commit '9c38a6dc13ba55fccb9c66f347307a1b4ae68105'

* commit '9c38a6dc13ba55fccb9c66f347307a1b4ae68105':
  Cleanup Netd to prevent getting hung.
2010-09-23 09:40:20 -07:00
Robert Greenwalt
56451a4477 Cleanup Netd to prevent getting hung.
If the sending of the command fails we should note it and not wait forever
for the response.

We should also not say we're ready until we actually are.

bug:2993205
Change-Id: I380f0312ac4693ad184a526b330fdfa23f6ac558
2010-09-22 16:43:23 -07:00
Kenny Root
4ad1fbff0f am fb79b7da: am d347480a: Fix buffer compacting in NativeDaemonConnector
Merge commit 'fb79b7dab3ccaf490e8cbb18c9feed7080e4b54f'

* commit 'fb79b7dab3ccaf490e8cbb18c9feed7080e4b54f':
  Fix buffer compacting in NativeDaemonConnector
2010-09-02 22:32:39 -07:00
Kenny Root
d347480a18 Fix buffer compacting in NativeDaemonConnector
The buffer was being compacted in the read loop, but the start offset on
the compacted buffer wasn't being considered after the next read.

Bug: 2501075
Change-Id: I163297d751cf800d0bbc66df66b1a0fa0785de49
2010-09-02 22:24:06 -07:00
Jean-Baptiste Queru
c2ff62b1be am bacc3aa8: am b03c4592: merge -s ours from froyo-release so that upgrading to gingerbread is a git fast-forward
Merge commit 'bacc3aa85ee1a1b5dbf2e92522dde8eb0526bdb7'

* commit 'bacc3aa85ee1a1b5dbf2e92522dde8eb0526bdb7':
  Add a missing break; to restore old functionality and not turn off the screen after 30secs regardless of system preference.
  Amend previous ndc commit
  Add a method to let a properly permissioned app directly
  Changed SyncOperation.toKey() to not rely on the implementation of
  Squashed commit of the following:
  Add more error checking for ndc
  PackageManagerService: always install native binaries from .apk
  Add PhoneSubInfo.getCompleteVoiceMailNumber.
  Fix a bug where we cleaned an apps external data when upgrading it. :(
  Skip hostname verification when using insecure factory
  Flush binder buffer after setting raw heap to avoid leaking a reference.
  Fix issue #2834005: Android Settings.Secure bypass
  Fix issue 2811538: System server crash when disconnecting BT headset after using SCO off call.
  Verify hostname where possible, and clarify where not.
2010-08-24 12:09:03 -07:00
Jean-Baptiste Queru
b03c459224 merge -s ours from froyo-release so that upgrading to gingerbread is a git fast-forward
Change-Id: I69ed3eabde3cd32bea57315c0f031839caea4d4e
2010-08-23 19:08:27 -07:00
Danica Chang
405d5ff482 bluetooth tethering
Change-Id: Id6d5fb1922facc7013abc29214d3e1141995b767
2010-08-18 15:07:50 -07:00
Kenny Root
57b7c0b7a0 am eeeaf73a: (-s ours) Add more error checking for ndc
Merge commit 'eeeaf73a023f66463f83f7048f98cc40a626e59a' into gingerbread

* commit 'eeeaf73a023f66463f83f7048f98cc40a626e59a':
  Add more error checking for ndc
2010-08-18 08:50:56 -07:00
Kenny Root
877d231382 Add more error checking for ndc
In NativeDaemonConnector.doCommand() calls, there was inconsistent error
checking. This change adds error checking for every call and makes it so
that any call to .doCommand() that gets an error code won't cause the
code to hang forever.

Change-Id: If714282b6642f278fb8137f652af1a012670253b
2010-08-17 23:32:20 -07:00
Kenny Root
eeeaf73a02 Add more error checking for ndc
In NativeDaemonConnector.doCommand() calls, there was inconsistent error
checking. This change adds error checking for every call and makes it so
that any call to .doCommand() that gets an error code won't cause the
code to hang forever.

Change-Id: If714282b6642f278fb8137f652af1a012670253b
2010-08-17 23:29:46 -07:00
Kenny Root
ef79060f4e Add more error checking for ndc
In NativeDaemonConnector.doCommand() calls, there was inconsistent error
checking. This change adds error checking for every call and makes it so
that any call to .doCommand() that gets an error code won't cause the
code to hang forever.

Change-Id: I4584953a759a48ad16adfe8ee9e564b5f5796680
2010-06-01 13:29:04 -07:00
Dan Egnor
71d780a711 Fix sim build (sim doesn't have strl*() reliably...)
Just stub out the TrafficStats code for the sim.
Bug: 2578938

Change-Id: Ie555f67f581d05ee446ea29cb2223feb350c52f9
2010-04-08 23:47:06 -07:00
Dan Egnor
eaeb70241c Change TrafficStats to a new JNI implementation.
Also change phone's ConnectionStateTrackers to use it directly,
rather than through the INetStat binder interface.

Bug: 2578938
Change-Id: I8858e2609cbec3be845a0ce5178cb03f67e01b41
2010-04-07 19:06:29 -07:00
Kenny Root
07726310ae Compact when NativeDaemonConnector hits buffer limit
If NativeDaemonConnector hits its buffer limit, it would truncate the
data and lose some information. This change compacts the buffer and then
retries to read the rest of the data.

Change-Id: I0d5fee097bdd6808212ef3ad6fb4abbc6310fd4a
2010-03-22 18:02:45 -07:00