Skip to content

[PW_SID:1136904] netdev: Fix premature ECSA channel switch timeout for mt7925 - #510

Open
IWDTestBot wants to merge 1 commit into
workflowfrom
1136904
Open

[PW_SID:1136904] netdev: Fix premature ECSA channel switch timeout for mt7925#510
IWDTestBot wants to merge 1 commit into
workflowfrom
1136904

Conversation

@IWDTestBot

Copy link
Copy Markdown
Owner

The mt7925 cards get stuck and disconnect during Extended Channel Switch
Announcement (ECSA) events because the kernel considers them stuck.

This occurs because the kernel sends an imminent channel switch
notification (NL80211_CMD_CH_SWITCH_NOTIFY with the
NL80211_ATTR_CH_SWITCH_COUNT attribute present) prior to the physical
switch. iwd was previously ignoring the countdown attribute and
immediately initiating an active scan to re-query the AP. Sending a
scan command while the firmware is trying to tune the radio causes the
mt7925 firmware to time out.

This patch adds a check to see if the countdown attribute is present for
mt7925 interfaces. If it is, we wait for the second notification (which
omits the count) that confirms the switch is physically completed before
proceeding with the internal state updates.

Signed-off-by: Arpan arpanpramanik015@gmail.com

src/netdev.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

The mt7925 cards get stuck and disconnect during Extended Channel Switch
Announcement (ECSA) events because the kernel considers them stuck.

This occurs because the kernel sends an imminent channel switch
notification (NL80211_CMD_CH_SWITCH_NOTIFY with the
NL80211_ATTR_CH_SWITCH_COUNT attribute present) prior to the physical
switch. iwd was previously ignoring the countdown attribute and
immediately initiating an active scan to re-query the AP. Sending a
scan command while the firmware is trying to tune the radio causes the
mt7925 firmware to time out.

This patch adds a check to see if the countdown attribute is present for
mt7925 interfaces. If it is, we wait for the second notification (which
omits the count) that confirms the switch is physically completed before
proceeding with the internal state updates.

Signed-off-by: Arpan <arpanpramanik015@gmail.com>
@IWDTestBot

Copy link
Copy Markdown
Owner Author

Fetch PR
Test ID: fetch
Desc: Fetch the PR commits for this CI run
Duration: 3.52 seconds
Result: PASS

Prep - Setup ELL
Test ID: setupell
Desc: Clone, build, and install ELL
Duration: 27.94 seconds
Result: PASS

Make Distcheck
Test ID: makedistcheck
Desc: Run distcheck to check the distribution
Duration: 58.84 seconds
Result: PASS

Build - Configure
Test ID: build
Desc: Configure the BlueZ source tree
Duration: 10.75 seconds
Result: PASS

Make Check
Test ID: makecheck
Desc: Run 'make check'
Duration: 1.81 seconds
Result: PASS

Make Check w/Valgrind
Test ID: makecheckvalgrind
Desc: Run 'make check' with Valgrind
Duration: 76.13 seconds
Result: PASS

Incremental Build with patches
Test ID: incremental_build
Desc: Incremental build per patch in the series
Duration: 0.42 seconds
Result: PASS

@IWDTestBot

Copy link
Copy Markdown
Owner Author

Fetch PR
Test ID: fetch
Desc: Fetch the PR commits for this CI run
Duration: 2.61 seconds
Result: PASS

GitLint
Test ID: gitlint
Desc: Run gitlint with rule in .gitlint
Duration: 0.29 seconds
Result: PASS

Prep - Setup ELL
Test ID: setupell
Desc: Clone, build, and install ELL
Duration: 26.31 seconds
Result: PASS

Make Distcheck
Test ID: makedistcheck
Desc: Run distcheck to check the distribution
Duration: 41.14 seconds
Result: PASS

Build - Configure
Test ID: build
Desc: Configure the BlueZ source tree
Duration: 20.79 seconds
Result: PASS

Make Check
Test ID: makecheck
Desc: Run 'make check'
Duration: 3.11 seconds
Result: PASS

Make Check w/Valgrind
Test ID: makecheckvalgrind
Desc: Run 'make check' with Valgrind
Duration: 108.68 seconds
Result: PASS

Incremental Build with patches
Test ID: incremental_build
Desc: Incremental build per patch in the series
Duration: 0.31 seconds
Result: PASS

Autotest Runner
Test ID: testrunner
Desc: Runs IWD's autotest framework
Duration: 2555.10 seconds
Result: PASS

Clang Build
Test ID: clang
Desc: Build IWD using clang compiler
Duration: 111.52 seconds
Result: PASS

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.

2 participants