Repository navigation
cell M6: a handover arrival placed on a position a staged schedule gives another UE - #576
Merged
Merged
Conversation
…ves another UE (#566) The 'not reproduced' m6_daps_dl run (arrival DL ~111 us late, 13 uplinks lost) was a race: the CU's coordination schedule moved the target's own UE onto the position the CU then gave the arrival (from a report that predated the schedule), and the target's free-position check read a map snapshot refreshed once per pass. 13 % of handover commands on the rig were refused for it (the race caught); 14 DU logs show it missed. CU: no handover while either DU has a schedule pushed and not applied; the target id/position chosen against its own last schedule too. DU: a staged schedule's positions are taken; the check's view of the map refreshed at the commit. Rig after: 25 runs, 29 commands, 0 refused, no shared position. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
PR Summary by QodoPrevent handover arrivals from sharing staged schedule positions
AI Description
Diagram
High-Level Assessment
Files changed (4)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can ask Qodo to dismiss a finding you disagree with, with your reason on record |
josephnef
added a commit
that referenced
this pull request
Nov 14, 2026
… the roam's slow return a stale station (#577) #566, *causes not established*: the two that remained after #576. **Witness logging:** each `cell.w` frame line now carries per-path RSSI (dBm) and SNR (dB). This makes the witness a second receiver, aligned to each DU's clock, for TX power sweeps. **The power-to-RSSI non-linearity is one radio.** testrig `scripts/m6_txpwr_sweep.sh` steps both DUs from 0 to −20 dB of offset, reading at four TX→RX pairs; `results/2026-11-14-m6-causes.txt` has the tables. - **DU2 (j6412-3 09:00)** is linear over the full 20 dB at every reading, with SNR 33–41 dB. - **DU1 (j6412-1 09:00)** is linear down to 9 dBm commanded. At 8 dBm it steps down 3–10 dB, depending on the receiving path, and the receivers' SNR falls 13–15 dB with it. So the signal fell, not just its estimate. A 0.5 dB sweep repeats the step. - **With the roles swapped,** j6412-1 09:00 as the receiver sees the same collapse below about −62 dBm, from both transmitters. Links without it read exactly linear (−35 → −55 dBm and −43 → −64.5 dBm). That localises it to that unit, in both directions. The mechanism inside it is not established. The crossing's "−9 dB reads −12" came from ramping DU1 into that region. **The roam baseline's 5.6–5.9 s return is a stale station.** testrig `m6_roam_baseline.sh --debug 1`, A/B with `--drop-left`: - An SME roam leaves the old AP holding the client. - On the return, hostapd first deletes that station, and `DEL_STATION` took 428–443 ms on every removal. - The client's authentication wait ran out first. It fell back to the AP it was leaving, which paid the same deletion, and ignored both for ~4.5 s. - With the old AP dropping the client as it leaves (`deauthenticate STA tx=0`), every roam took 0.41–0.57 s (10/10, against 5/5 slow returns without). `docs/cell-m6.md` updates both notes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
8 of 9 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#566, causes not established: the
m6_daps_dlrun with DL to the arriving UE ~111 µs late and 13 uplinks lost, recorded as "not reproduced".The cause, from the original logs (
regf-dl/fault-daps-1):f1_view.ues, a map snapshot refreshed once per main-loop pass, not at the commit.It was not rare. Across the saved rig logs:
invalid. That is the same race, caught when the target's view was fresh; the CU retried.Fix
Stager::staged()).Rig after (fixed build on all three boxes):
m6_handover.sh6 normal + 3 fault, plusm6_daps_dl.sh(all 16 runs): 25 runs, 29 commands.late_usp50 was 2–3 µs in every run.ctest: 95/95 pass.
docs/cell-m6.md"Bugs the rig found" records it.🤖 Generated with Claude Code