Loading drivers/net/wireless/intel/iwlwifi/mvm/rs.c +6 −6 Original line number Diff line number Diff line Loading @@ -2692,7 +2692,7 @@ static void rs_drv_get_rate(void *mvm_r, struct ieee80211_sta *sta, lq_sta = mvm_sta; spin_lock(&lq_sta->pers.lock); spin_lock_bh(&lq_sta->pers.lock); iwl_mvm_hwrate_to_tx_rate_v1(lq_sta->last_rate_n_flags, info->band, &info->control.rates[0]); info->control.rates[0].count = 1; Loading @@ -2707,7 +2707,7 @@ static void rs_drv_get_rate(void *mvm_r, struct ieee80211_sta *sta, iwl_mvm_hwrate_to_tx_rate_v1(last_ucode_rate, info->band, &txrc->reported_rate); } spin_unlock(&lq_sta->pers.lock); spin_unlock_bh(&lq_sta->pers.lock); } static void *rs_drv_alloc_sta(void *mvm_rate, struct ieee80211_sta *sta, Loading Loading @@ -3264,11 +3264,11 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta, /* If it's locked we are in middle of init flow * just wait for next tx status to update the lq_sta data */ if (!spin_trylock(&mvmsta->deflink.lq_sta.rs_drv.pers.lock)) if (!spin_trylock_bh(&mvmsta->deflink.lq_sta.rs_drv.pers.lock)) return; __iwl_mvm_rs_tx_status(mvm, sta, tid, info, ndp); spin_unlock(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); spin_unlock_bh(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); } #ifdef CONFIG_MAC80211_DEBUGFS Loading Loading @@ -4117,9 +4117,9 @@ void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm, } else { struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); spin_lock(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); spin_lock_bh(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); rs_drv_rate_init(mvm, sta, band); spin_unlock(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); spin_unlock_bh(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); } } Loading net/mac80211/cfg.c +8 −1 Original line number Diff line number Diff line Loading @@ -4862,11 +4862,16 @@ static int ieee80211_add_intf_link(struct wiphy *wiphy, unsigned int link_id) { struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); int res; if (wdev->use_4addr) return -EOPNOTSUPP; return ieee80211_vif_set_links(sdata, wdev->valid_links); mutex_lock(&sdata->local->mtx); res = ieee80211_vif_set_links(sdata, wdev->valid_links); mutex_unlock(&sdata->local->mtx); return res; } static void ieee80211_del_intf_link(struct wiphy *wiphy, Loading @@ -4875,7 +4880,9 @@ static void ieee80211_del_intf_link(struct wiphy *wiphy, { struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); mutex_lock(&sdata->local->mtx); ieee80211_vif_set_links(sdata, wdev->valid_links); mutex_unlock(&sdata->local->mtx); } static int sta_add_link_station(struct ieee80211_local *local, Loading net/mac80211/ieee80211_i.h +1 −1 Original line number Diff line number Diff line Loading @@ -2315,7 +2315,7 @@ ieee802_11_parse_elems(const u8 *start, size_t len, bool action, return ieee802_11_parse_elems_crc(start, len, action, 0, 0, bss); } void ieee80211_fragment_element(struct sk_buff *skb, u8 *len_pos); void ieee80211_fragment_element(struct sk_buff *skb, u8 *len_pos, u8 frag_id); extern const int ieee802_1d_to_ac[8]; Loading net/mac80211/link.c +2 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ /* * MLO link handling * * Copyright (C) 2022 Intel Corporation * Copyright (C) 2022-2023 Intel Corporation */ #include <linux/slab.h> #include <linux/kernel.h> Loading Loading @@ -409,6 +409,7 @@ static int _ieee80211_set_active_links(struct ieee80211_sub_if_data *sdata, IEEE80211_CHANCTX_SHARED); WARN_ON_ONCE(ret); ieee80211_mgd_set_link_qos_params(link); ieee80211_link_info_change_notify(sdata, link, BSS_CHANGED_ERP_CTS_PROT | BSS_CHANGED_ERP_PREAMBLE | Loading @@ -423,7 +424,6 @@ static int _ieee80211_set_active_links(struct ieee80211_sub_if_data *sdata, BSS_CHANGED_TWT | BSS_CHANGED_HE_OBSS_PD | BSS_CHANGED_HE_BSS_COLOR); ieee80211_mgd_set_link_qos_params(link); } old_active = sdata->vif.active_links; Loading net/mac80211/mlme.c +3 −2 Original line number Diff line number Diff line Loading @@ -1367,10 +1367,11 @@ static void ieee80211_assoc_add_ml_elem(struct ieee80211_sub_if_data *sdata, ieee80211_add_non_inheritance_elem(skb, outer_present_elems, link_present_elems); ieee80211_fragment_element(skb, subelem_len); ieee80211_fragment_element(skb, subelem_len, IEEE80211_MLE_SUBELEM_FRAGMENT); } ieee80211_fragment_element(skb, ml_elem_len); ieee80211_fragment_element(skb, ml_elem_len, WLAN_EID_FRAGMENT); } static int ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata) Loading Loading
drivers/net/wireless/intel/iwlwifi/mvm/rs.c +6 −6 Original line number Diff line number Diff line Loading @@ -2692,7 +2692,7 @@ static void rs_drv_get_rate(void *mvm_r, struct ieee80211_sta *sta, lq_sta = mvm_sta; spin_lock(&lq_sta->pers.lock); spin_lock_bh(&lq_sta->pers.lock); iwl_mvm_hwrate_to_tx_rate_v1(lq_sta->last_rate_n_flags, info->band, &info->control.rates[0]); info->control.rates[0].count = 1; Loading @@ -2707,7 +2707,7 @@ static void rs_drv_get_rate(void *mvm_r, struct ieee80211_sta *sta, iwl_mvm_hwrate_to_tx_rate_v1(last_ucode_rate, info->band, &txrc->reported_rate); } spin_unlock(&lq_sta->pers.lock); spin_unlock_bh(&lq_sta->pers.lock); } static void *rs_drv_alloc_sta(void *mvm_rate, struct ieee80211_sta *sta, Loading Loading @@ -3264,11 +3264,11 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta, /* If it's locked we are in middle of init flow * just wait for next tx status to update the lq_sta data */ if (!spin_trylock(&mvmsta->deflink.lq_sta.rs_drv.pers.lock)) if (!spin_trylock_bh(&mvmsta->deflink.lq_sta.rs_drv.pers.lock)) return; __iwl_mvm_rs_tx_status(mvm, sta, tid, info, ndp); spin_unlock(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); spin_unlock_bh(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); } #ifdef CONFIG_MAC80211_DEBUGFS Loading Loading @@ -4117,9 +4117,9 @@ void iwl_mvm_rs_rate_init(struct iwl_mvm *mvm, } else { struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); spin_lock(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); spin_lock_bh(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); rs_drv_rate_init(mvm, sta, band); spin_unlock(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); spin_unlock_bh(&mvmsta->deflink.lq_sta.rs_drv.pers.lock); } } Loading
net/mac80211/cfg.c +8 −1 Original line number Diff line number Diff line Loading @@ -4862,11 +4862,16 @@ static int ieee80211_add_intf_link(struct wiphy *wiphy, unsigned int link_id) { struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); int res; if (wdev->use_4addr) return -EOPNOTSUPP; return ieee80211_vif_set_links(sdata, wdev->valid_links); mutex_lock(&sdata->local->mtx); res = ieee80211_vif_set_links(sdata, wdev->valid_links); mutex_unlock(&sdata->local->mtx); return res; } static void ieee80211_del_intf_link(struct wiphy *wiphy, Loading @@ -4875,7 +4880,9 @@ static void ieee80211_del_intf_link(struct wiphy *wiphy, { struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); mutex_lock(&sdata->local->mtx); ieee80211_vif_set_links(sdata, wdev->valid_links); mutex_unlock(&sdata->local->mtx); } static int sta_add_link_station(struct ieee80211_local *local, Loading
net/mac80211/ieee80211_i.h +1 −1 Original line number Diff line number Diff line Loading @@ -2315,7 +2315,7 @@ ieee802_11_parse_elems(const u8 *start, size_t len, bool action, return ieee802_11_parse_elems_crc(start, len, action, 0, 0, bss); } void ieee80211_fragment_element(struct sk_buff *skb, u8 *len_pos); void ieee80211_fragment_element(struct sk_buff *skb, u8 *len_pos, u8 frag_id); extern const int ieee802_1d_to_ac[8]; Loading
net/mac80211/link.c +2 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ /* * MLO link handling * * Copyright (C) 2022 Intel Corporation * Copyright (C) 2022-2023 Intel Corporation */ #include <linux/slab.h> #include <linux/kernel.h> Loading Loading @@ -409,6 +409,7 @@ static int _ieee80211_set_active_links(struct ieee80211_sub_if_data *sdata, IEEE80211_CHANCTX_SHARED); WARN_ON_ONCE(ret); ieee80211_mgd_set_link_qos_params(link); ieee80211_link_info_change_notify(sdata, link, BSS_CHANGED_ERP_CTS_PROT | BSS_CHANGED_ERP_PREAMBLE | Loading @@ -423,7 +424,6 @@ static int _ieee80211_set_active_links(struct ieee80211_sub_if_data *sdata, BSS_CHANGED_TWT | BSS_CHANGED_HE_OBSS_PD | BSS_CHANGED_HE_BSS_COLOR); ieee80211_mgd_set_link_qos_params(link); } old_active = sdata->vif.active_links; Loading
net/mac80211/mlme.c +3 −2 Original line number Diff line number Diff line Loading @@ -1367,10 +1367,11 @@ static void ieee80211_assoc_add_ml_elem(struct ieee80211_sub_if_data *sdata, ieee80211_add_non_inheritance_elem(skb, outer_present_elems, link_present_elems); ieee80211_fragment_element(skb, subelem_len); ieee80211_fragment_element(skb, subelem_len, IEEE80211_MLE_SUBELEM_FRAGMENT); } ieee80211_fragment_element(skb, ml_elem_len); ieee80211_fragment_element(skb, ml_elem_len, WLAN_EID_FRAGMENT); } static int ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata) Loading