Currently, reset beacon monitor (ieee80211_sta_reset_beacon_monitor()) and reset connection monitor timers (ieee80211_sta_reset_conn_monitor()) are handled only for non-AP non-MLD STA and do not support non-AP MLD STA. When the beacon loss/connection loss occurs in non-AP MLD STA with the current implementation, it is treated as a single link and the timers are reset based on the timeout of the deflink, without checking all the links. Check the CSA flags for all the links in the MLO and decide whether to schedule the work queue for beacon loss. If any of the links has CSA active, then beacon loss work is not scheduled in ieee80211_sta_reset_beacon_monitor(). In ieee80211_sta_reset_conn_monitor(), the CSA flags of all links are checked. The connection monitoring logic proceeds only if none of the links have CSA active. The timeout is determined based on the link that will expire last among all links. If at least one link has not timed out, the timer is updated accordingly. The connection loss work is scheduled only when all links have timed out. Also, call the functions ieee80211_sta_reset_beacon_monitor() and ieee80211_sta_reset_conn_monitor() from ieee80211_csa_switch_work() only when all the links are CSA active. Since the beacon and connection monitoring logic now supports MLO, remove the MLO-related WARN_ON() checks in these paths. v2: Addressed Johannes's comments. * Changed the comments special style. * Blank link after guard(rcu). * Changed the helper function name and return type in the 2nd patch. Maharaja Kennadyrajan (2): wifi: mac80211: extend beacon monitoring for MLO wifi: mac80211: extend connection monitoring for MLO net/mac80211/mlme.c | 124 +++++++++++++++++++++++++++++++++----------- 1 file changed, 95 insertions(+), 29 deletions(-) base-commit: c73ebc0dbb6ed968cb58d04d82ede3b5fb95e8bf -- 2.17.1