39 Commits

Author SHA1 Message Date
JP Abgrall
12b933d0d9 NetworkManagementService: receive bandwidth controller events
This is a 1st pass at receiving events that indicate
some quota has been reached e.g. warning quota, data collection quota,
 cutoff quota,...

It needs:
  - new kernel with quota2 logging support
  - new net:bandwidthcontroller that supports
    . quota2,
    . setting alerts.
  - new NetlinkEvent/NetlinkManager/NetlinkHandler to process
     NETLINK NFLOG messages.

Change-Id: Ibfbb13512c5350cdee0e544ec14caa6f59812409
2011-07-14 18:09:22 -07:00
Jeff Sharkey
d37948f6ed Hide NetworkStatsHistory internals.
Instead of exposing internal storage details, offer getValues()
accessor which populates values into a recycled structure.

Change-Id: I5228d7099a8f61b2018a435a813435a67dae49b4
2011-07-12 13:57:06 -07:00
Jeff Sharkey
104344e507 Cached NTP time for system services.
Uses NTP server and timeout from secure settings, or fallback to
defaults in resources.  Update various system services to use cached
NTP time when fresh enough, or force updates as needed.

Bug: 4517273
Change-Id: Ie1c4c4883836013d02ca0bbd850cf8949f93b34b
2011-07-10 14:25:18 -07:00
Mike J. Chen
f59c7d0f2a Hookup interface status to other clients
After unreverting the linkstate change patch, hook up notification handlers
that didn't exist when the first patch was created, like
EthernetDataTracker.java and Vpn.java.

For the observers that handle interfaceStatusChanged(), I made
interfaceLinkStatusChanged() call it so they both do the same thing.

Change-Id: I0077e5e5f48f3932ba98f5bf363243892f2de6cc
Signed-off-by: Mike J. Chen <mjchen@google.com>
2011-06-24 15:02:30 -07:00
Mike J. Chen
6143f5f739 Revert "Revert "Propagate new link-status-change message to any NetworkManagementService""
This reverts commit 1a7e67190228a8ff3b92e7e5496a8db8ff306cca.

Bring back the changes from Stan Chesnutt regarding link-status-change
notifications.  The comment from the original patch was:

Propagate new link-status-change message to any NetworkManagementService
observers.  Also fix the syntax of the "interface-status-change" message.  Add
a null handler in the ThrottleService and Tethering classes (plus fix names).

Change-Id: I42cbed692024de32275cad234f42ff23ab7e9d8d
Signed-off-by: Mike J. Chen <mjchen@google.com>
2011-06-23 19:24:59 -07:00
Jeff Sharkey
1b5a2a96f7 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
9a13f36cdd 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
Jeff Sharkey
b7342acebc Tests for ThrottleService, NTP into TrustedTime.
Wrote initial suite of tests for ThrottleService, checking a variety
of edge cases.  Checks going over limits, updating policies, and reset
after cycle elapses.

Moved NTP code in ThrottleService into new TrustedTime interface,
which makes it easier to understand, and allows tests to provide custom
clocks.

Change-Id: I0d62b8b3a169516a2ab2d33025f6fe30dc792be8
2011-04-28 12:28:36 -07:00
Wink Saville
1a7e671902 Revert "Propagate new link-status-change message to any NetworkManagementService"
This reverts commit 780dfa42aa8664afa53c30ae669fc0e1f10f6537.
2011-01-09 12:16:38 -08:00
Stan Chesnutt
780dfa42aa Propagate new link-status-change message to any NetworkManagementService
observers.  Also fix the syntax of the "interface-status-change" message.  Add
a null handler in the ThrottleService and Tethering classes (plus fix names).

Change-Id: I58cabc7b0ce5662243bc6513b2de4818065e6c52
2011-01-07 11:40:33 -08:00
Robert Greenwalt
c76c15e255 Reorder ThrottleService startup to avoid race.
Don't start people reading settings until after the settings (ntp server settings)
are loaded.

bug:2608189
Change-Id: I7dfaa1e9418b98a141d17dc35d22ff42fcfa052f
2010-06-16 14:42:16 -07:00
Robert Greenwalt
687f2a07bf resolved conflicts for merge of ee09dc67 to master
Change-Id: I8b0b595580d9c6d44b84e636012705dc913fa6ac
2010-06-08 10:10:54 -07:00
Robert Greenwalt
5a671d03e3 Cut logging, boost efficiency of ThrottleService
Changed the Alarms to be non-waking.

bug:2748959
bug:2747862
Change-Id: I9e4294162a4fc2f90aed36393b858edcf82aa307
2010-06-07 16:43:16 -07:00
Robert Greenwalt
d1c3ea6a21 resolved conflicts for merge of 3cd6a3e3 to master
Change-Id: If3e45cc3494b2c52a1f1dcc19deff763a50498d7
2010-05-26 10:37:48 -07:00
Robert Greenwalt
d1055a250c Make the NTP Cache max-age gservices-settable
Trying to make Throttle polling more energy efficient.

bug:2708119
Change-Id: I2b75639e202dcbcee11047c43407a22de04ce350
2010-05-25 15:54:52 -07:00
Robert Greenwalt
9e3983fbde Fix throttle datafile parsing.
"Optimization" yesterday was buggy.
bug:2674511

Change-Id: I3b1dde35a75b2017117c20905fcd82de405d41b5
2010-05-11 07:31:42 -07:00
Robert Greenwalt
24488bd094 Fix build. Instantiate object before use.
bug:2673562
Change-Id: I1e39f7847c25c5c1923a7b7e864b402c94834528
2010-05-10 17:02:55 -07:00
Robert Greenwalt
39e163f45a Reduce lock contention
Reduce the amount of work done inside of synchronized blocks and
force the use of cached ntp data when publicly called.
bug:2662331

Change-Id: Ibafd29ea9e355fa8f875d06ce37870b0c01c57f4
2010-05-10 13:52:32 -07:00
Robert Greenwalt
fee4683f47 Fix ThrottleService wifi interaction
When we switch to another network (or even just lose mobile data) the mobile
interface is either brought down or destroyed altogether.  That means any
throttling rules we've told the kernel about get lost.

This change notices when our interface comes up and reinstates throttling
if needed.

bug:2660287
Change-Id: I4c6ebf78acc59ed66b95984a1e8b7c2ffbc22dcb
2010-05-06 16:45:43 -07:00
Robert Greenwalt
27fba6797b Fix Throttle reset.
The start and end times were precisely the same so, a ">" check needed to be ">=".
Also removed useless code and removed the potential problem where continuous gradual
advancement of your start and end times would prevent resets.

bug:2629717
Change-Id: Ieced1965a5611a9b555e92bcf924ec350f2a80db
2010-04-26 12:29:14 -07:00
Robert Greenwalt
cce83379ef Handle throttling being disabled via policy change
bug:2622543
Change-Id: Ic0c169094cdb4f80af9cfcbed116f59fda46a421
2010-04-23 17:35:29 -07:00
Robert Greenwalt
5bf16d6e8c Respond to changes in throttle policy.
We were updating limits and such before, but we were not applying them
to the current situation if we were already throttled.  Now it can result in
us throttling or changing our throttle rate or unthrottling or even making
the ui come or go (disabling/enable throttling)

bug:2622543
bug:2619879
Change-Id: I64a62634d54f4768ab8625f8d72f9f66a239cb19
2010-04-23 13:15:44 -07:00
Robert Greenwalt
fb9896b5cd Add a Throttle check shortly after boot.
Throttle is useless when ntp and imsi are not yet ready.  In the real world
the second check won't happen for 10 minutes letting people do what they want
for 10 minutes each boot.  Trim this down with a quicker first check.

bug:2614247
Change-Id: I84ec33f31e8fed37b3933482fbc187b8e9e94e79
2010-04-22 15:39:38 -07:00
Robert Greenwalt
bf7de39727 Trim throttle logs.
Removing unwanted sntp logging and throttle logging.

bug:2614927
Change-Id: Ic0b1c3502ebbc1f04130d09d715591af6513f439
2010-04-22 09:04:27 -07:00
Robert Greenwalt
05d0673bfc Misc fixes for throttling.
Cleanup of duplicate code
Caching Ntp data so we don't hit the network as often
Clearing out of MRU data when we switch to a new sim
Sending notification after we reset byte counts

bug:2605277
bug:2605272
bug:2597530
bug:2576057
Change-Id: I3df526bae6374f6ae56fed67b0defad2b4fabefd
2010-04-19 12:29:29 -07:00
Robert Greenwalt
7171ea8179 Make ThrottleService more tamper resistant.
Use elapsed time not wall time for alarms so users can't play with the
system time to get around things.

Also using NTP servers to pull in an authoritative time - if we the build
is configured with an NTP server we will not advance to the next cycle
without it, but we also will not trottle - rather not throttle users
on an error.

Note that the poll alarm is just relative to the last poll time and real
time doesn't matter.

Defining the time-fetching API's as returning time in the system wallclock
range (correcting if we are using NTP time internally).

bug:2597530
Change-Id: I1c0ac0923314c2f8a04edd0b36c4845352eae99a
2010-04-18 10:21:20 -07:00
Irfan Sheriff
cf28236b37 Dont check on interface value on API
The interface check in API could be used
in future.

Bug: 2576057
Change-Id: Icfb78a88be44d1e6a8350c4b65efe70970e658d8
2010-04-16 16:53:20 -07:00
Robert Greenwalt
e6e9882341 Add multi-sim support to ThrottleService.
Uses the last used data until the SIM is available (if ever).  Supports data from
several SIMs for all the world travelers out there.

bug: 2576057
Change-Id: I70e34a51f1c2ccda41a480652b0233b68ff3f538
2010-04-15 17:23:59 -07:00
Robert Greenwalt
8c7e609b53 Sholes mobile iface comes/goes - handle the reset
The byte counter for the iface goes to zero when it comes back.  Catch that and
do the complex math to correct.

Also add a log entry telling us our desired throttle index.

Lastly, reset the sec/msec part of our reset time so that one calc will == another and not
be off by little bits.

bug:25494925
Change-Id: I99525b72a76316a8e601ceb457ca202fae040bae
2010-04-14 17:31:20 -07:00
Robert Greenwalt
22b3644ac2 Update the datause icons.
bug:2576057
Change-Id: Idf57d59aecb9bcff635dafa1e77d90a8737a0c08
2010-04-14 09:13:53 -07:00
Robert Greenwalt
b8912f5481 Perist Throttle data across reboots
Never got SharedPreferences working for this system service.  Didn't really need it anyway.
Using a straight up file now.

bug:2576057
Change-Id: Idad926e8242a85e22718c25f3f6c03e5749badac
2010-04-13 16:42:29 -07:00
Robert Greenwalt
d3bb93f687 Add build config values for data use defaults
Don't use hard coded defaults - use build configs instead.

Iface is now ONLY set by config so gservices doesn't need to.

bug:2576057
Change-Id: I8f9e3bc51af3b1cdf8bb4290a43197d9c01e2a14
2010-04-13 15:44:34 -07:00
Robert Greenwalt
2a7b730378 Fix Throttle Notification intents
Now goes to the correct settings page.

bug:2576057
Change-Id: I21df0e53f7f56ae9bf71f983a3aed200c5ac217d
2010-04-12 14:56:31 -07:00
Robert Greenwalt
e2c0ce0363 Add warning magic to be a bit more reasonable.
Currently warns if you exceed more than 25% and 2*100%*timeUsed/(timeUsed+totalTime)

The formula means that imagining you've got half of the remaining time that you really have,
we will warn you if you would exceed the quota given your rate so far.  It's generous during the
early to mid-life and converges back to the limit as your timeUsed approaches totalTime.

bug:2576057
Change-Id: Id189de5b026f927ef478fd212d61d9e4ab5239e6
2010-04-09 16:07:08 -07:00
Robert Greenwalt
81aa0971d7 Make ThrottleService notice policy changes.
Added ContentObserver to watch relevant Secure Settings.
Also added new policy-change broadcast to let settings know.
Lastly reorged things a bit so that all of our broadcasts are sent at boot so the sticky ones
are populated.

bug:2576057
Change-Id: Ie11ffb057de9c801a5088612cd464ea062f3a666
2010-04-09 12:42:45 -07:00
Robert Greenwalt
5f996899b0 Roaming data doesn't count against limits
bug:2576057
Change-Id: I51a66e3b49a62e0186816ec0473814a216184e6b
2010-04-08 19:12:38 -07:00
Irfan Sheriff
c9b6851af6 Throttling framework addins
Add ThrottleManager in getSystemService
Add API for URL fetch

Bug: 2576057
Change-Id: Icd25c8b91ea4beea15c74e8ad7292ab48c962253
2010-04-08 16:53:32 -07:00
Robert Greenwalt
c87dc6dc90 Updating some notificiation UI for Throttling
String update and make one an ongoing notification.

bug:2576057
Change-Id: I7980f110c7eed8e8bf305490eddaa58e2949e3be
2010-04-08 16:00:26 -07:00
Robert Greenwalt
9e696c29f0 Add service to monitor/control the flow of data.
bug:2576057
Change-Id: Ib343c7ee1d619c6978910d9ee597db195d5aa3b6
2010-04-08 12:34:45 -07:00