-
Notifications
You must be signed in to change notification settings - Fork 0
[PW_SID:994665] [01/15] wiphy: add driver quirk for the colocated scan flag #478
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
base: workflow
Are you sure you want to change the base?
Conversation
This is taken care of by the individual cache items and if none exist, tar fails.
Some drivers do not handle the colocated scan flag very well and this results in BSS's not being seen in scans. This of course results in very poor behavior. This has been seen on ath11k specifically but after some conversations [1] on the linux-wireless mailing list others have reported issues with iwlwifi acting similarly. Since there are many hardware variants that use both ath11k and iwlwifi this new quirk isn't being forced to those drivers, but let users configure IWD to disable the flag if needed. [1] https://lore.kernel.org/linux-wireless/d1e75a08-047d-7947-d51a-2e486efead77@candelatech.com/
This module will provide a database for known issues or quirks with wireless vendors. For now the list of quirks is limited to 32 as that is the size returned in the bit mask. This could be extended to 64 in the future if needed, but of course the goal is to never reach that level. The vendor_quirks() API is intended to be called from scan.c when parsing vendor attributes. This will lookup any quirks associated with the OUI provided and a mask of quirks will be returned. This can be repeated against all the vendor OUI's seen in the scan. The result is then a bitmask containing all quirks for that BSS. This can then be referenced later during various operations in IWD.
VENDOR_QUIRK_BAD_BSS_TM_CANDIDATE_LIST: When a BSS requests a station roam it can optionally include a list of BSS's that can be roamed to. IWD uses this list and only scans on those frequencies. In some cases though the AP's list contains very poor options and it would be better for IWD to request a full neighbor report. VENDOR_QUIRK_REPLAY_COUNTER_MISMATCH: On some Aruba APs there is a mismatch in the replay counters between what is seen in scans versus authentications/associations. This difference is not allowed in the spec, therefore IWD will not connect. This quirk is intended to relax that check.
This is to prepare for supporting a vendor quirk, where we'll need the handshake to lookup if the quirk to disable a specific check.
As each vendor IE is parsed lookup if there are any quirks associated with it, and store these in a bit mask.
This has been a long standing issue on Aruba APs where the scan IEs differ from the IEs received during FT. For compatibility we have been carrying a patch to disable the replay counter check but this isn't something that was ever acceptable for upstream. Now with the addition of vendor quirks this check can be disabled only for the OUI of Aruba APs. Reported-by: Michael Johnson <mjohnson459@gmail.com> Co-authored-by: Michael Johnson <<mjohnson459@gmail.com>
If a BSS is requesting IWD roam elsewhere but does not include a preferred candidate list try getting a neighbor report before doing a full scan. If the limited scan based on the candidate list comes up empty this would previously result in IWD giving up on the AP roam entirely. This patch also improves that behavior slightly by doing a full scan afterwards as a last ditch effort. If no BSS's are found after that, IWD will give up on the AP roam.
If the AP vendor has known issues with the preferred candidate list ignore it and jump directly to requesting a neighbor report.
If there were no BSS candidates found after trying to roam make sure the old roam_freqs list gets cleared so IWD doesn't end up scanning potentially old frequencies on the next retry.
|
Fetch PR Prep - Setup ELL Make Distcheck Build - Configure Make Check Make Check w/Valgrind Incremental Build with patches |
0e452d2 to
d035ebb
Compare
d035ebb to
25a40e4
Compare
Some drivers do not handle the colocated scan flag very well and this
results in BSS's not being seen in scans. This of course results in
very poor behavior.
This has been seen on ath11k specifically but after some
conversations [1] on the linux-wireless mailing list others have
reported issues with iwlwifi acting similarly. Since there are many
hardware variants that use both ath11k and iwlwifi this new quirk
isn't being forced to those drivers, but let users configure IWD to
disable the flag if needed.
[1] https://lore.kernel.org/linux-wireless/d1e75a08-047d-7947-d51a-2e486efead77@candelatech.com/
src/wiphy.c | 23 +++++++++++++++++------
src/wiphy.h | 1 +
2 files changed, 18 insertions(+), 6 deletions(-)