Commit aaacf174 authored by Karthikeyan Periyasamy's avatar Karthikeyan Periyasamy Committed by Johannes Berg

wifi: mac80211: fix non-MLO station association

Non-MLO station frames are dropped in Rx path due to the condition
check in ieee80211_rx_is_valid_sta_link_id(). In multi-link AP scenario,
non-MLO stations try to connect in any of the valid links in the ML AP,
where the station valid_links and link_id params are valid in the
ieee80211_sta object. But ieee80211_rx_is_valid_sta_link_id() always
return false for the non-MLO stations by the assumption taken is
valid_links and link_id are not valid in non-MLO stations object
(ieee80211_sta), this assumption is wrong. Due to this assumption,
non-MLO station frames are dropped which leads to failure in association.

Fix it by removing the condition check and allow the link validation
check for the non-MLO stations.

Fixes: e66b7920 ("wifi: mac80211: fix initialization of rx->link and rx->link_sta")
Signed-off-by: default avatarKarthikeyan Periyasamy <quic_periyasa@quicinc.com>
Link: https://lore.kernel.org/r/20230206160330.1613-1-quic_periyasa@quicinc.comSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 57b341e9
...@@ -4094,9 +4094,6 @@ static void ieee80211_invoke_rx_handlers(struct ieee80211_rx_data *rx) ...@@ -4094,9 +4094,6 @@ static void ieee80211_invoke_rx_handlers(struct ieee80211_rx_data *rx)
static bool static bool
ieee80211_rx_is_valid_sta_link_id(struct ieee80211_sta *sta, u8 link_id) ieee80211_rx_is_valid_sta_link_id(struct ieee80211_sta *sta, u8 link_id)
{ {
if (!sta->mlo)
return false;
return !!(sta->valid_links & BIT(link_id)); return !!(sta->valid_links & BIT(link_id));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment