From: Sriram R Date: Tue, 15 Oct 2024 17:14:15 +0000 (+0300) Subject: wifi: ath12k: update ath12k_mac_op_update_vif_offload() for MLO X-Git-Tag: v6.13-rc1~135^2~57^2~30^2~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f4adb07e0a524a35b34397ad08d0199cfe2c450f;p=thirdparty%2Fkernel%2Flinux.git wifi: ath12k: update ath12k_mac_op_update_vif_offload() for MLO Currently ath12k_mac_op_update_vif_offload() updates for vif encapsulation and decapsulation offload configurations for intended vif's deflink. But for an ML vif encapapsulation and decapsulation offloads are an MLD level configuration so apply the same configuration for all affiliated links of the ML vif. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 Signed-off-by: Sriram R Signed-off-by: Rameshkumar Sundaram Signed-off-by: Kalle Valo Link: https://patch.msgid.link/20241015171416.518022-11-kvalo@kernel.org Signed-off-by: Jeff Johnson --- diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c index 8771d9738ffb7..ba633dad4c47c 100644 --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c @@ -6683,9 +6683,25 @@ static void ath12k_mac_op_update_vif_offload(struct ieee80211_hw *hw, struct ieee80211_vif *vif) { struct ath12k_vif *ahvif = ath12k_vif_to_ahvif(vif); + struct ath12k_link_vif *arvif; + unsigned long links; + int link_id; lockdep_assert_wiphy(hw->wiphy); + if (vif->valid_links) { + links = vif->valid_links; + for_each_set_bit(link_id, &links, IEEE80211_MLD_MAX_NUM_LINKS) { + arvif = wiphy_dereference(hw->wiphy, ahvif->link[link_id]); + if (!(arvif && arvif->ar)) + continue; + + ath12k_mac_update_vif_offload(arvif); + } + + return; + } + ath12k_mac_update_vif_offload(&ahvif->deflink); }