infinite offload
TRANSCRIPT
Infinite Offload
Initial Thoughts on Justification and Design
Dave, Michael
05/09/2012
2QUALCOMM Proprietary
Agenda
• Infinite offload (IOL) concept
• What we know from power and RRC analysis
• Items currently in research
• Assumptions for the design
• Design state charts
3QUALCOMM Proprietary
Infinite offload concept
Pending
connections?
Bringup WiFi
Pending
connections?
Bringup WiFi
Shutdown WiFi
if setup by IOL
4QUALCOMM Proprietary
Power Simulation Plan for RRC
• Important components for IOL
– Simulation parameters for estimating power w/o IOL
– Current draw for each RRC state for simulation based on tcpdump
– MSM8960 MTP data
RRC state Current (mA) Simulated
Timeout
DCH 250 3s
FACH 150 5s
IDLE 4 n/a
5QUALCOMM Proprietary
Power Simulation Plan for WiFi
Mode Current (mA)
Continuous Tx 240
Continuous Rx 42
Idle 0.8
• Important components for IOL simulation
• Scan to quantify overhead when out of coverage
• Use QCT UX traces for coverage trace
• Current draw for AP association
• Transmit/receive current draw
(Example data from Wizard team for 7x30)
• Need to get the above data for 8960
6QUALCOMM Proprietary
RRC analysis
• If and how much data sent in NSRM gate open
• MSM8960 MTP
• Data with WWAN push trigger for gate state
• Application mix used:
– Widgets: CNN, BBC, NY Times, Google Reader
– Non-widgets: Facebook, Foursquare, Gmail, Google+, Groupon, Gtalk,
Tweetcaster, Twitter, WeatherBug, Yelp
• Tsync = 20 min, Topen = 30 sec
– Tclose = 19 min 30 sec, Topen = 30 sec
• Data sets: Date Duration
Mar, 16 10 hrs
Mar, 19 44 hrs
Mar, 26 12 hrs
7QUALCOMM Proprietary
RRC analysis (cont.)
• No Data/RRC when gate opens: 30% of times
– Worth checking whether there’s pending
connections
• One or zero RRC while gate opened
• Bytes sent during gate open
– 115.67 KB avg, 250KB @ 90th percentile
– WiFi must handle, 68Kbps
– IOL doesn’t need BQE
0 100 200 300 4000
0.2
0.4
0.6
0.8
1
Amount of data (KB)
CD
F
Gate open
Gate close
0 2 4 6 8 100
0.2
0.4
0.6
0.8
1
Number of RRC connection
CD
F
Gate open
Gate close
8QUALCOMM Proprietary
Packet Trace Analysis
• Number of gate open windows with LLCs opened during IOL that
would be interrupted if WiFi gets shut down after gate closes:
24 98
15
7 33
20
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Mar, 16 Mar, 19 Mar, 26
Interrupted gate wnds
Uninterrupted gate wnds
9QUALCOMM Proprietary
Packet Trace Analysis (cont.)
• %% RRC transitions to be offloaded
27 145
38
2 11
11
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Mar, 16 Mar, 19 Mar, 26
Not offloaded RRC transitions
Offloaded RRC transitions
10QUALCOMM Proprietary
Packet Trace Analysis (cont.)
• %% Total bytes to be offloaded
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Mar, 16 Mar, 19Mar, 26
Bytes offloaded
Bytes not ofloaded
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Mar, 16 Mar, 19Mar, 26
DL bytes offloaded
DL bytes not offloaded
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Mar, 16 Mar, 19Mar, 26
UL bytes offloaded
UL bytes not offloaded
11QUALCOMM Proprietary
Packet Trace Analysis (cont.)
• CDF of last packet delay after gate close
0 500 1000 1500 2000 2500 30000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Last packet delay after gate close (s)
19-Mar
26-Mar
16-Mar
237
"Sweet" spot
12QUALCOMM Proprietary
Packet Trace Analysis (cont.)
0 5 10 15 20 25 300
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
CD
F
Last packet in gate open window (s)
WiFi can not be shutdown earlier if no traffic after the burst ends
13QUALCOMM Proprietary
Currently researching
• Power consumption analysis
– Compare major factors affecting power consumption between cellular and WiFi
• For 3G, power consumption in IDLE, FACH, DCH states and for transition b/w states
• For WiFi, power consumption for scan, association, continuous Tx and Rx
14QUALCOMM Proprietary
Design Assumptions
• WiFi offload at Tsync trigger when blocked TCP connections or DNS
requests
– Force WiFi up and conduct WQE once the interface is available
– Delay gate open and TCP connect(), getaddrinfo() calls until WLAN_GOOD reached
or Ttest fires
• WLAN_GOOD before Ttest fires
• WLAN is not GOOD when Ttest fires
• If no blocked TCP connections at opening gate do not enable WiFi
– NSRM background event fired shortly before Tsync and released all pending
connections
• If blocked TCP connections, but WiFi enabled at opening gate
– Do not force WiFi scan, use default interface
– Assume NSRM_WLAN_STATE_EVT_MASK bit is disabled in configuration
• Release forcing WiFi up after gate closes if it was set up by IOL
15QUALCOMM Proprietary
NSRM State Chart
SYNC_SWIM_GATE_OPEN
StopTsyncTimer, StopTopenTimer, ReleaseAllConnectio...
ScreenOnInd
SYNC_SWIM_GATE_CLOSEScreenOffInd[USB_DETACHED && Others]
RRCConnectedInd
RRCIdleInd[SCREEN_OFF && Others]
MiscInds
MiscRevInds[SCREEN_OFF && Others]
ScreenOnInd
ScreenOffInd[USB_DETACHED && Others]
RRCConnectedInd
RRCIdleInd[SCREEN_OFF && Others]
MiscInds
MiscRevInds[SCREEN_OFF && Others]
/StartTsyncTimer
ScreenOnInd
SYNC_SWIM_GATE_PERIODIC_OPEN
ScreenOnInd
TSyncExprInd
TOpenExprInd
TSyncExprInd
TOpenExprInd
Others = MIC_OFF && MUSIC_INACTIVE && HDMI_DISCONNECTED && GPS_OFF && HEADSET_OFF
MiscInds = MicOnInd || MusicOnInd || HeadSetPluggedInd || GPSOnInd || USBConnectedInd
See s tate chart for
SYNC_SWIM_GATE_PERIODIC_OPEN
for subs tate transitions
StartTsync periodic timer on default transition to this state
16QUALCOMM Proprietary
Substate Transitions with IOL
SYNC_SWIM_GATE_PERIODIC_OPEN
ReleaseForceWifiUp
CHECK_OFFLOAD
ForceWifiUp, StartTtestTimer
GATE_OPEN_OFFLOAD
StartTopenTimer, ReleaseAllConnections,CancelTtestTimer
WlanGoodIndGATE_OPEN_DEFAULT
StartTopenTimer, ReleaseAllConnections
TtestExprInd
WlanGoodInd
TtestExprInd
TsyncExprInd[BlockedConnections && WifiDisabled]
SYNC_SWIM_GATE_CLOSE
TsyncExprInd[BlockedConnections && WifiDisabled]
TopenExprInd
TsyncExprInd[BlockedConnections && WifiEnabled]
TopenExprInd
TsyncExprInd[BlockedConnections && WifiEnabled]
/StartTsyncTimer
SYNC_SWIM_GATE_OPEN
StopTopenTimer, ReleaseAllConnections
ScreenOnIndScreenOnInd
Start Tsync periodic
timer on 1st entrance
to this state
17QUALCOMM Proprietary
Substate Transitions with IOL
• ForceWifiUp locks WiFi up and flags the SWIM framework to not apply
hysteresis timer to long-lived connections in interface selection
• ReleaseForceWifiUp unlocks WiFi Up if it was locked and flags the SWIM
framework to restore hysteresis timer in interface selection
• IOL should not be applied if WiFi is explicitly disabled by the end user
18QUALCOMM Proprietary
B A C K U P
19QUALCOMM Proprietary
TCP connections blocked, WiFi enabled at opening gate
[WifiState == ENABLED]Stay in WiFi but do not force WLAN scan,
release all connections via default interface
opt
[N_blockedTCPConn != 0]opt
[WifiState == ENABLED]Stay in WiFi but do not force WLAN scan,
release all connections via default interface
opt
[N_blockedTCPConn != 0]opt
:NsrmCSS
Are blocked TCP connections?Are blocked TCP connections?
NsrmGate
State
ReleaseAllConnections(INFINITE_OFFLOAD)
TSyncTimerInd()
TransitionState()
ConnectionsBlockedInd()
StartTopenTimer()
TOpenTimerInd()
TransitionState()
ReleaseAllConnections(INFINITE_OFFLOAD)
TSyncTimerInd()
TransitionState()
ConnectionsBlockedInd()
StartTopenTimer()
TOpenTimerInd()
TransitionState()
WifiService
(?)
Is WiFi enabled?Is WiFi enabled?
Tsync fires
Open
gate
Topen fires
Close
gate
C layer Java layer
20QUALCOMM Proprietary
WiFi enabled at opening gate. WLAN_GOOD before Ttest fires
[WifiState == DISABLED]opt [WifiState == DISABLED]opt
[WiFiState == enabled]opt [WiFiState == enabled]opt
:NsrmCSS
startTtestTimer()
cancelTtestTimer()
startTtestTimer()
cancelTtestTimer()
NsrmGate
State
TransitionState()
TOpenTimerInd()
StartTopenTimer()
ConnectionsBlockedInd()()
TransitionState()
TOpenTimerInd()
StartTopenTimer()
ConnectionsBlockedInd()()
WifiService
(?)
getWifiEnabled()
setWifiEnabled(true)
setWifiEnabled(false)
getWifiEnabled()
setWifiEnabled(true)
setWifiEnabled(false)
setForcedWlanOffloadFlag(true)
:SwimDefaultInterface
SelectorDefaultState
getForcedWlanOffloadFlag()
true
setForcedWlanOffsetFlag(false)
setForcedWlanOffloadFlag(true)
getForcedWlanOffloadFlag()
true
setForcedWlanOffsetFlag(false)
:SwimInterface
Selection
Reselect()
getForcedWlanOffloadFlag()
true
Ignore
hysteresis timer
Reselect()
getForcedWlanOffloadFlag()
true
Ignore
hysteresis timer
:SwimInterface
Manager
Start WQE
WLAN_GOOD_EVENT
Start WQE
WLAN_GOOD_EVENT
:CNE
WLAN Address AvailableWLAN Address Available
Open
gate
Topen fires
Close
gate
C layer Java layer
WQE
successful,
WLAN good
21QUALCOMM Proprietary
WiFi enabled at opening gate. WLAN is not GOOD when Ttest fires
[WifiState == DISABLED]opt [WifiState == DISABLED]opt
:NsrmCSS
startTtestTimer()startTtestTimer()
ConnectionsBlockedInd()
NsrmGate
State
ConnectionsBlockedInd()
StartTopenTimer()
TOpenTimerInd()
TransitionState()
StartTopenTimer()
TOpenTimerInd()
TransitionState()
Is WiFi enabled?
WifiService
(?)
setWifiEnabled(true)
setWifiEnabled(false)
Is WiFi enabled?
setWifiEnabled(true)
setWifiEnabled(false)
setForcedWlanOffloadFlag(true)
:SwimDefaultInterface
SelectorDefaultState
getForcedWlanOffloadFlag()
true
setForcedWlanOffloadFlag(false)
setForcedWlanOffloadFlag(true)
getForcedWlanOffloadFlag()
true
setForcedWlanOffloadFlag(false)
Reselect()
:SwimInterface
Selection
Reselect()
getForcedWlanOffloadFlag()
true
Ignore
hysteresis timer
getForcedWlanOffloadFlag()
true
Ignore
hysteresis timer
:SwimInterface
Manager
Start WQEStart WQE
WLAN Address Available
:CNE
WLAN Address Available
Open
gate
Topen fires
Close
gate
C layer Java layer
Ttest fires
22QUALCOMM Proprietary
No blocked TCP connections at opening gate
[N_blockedTCPConn == 0]opt [N_blockedTCPConn == 0]opt
:NsrmCSS
Are blocked TCP connections?Are blocked TCP connections?
NsrmBackground
EvtHdlr
Background event
NsrmGate
State
ReleaseAllConnections(DEFAULT)
TransitionState()
StartTopenTimer()
TOpenTimerInd()
TransitionState()
TSyncTimerInd()
ReleaseAllConnections(INFINITE_OFFLOAD)
NoConnectionsBlockedInd()
CONNECTIONS_BLOCKED
TransitionState()
Background event
ReleaseAllConnections(DEFAULT)
TransitionState()
StartTopenTimer()
TOpenTimerInd()
TransitionState()
TSyncTimerInd()
ReleaseAllConnections(INFINITE_OFFLOAD)
NoConnectionsBlockedInd()
CONNECTIONS_BLOCKED
TransitionState()
Open
gate
Topen fires
Release all
connections
via default IF
Close
gate
Tsync fires
NO_OP, gate
remains closed,