Skip to content

LTE-3100: DFS channel can't be reuse for BH on nop_started - #1540

Open
poornakumar-pk wants to merge 1 commit into
rdkcentral:release/v8.7_p1b_patchfrom
poornakumar-pk:XLE-3100-8.7_p1b
Open

poornakumar-pk wants to merge 1 commit into
rdkcentral:release/v8.7_p1b_patchfrom
poornakumar-pk:XLE-3100-8.7_p1b

Conversation

@poornakumar-pk

@poornakumar-pk poornakumar-pk commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Reason for change: It prevents the STA connection attempt when the candidate is invalid
Test Procedure: check XLE not use same channel while it is in the nop_started state
Risks:
Priority: P1
Signed-off-by: poornakumar_mezhiselvam@comcast.com

Copilot AI balanced review requested due to automatic review settings October 22, 2026 09:23
Reason for change: It prevents the STA connection attempt when the candidate is invalid
Test Procedure: check XLE not use same channel while it is in the nop_started state
Risks:
Priority: P1
Signed-off-by: poornakumar_mezhiselvam@comcast.com

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new validation can reject valid backhaul candidates because of incorrect 6 GHz frequency conversion and overly restrictive bandwidth checks.

2 open issues
What changed in this PR

Backports the LTE-3100 DFS/NOP validation from PR #1490 to 8.7_p1b, checking mesh backhaul candidates before attempting a connection.

Changes:

  • Validates cached and scanned candidates against runtime radio parameters before wifi_hal_connect().
  • Clears or skips rejected candidates and reschedules connection selection.
  • Extends NOP checks to 160 MHz operating blocks with non-DFS primary channels.
File Description
source/​utils/​wifi_util.c Expands the condition for operating-block NOP validation.
source/​core/​services/​vap_svc_mesh_ext.c Adds candidate validation and rejection handling before backhaul connections.

Review effort: Balanced

}

candidate_channel = 0;
convert_freq_to_channel(candidate->external_ap.freq, &candidate_channel);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valid. The old converter turns 5955/5975 MHz into 191/195, so 6 GHz parents on primary 1/5 are rejected. Main already has the band-aware convert_freq_to_channel() from #1542; this will be fixed in a future PR.

Comment on lines +1197 to +1198
if (candidate->external_ap.oper_chan_bw != 0) {
candidate_params->channelWidth = candidate->external_ap.oper_chan_bw;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not reachable on rdk-wifi-hal platforms. The HAL never fills radiocap.channelWidth, and move_radio_capability() defaults 5 GHz to 20/40/80/160, so a 160 MHz parent always passes.

Copilot AI balanced review requested due to automatic review settings October 22, 2026 09:28
@poornakumar-pk poornakumar-pk changed the title LTE-0: Backport DFS NOP candidate validation to 8.7_p1b LTE-3100: DFS channel can't be reuse for BH on nop_started Oct 22, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Allocation failure in the new validation path can stall backhaul recovery without scheduling a retry.

3 open issues

Review effort: Balanced

if (candidate_params == NULL) {
wifi_util_error_print(WIFI_CTRL, "%s:%d: failed to allocate candidate radio parameters\n",
__func__, __LINE__);
return;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valid, minor. #1542 calls schedule_connect_sm() on this path, and the NOP-only check proposed there drops the allocation altogether.

@mateuszCieslak-GL

mateuszCieslak-GL commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

@poornakumar-pk please hold this for 8.7, if possible (CC: @gsathish86 ).
The gateway runs the full radio-config validator against the parent, using the extender's own DfsEnabled. With DFS disabled on the extender (the default until the DFS RFC is enabled), every parent whose operating block touches channels 52–144 is rejected, not only channels in NOP. That includes the default primary channel 44 when the parent runs 160 MHz, because 36–64 contains 52–64. Before this change the extender connected in that case. It shows up as Invalid channel 44 ... bw = 0x8 (or DFS is disabled ! Failed setting DFS channel <ch>) followed by rejecting backhaul candidate.

During a staged DFS rollout, gateways and extenders won't get the RFC at the same time. Extenders that haven't been switched yet would lose 5 GHz backhaul to gateways that have been. Please limit the gate to the NOP state of the parent's channel block (proposal on #1542 to follow), or confirm that rejecting DFS parents with local DFS off is intended and make that an explicit, logged check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants