Part of the 5G-NR RAN EPIC #254. Phase B, the payoff capability.
Goal: a moving UE's schedule migrates cell-to-cell with no scan / no re-association / no clock re-acquisition — make-before-break, riding the network-wide synced clock.
5G mapping
CHO (Conditional Handover — pre-staged A3-style condition) and DAPS (Dual Active Protocol Stack — dual-cell active slots + uplink duplication during the crossing).
Deliverables (tools/ran-controller/ + src/cell/)
Reuses
M5 CU + F1/Xn, M4 synced TSF (the enabler — TSF continuity across cells), FastRetune, ap_wpa2.cpp security context, M0 per-UE attribution.
Risks (from EPIC)
- A3/CHO tuning — raw RSSI ping-pongs at the edge; hysteresis + time-to-trigger is the classic pitfall (drive off filtered quality).
- Single-radio deaf-time — different-channel DAPS is sequential; ~ms
FastRetune bounds it.
Dependencies
M5 (#254 tracks).
Test — tests/ran_handover.sh
Move a UE A→B: the grant migrates after the time-to-trigger window with TSF continuity, no re-association, vs the ~100 ms roam "ghost bar." Kill one path mid-crossing → the duplicated UL still arrives via B (DAPS).
Part of the 5G-NR RAN EPIC #254. Phase B, the payoff capability.
Goal: a moving UE's schedule migrates cell-to-cell with no scan / no re-association / no clock re-acquisition — make-before-break, riding the network-wide synced clock.
5G mapping
CHO (Conditional Handover — pre-staged A3-style condition) and DAPS (Dual Active Protocol Stack — dual-cell active slots + uplink duplication during the crossing).
Deliverables (
tools/ran-controller/+src/cell/)RxAtribRSSI/SNR/EVM (from M0's per-UE attribution, filtered — never raw RSSI) and reports to the CU over F1.FastRetunefor the channel; security context pre-staged fromap_wpa2.cpp(802.11r-style).Reuses
M5 CU + F1/Xn, M4 synced TSF (the enabler — TSF continuity across cells),
FastRetune,ap_wpa2.cppsecurity context, M0 per-UE attribution.Risks (from EPIC)
FastRetunebounds it.Dependencies
M5 (#254 tracks).
Test —
tests/ran_handover.shMove a UE A→B: the grant migrates after the time-to-trigger window with TSF continuity, no re-association, vs the ~100 ms roam "ghost bar." Kill one path mid-crossing → the duplicated UL still arrives via B (DAPS).