From 4c88be655e387011c6d57c6d68b5deb94f6ce601 Mon Sep 17 00:00:00 2001 From: Kazuhiro Ondo Date: Fri, 20 May 2011 19:32:24 -0500 Subject: [PATCH] GSM DCT: Update poll stats to support multi-links Change-Id: I654e38e71f9576ed2c4da59af563be04bc87045c --- .../gsm/GsmDataConnectionTracker.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 564f0018d0c68..ec37b684c8eb3 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -1232,10 +1232,30 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { preTxPkts = mTxPkts; preRxPkts = mRxPkts; - mTxPkts = TrafficStats.getMobileTxPackets(); - mRxPkts = TrafficStats.getMobileRxPackets(); + long txSum = 0, rxSum = 0; + for (ApnContext apnContext : mApnContexts.values()) { + if (apnContext.getState() == State.CONNECTED) { + DataConnectionAc dcac = apnContext.getDataConnectionAc(); + if (dcac == null) continue; - //log("rx " + String.valueOf(rxPkts) + " tx " + String.valueOf(txPkts)); + LinkProperties linkProp = dcac.getLinkPropertiesSync(); + if (linkProp == null) continue; + + String iface = linkProp.getInterfaceName(); + + if (iface != null) { + long stats = TrafficStats.getTxPackets(iface); + if (stats > 0) txSum += stats; + stats = TrafficStats.getRxPackets(iface); + if (stats > 0) rxSum += stats; + } + } + } + + mTxPkts = txSum; + mRxPkts = rxSum; + + // log("tx " + mTxPkts + " rx " + mRxPkts); if (mNetStatPollEnabled && (preTxPkts > 0 || preRxPkts > 0)) { sent = mTxPkts - preTxPkts;