Currently, links in an interface are allocated during channel assignment via assign_vif_chanctx(). Conversely, links are deleted during channel unassignment via unassign_vif_chanctx(). However, deleting links during channel unassignment does not comply with mac80211 link handling. Therefore, this process should be managed within change_vif_links(). This series aims to add support to handle links in change_vif_links() callback. Patches 1-2 are making debug infra to work without device info. Patches 3-8 are the ones changing the code to handle as mentioned above. NOTE: * A new ath12k-check warning comes which probably needs to be added to ignore list drivers/net/wireless/ath/ath12k/debug.c:69: Prefer [subsystem eg: netdev]_dbg([subsystem]dev, ... then dev_dbg(dev, ... then pr_debug(... to printk(KERN_DEBUG ... This is because, since device info is not known can not use netdev_ or dev_ dbg family. pr_debug() is an option but that will require DYNAMIC_DEBUG and then ath12k needs to be probed with dyndbg=+p which we don't want in ath. Hence, only option left is to use printk() directly. --- Aditya Kumar Singh (8): wifi: ath12k: eliminate redundant debug mask check in ath12k_dbg() wifi: ath12k: introduce ath12k_generic_dbg() wifi: ath12k: remove redundant vif settings during link interface creation wifi: ath12k: remove redundant logic for initializing arvif wifi: ath12k: use arvif instead of link_conf in ath12k_mac_set_key() wifi: ath12k: relocate a few functions in mac.c wifi: ath12k: allocate new links in change_vif_links() wifi: ath12k: handle link removal in change_vif_links() drivers/net/wireless/ath/ath12k/debug.c | 6 +- drivers/net/wireless/ath/ath12k/debug.h | 7 +- drivers/net/wireless/ath/ath12k/mac.c | 288 +++++++++++++++++++------------- 3 files changed, 182 insertions(+), 119 deletions(-) --- base-commit: 48a62436540224f57013c27519dd2aa3ddd714c9 change-id: 20241210-unlink_link_arvif_from_chanctx-315159c5ac63