Skip to content

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

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

poornakumar-pk wants to merge 1 commit into
rdkcentral:release/v8.6_p1b_patchfrom
poornakumar-pk:XLE-3100-8.6_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 6 GHz candidates and cause division by zero for certain 80+80 MHz candidates.

2 open issues
What changed in this PR

Backports the LTE-3100 fix from PR #1490 to 8.6_p1b, adding DFS non-occupancy checks before XLE backhaul connection attempts.

Changes:

  • Validates cached and scanned candidates against radio capabilities and the runtime channel map before wifi_hal_connect().
  • Rejects unavailable candidates and reschedules the connection state machine.
  • Extends DFS checks to 160 MHz operating blocks, including those with non-DFS primary channels.
File Description
source/​utils/​wifi_util.c Extends DFS checks to valid 160 MHz operating blocks.
source/​core/​services/​vap_svc_mesh_ext.c Adds candidate validation and rejection handling before backhaul connections.

Review effort: Balanced

Comment on lines +1201 to +1202
candidate_valid = (candidate_channel != 0) &&
(wifi_radio_operationParam_validation(&mgr->hal_cap, candidate_params) == RETURN_OK);

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 5 GHz capability mask defaults to 20/40/80/160 (move_radio_capability()), so an 80+80 width fails the capability check before the division. #1542 also adds a nchannels == 0 guard. Won't fix.

}

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. Fixed on main by the band-aware converter in #1542. Not blocking 8.6, but please bring it in when this branch is aligned with #1542.

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.6_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

Validation can reject usable wider-bandwidth APs, and allocation failure can leave backhaul reconnection stalled.

4 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. Fixed on main (#1542 reschedules). Not blocking 8.6.

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 capability mask defaults to 20/40/80/160, so a 160 MHz parent passes the mask check. The DFS-off rejection this width choice causes doesn't apply to 8.6, because DFS rollout is not planned in 8.6.

@mateuszCieslak-GL mateuszCieslak-GL 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.

Approving for 8.6. This backport has the same gaps as #1540: with DFS disabled on the extender, the gate rejects every parent whose block touches channels 52–144 (for example 44/160), not only channels in NOP, and an allocation failure returns without rescheduling the connection. That shouldn't block 8.6, since DFS isn't enabled on this branch. Please align it with the #1542 follow-up before DFS is enabled here.

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