datastorage: use RCPI when probe signal is unavailable - #275
Merged
PolynomialDivision merged 1 commit intoAug 10, 2026
Merged
Conversation
Collaborator
|
Looks good to me |
PolynomialDivision
merged commit Aug 10, 2026
f2802ee
into
berlin-open-wireless-lab:master
1 check passed
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.
Summary
Use beacon-report RCPI as an RSSI fallback when scoring a probe entry whose
signalfield is zero.The change is intentionally limited to
eval_probe_metric():signalcontinues to be scored exactly as before;signal == 0and RCPI is in the valid IEEE 802.11 range0..220, RCPIis converted with the existing
rcpi_to_rssi()helper;220are not used and the entry remains unscored;scoring calculations without changing their configuration or semantics.
Problem
Beacon reports can populate a probe entry with a valid
rcpiwhile leavingsignalat zero. The current implementation only enters the AP scoring pathwhen
probe_entry->signal != 0.As a result, an AP reported by the client can receive a score of zero even when
the beacon report contains usable signal-quality information. In a dual-band
deployment this can prevent a valid 5 GHz AP from becoming a steering candidate,
leaving the client on 2.4 GHz despite a good reported 5 GHz signal.
There is already a TODO in this function asking whether RCPI should be used.
DAWN also already provides
rcpi_to_rssi(), so the conversion does not need tobe duplicated.
Implementation
The patch copies
probe_entry->signalinto a localsignalvariable and trackswhether a usable value is available. If the original signal is unavailable but
RCPI is valid, it converts RCPI to dBm and runs the existing scoring code with
that result.
This is a fallback, not a second score source. When both values are present,
the original non-zero
signalremains authoritative and RCPI is ignored.A trace message is emitted when the fallback is used:
Behaviour before and after
Before:
After:
Testing
aarch64_cortex-a53using the official OpenWrt25.12.5mediatek/filogic SDK.25.12.5.signalretain theirexisting scoring behaviour.
52-84 dBm78-71 dBm158-31 dBmreported 5 GHz AP to participate in candidate comparison.
Scope and compatibility
No UCI options or defaults are changed. No new scoring mechanism is introduced.
Deployments that already provide a non-zero probe
signalretain the previousbehaviour. The fallback only affects entries that would otherwise skip RSSI and
AP scoring entirely despite carrying a valid RCPI value.