Commit 164a52d4 authored by Johannes Berg's avatar Johannes Berg

wifi: iwlwifi: mvm: send full STA during HW restart

By using the internal station add the station is installed in
firmware with zeroed MAC addresses, which is wrong. Use the
full installation function instead, to fill all data.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230329100040.62d5371bb3c7.Ie25b62125a3a022f76a36bae5fed9796c18698aa@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 9deccfcd
...@@ -572,10 +572,9 @@ static int iwl_mvm_alloc_sta_after_restart(struct iwl_mvm *mvm, ...@@ -572,10 +572,9 @@ static int iwl_mvm_alloc_sta_after_restart(struct iwl_mvm *mvm,
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
struct ieee80211_link_sta *link_sta; struct ieee80211_link_sta *link_sta;
unsigned int link_id; unsigned int link_id;
struct iwl_mvm_int_sta tmp_sta = { /* no active link found */
.type = mvm_sta->sta_type, int ret = -EINVAL;
}; int sta_id;
int sta_id, ret;
/* First add an empty station since allocating a queue requires /* First add an empty station since allocating a queue requires
* a valid station. Since we need a link_id to allocate a station, * a valid station. Since we need a link_id to allocate a station,
...@@ -598,23 +597,19 @@ static int iwl_mvm_alloc_sta_after_restart(struct iwl_mvm *mvm, ...@@ -598,23 +597,19 @@ static int iwl_mvm_alloc_sta_after_restart(struct iwl_mvm *mvm,
continue; continue;
sta_id = mvm_link_sta->sta_id; sta_id = mvm_link_sta->sta_id;
tmp_sta.sta_id = sta_id; ret = iwl_mvm_mld_cfg_sta(mvm, sta, vif, link_sta,
ret = iwl_mvm_mld_add_int_sta_to_fw(mvm, &tmp_sta, link_conf, mvm_link_sta);
vif->bss_conf.bssid,
mvm_link->fw_link_id);
if (ret) if (ret)
return ret; return ret;
rcu_assign_pointer(mvm->fw_id_to_mac_id[sta_id], sta); rcu_assign_pointer(mvm->fw_id_to_mac_id[sta_id], sta);
rcu_assign_pointer(mvm->fw_id_to_link_sta[sta_id], link_sta); rcu_assign_pointer(mvm->fw_id_to_link_sta[sta_id], link_sta);
iwl_mvm_realloc_queues_after_restart(mvm, sta); ret = 0;
/* since we need only one station, no need to continue */
return 0;
} }
/* no active link found */ iwl_mvm_realloc_queues_after_restart(mvm, sta);
return -EINVAL;
return ret;
} }
int iwl_mvm_mld_add_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif, int iwl_mvm_mld_add_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment