Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use a longer backoff for CASE retries. #25736

Conversation

bzbarsky-apple
Copy link
Contributor

We have a common failure mode for Thread devices where the commissioner sends Sigma1 prior to sending CommissioningComplete, the commissionee responds, but the Sigma2 (and all its retries) never reach the commissioner.

When this happens, our existing CASE retries do not help because they happen too quickly: the commissionee is waiting for Sigma3, and will ignore Sigma1 messages until it gets the Sigma3 or times out.

To address this, include the time it would take the commissionee to time out in our CASE retry delay for every other retry. This allows us to retry quickly once, then give the commissionee time to start listening again, then retry quickly one or two times (depending on how many retries were requested), etc.

We have a common failure mode for Thread devices where the commissioner sends
Sigma1 prior to sending CommissioningComplete, the commissionee responds, but
the Sigma2 (and all its retries) never reach the commissioner.

When this happens, our existing CASE retries do not help because they happen too
quickly: the commissionee is waiting for Sigma3, and will ignore Sigma1 messages
until it gets the Sigma3 or times out.

To address this, include the time it would take the commissionee to time out in
our CASE retry delay for every other retry.  This allows us to retry quickly
once, then give the commissionee time to start listening again, then retry
quickly one or two times (depending on how many retries were requested), etc.
@github-actions
Copy link

PR #25736: Size comparison from bbb8e93 to 55d3f52

Increases (1 build for cc32xx)
platform target config section bbb8e93 55d3f52 change % change
cc32xx lock CC3235SF_LAUNCHXL (read only) 645489 645601 112 0.0
.debug_aranges 87392 87400 8 0.0
.debug_frame 300284 300316 32 0.0
.debug_info 20246022 20248011 1989 0.0
.debug_line 2661031 2661469 438 0.0
.debug_loc 2804874 2805592 718 0.0
.debug_ranges 283152 283208 56 0.0
.debug_str 3027037 3027174 137 0.0
.strtab 380331 380421 90 0.0
.symtab 257376 257408 32 0.0
.text 537376 537488 112 0.0
Full report (1 build for cc32xx)
platform target config section bbb8e93 55d3f52 change % change
cc32xx lock CC3235SF_LAUNCHXL 0 0 0 0.0
(read only) 645489 645601 112 0.0
(read/write) 203848 203848 0 0.0
.ARM.attributes 44 44 0 0.0
.ARM.exidx 8 8 0 0.0
.bss 197248 197248 0 0.0
.comment 194 194 0 0.0
.data 1480 1480 0 0.0
.debug_abbrev 930289 930289 0 0.0
.debug_aranges 87392 87400 8 0.0
.debug_frame 300284 300316 32 0.0
.debug_info 20246022 20248011 1989 0.0
.debug_line 2661031 2661469 438 0.0
.debug_loc 2804874 2805592 718 0.0
.debug_ranges 283152 283208 56 0.0
.debug_str 3027037 3027174 137 0.0
.ramVecs 780 780 0 0.0
.resetVecs 64 64 0 0.0
.rodata 105993 105993 0 0.0
.shstrtab 232 232 0 0.0
.stab 204 204 0 0.0
.stabstr 441 441 0 0.0
.stack 2048 2048 0 0.0
.strtab 380331 380421 90 0.0
.symtab 257376 257408 32 0.0
.text 537376 537488 112 0.0

Copy link
Contributor

@nivi-apple nivi-apple left a comment

Choose a reason for hiding this comment

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

Looks good to me.

@bzbarsky-apple bzbarsky-apple merged commit 2062196 into project-chip:master Mar 17, 2023
@bzbarsky-apple bzbarsky-apple deleted the include-Sigma2-timeout-in-CASE-retries branch March 17, 2023 20:06
lecndav pushed a commit to lecndav/connectedhomeip that referenced this pull request Mar 22, 2023
We have a common failure mode for Thread devices where the commissioner sends
Sigma1 prior to sending CommissioningComplete, the commissionee responds, but
the Sigma2 (and all its retries) never reach the commissioner.

When this happens, our existing CASE retries do not help because they happen too
quickly: the commissionee is waiting for Sigma3, and will ignore Sigma1 messages
until it gets the Sigma3 or times out.

To address this, include the time it would take the commissionee to time out in
our CASE retry delay for every other retry.  This allows us to retry quickly
once, then give the commissionee time to start listening again, then retry
quickly one or two times (depending on how many retries were requested), etc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants