To prepare the driver for MLO support, split the driver vif and sta data structure to scale for multiple links. This requires changing the use of arvif and arsta to per link and not per hw which can now comprise of multiple links. Also since most configurations from mac80211 are done per link, do refactoring of the driver functions to apply these configurations at link level. Add the required locking changes to synchronize the usage of these per link objects. --- v6: - In PATCH 1/3 - Updated comments about lock usage in ath12k_mac_op_sta_state() - on return cases released ah->conf_mutex() before WARN_ON()s and error prints in multiple places v5: - Rebased PATCH 1/3 on ToT as few more instances of arvif were introduced. - Changed ath12k_vif_to_vif() -> ath12k_ahvif_to_vif() and ath12k_sta_to_sta() -> ath12k_ahsta_to_sta() - Used ahvif->link[0] instead of deflink as preparation for MLD in ath12k_mac_op_sta_rc_update() v4: - Extensive rebase on PATCH 1/3 on ToT as MBSSID changes are introduced since v3. v3: - Rebased on ToT v2: - Rebased PATCH 1/3 on ToT as b0afabc4d7e0 (wifi: ath12k: add support to handle beacon miss for WCN7850) has introduced few APIs that use arvif. Sriram R (3): wifi: ath12k: prepare vif data structure for MLO handling wifi: ath12k: pass ath12k_link_vif instead of vif/ahvif wifi: ath12k: prepare sta data structure for MLO handling drivers/net/wireless/ath/ath12k/core.h | 91 ++- drivers/net/wireless/ath/ath12k/dp.c | 21 +- drivers/net/wireless/ath/ath12k/dp.h | 3 +- drivers/net/wireless/ath/ath12k/dp_mon.c | 14 +- drivers/net/wireless/ath/ath12k/dp_rx.c | 16 +- drivers/net/wireless/ath/ath12k/dp_rx.h | 2 +- drivers/net/wireless/ath/ath12k/dp_tx.c | 9 +- drivers/net/wireless/ath/ath12k/dp_tx.h | 2 +- drivers/net/wireless/ath/ath12k/mac.c | 962 +++++++++++++++-------- drivers/net/wireless/ath/ath12k/mac.h | 11 +- drivers/net/wireless/ath/ath12k/p2p.c | 17 +- drivers/net/wireless/ath/ath12k/p2p.h | 2 +- drivers/net/wireless/ath/ath12k/peer.c | 7 +- drivers/net/wireless/ath/ath12k/peer.h | 4 +- drivers/net/wireless/ath/ath12k/wmi.c | 22 +- drivers/net/wireless/ath/ath12k/wmi.h | 8 +- drivers/net/wireless/ath/ath12k/wow.c | 59 +- 17 files changed, 801 insertions(+), 449 deletions(-) base-commit: db1ce56e6e1d395dd42a3cd6332a871d9be59c45 -- 2.34.1