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.
Unified · Split
| @@ -4094,9 +4094,6 @@ static void ieee80211_invoke_rx_handlers(struct ieee80211_rx_data *rx) · 4093 unmodified lines | ||
| 4094 | 4094 | static bool |
| 4095 | 4095 | ieee80211_rx_is_valid_sta_link_id(struct ieee80211_sta *sta, u8 link_id) |
| 4096 | 4096 | { |
| 4097 | − if (!sta->mlo) | |
| 4098 | − return false; | |
| 4099 | − | |
| 4100 | 4097 | return !!(sta->valid_links & BIT(link_id)); |
| 4101 | 4098 | } |
| 4102 | 4099 | |