Tethering offload stats updates are eventually consistent
This patch removes the call to runWithScissors() in OffloadController#getTetherStats() that was causing a deadlock when NetworkStatsService would be polled for stats in certain threading contexts. Instead of trying to query the tethering offload HAL synchronously all the time, this patch: - changes getTetherStats() to only call into the offload HAL when it detects that it is called on the same thread as the Tethering handler thread. - changes the map of interface to accumulated tethering forwarded stats to be concurrent. This makes stats reading from getTetherStats() eventually consistent. From the point of view of getTetherStats(), it preserves the guarantees that tethering stats are monotonically increasing, and also guarantees no tearing between rx bytes and tx bytes. Bug: 29337859 Bug: 32163131 Bug: 64771555 Test: runtest frameworks-net Change-Id: Ibcd351ad0225ef146b00a807833f76d2a886f6c1
Loading
Please register or sign in to comment