mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
wifi: cfg80211: Fix use_for flag update on BSS refresh
Userspace may fail to connect to certain BSS that were initially
marked as unusable due to regulatory restrictions (use_for = 0,
e.g., 6 GHz power type mismatch). Even after these restrictions
are removed and the BSS becomes usable, connection attempts still
fail.
The issue occurs in cfg80211_update_known_bss() where the use_for
flag is updated using bitwise AND (&=) instead of direct assignment.
Once a BSS is marked with use_for = 0, the AND operation masks out
any subsequent non-zero values, permanently keeping the flag at 0.
This causes __cfg80211_get_bss(), invoked by nl80211_assoc_bss(), to
fail the check "(bss->pub.use_for & use_for) != use_for", thereby
blocking association.
Replace the bitwise AND operation with direct assignment so the use_for
flag accurately reflects the current BSS state.
Fixes: d02a12b8e4 ("wifi: cfg80211: add BSS usage reporting")
Signed-off-by: Huang Chenming <chenming.huang@oss.qualcomm.com>
Link: https://patch.msgid.link/20251209025733.2098456-1-chenming.huang@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
2e985cfac7
commit
4073ea5161
|
|
@ -1959,7 +1959,7 @@ cfg80211_update_known_bss(struct cfg80211_registered_device *rdev,
|
|||
ether_addr_copy(known->parent_bssid, new->parent_bssid);
|
||||
known->pub.max_bssid_indicator = new->pub.max_bssid_indicator;
|
||||
known->pub.bssid_index = new->pub.bssid_index;
|
||||
known->pub.use_for &= new->pub.use_for;
|
||||
known->pub.use_for = new->pub.use_for;
|
||||
known->pub.cannot_use_reasons = new->pub.cannot_use_reasons;
|
||||
known->bss_source = new->bss_source;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user