Commit 40a27ea0 authored by Johannes Berg's avatar Johannes Berg

wifi: mac80211: make ieee80211_he_cap_ie_to_sta_he_cap() MLO-aware

Add the link_id parameter and adjust the code accordingly.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent e9aac179
...@@ -1770,7 +1770,7 @@ static int sta_apply_parameters(struct ieee80211_local *local, ...@@ -1770,7 +1770,7 @@ static int sta_apply_parameters(struct ieee80211_local *local,
(void *)params->he_capa, (void *)params->he_capa,
params->he_capa_len, params->he_capa_len,
(void *)params->he_6ghz_capa, (void *)params->he_6ghz_capa,
sta); sta, 0);
if (params->eht_capa) if (params->eht_capa)
ieee80211_eht_cap_ie_to_sta_eht_cap(sdata, sband, ieee80211_eht_cap_ie_to_sta_eht_cap(sdata, sband,
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
static void static void
ieee80211_update_from_he_6ghz_capa(const struct ieee80211_he_6ghz_capa *he_6ghz_capa, ieee80211_update_from_he_6ghz_capa(const struct ieee80211_he_6ghz_capa *he_6ghz_capa,
struct sta_info *sta) struct sta_info *sta, unsigned int link_id)
{ {
enum ieee80211_smps_mode smps_mode; enum ieee80211_smps_mode smps_mode;
...@@ -49,7 +49,7 @@ ieee80211_update_from_he_6ghz_capa(const struct ieee80211_he_6ghz_capa *he_6ghz_ ...@@ -49,7 +49,7 @@ ieee80211_update_from_he_6ghz_capa(const struct ieee80211_he_6ghz_capa *he_6ghz_
break; break;
} }
sta->sta.deflink.he_6ghz_capa = *he_6ghz_capa; sta->sta.link[link_id]->he_6ghz_capa = *he_6ghz_capa;
} }
static void ieee80211_he_mcs_disable(__le16 *he_mcs) static void ieee80211_he_mcs_disable(__le16 *he_mcs)
...@@ -108,9 +108,9 @@ ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata, ...@@ -108,9 +108,9 @@ ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata,
struct ieee80211_supported_band *sband, struct ieee80211_supported_band *sband,
const u8 *he_cap_ie, u8 he_cap_len, const u8 *he_cap_ie, u8 he_cap_len,
const struct ieee80211_he_6ghz_capa *he_6ghz_capa, const struct ieee80211_he_6ghz_capa *he_6ghz_capa,
struct sta_info *sta) struct sta_info *sta, unsigned int link_id)
{ {
struct ieee80211_sta_he_cap *he_cap = &sta->sta.deflink.he_cap; struct ieee80211_sta_he_cap *he_cap = &sta->sta.link[link_id]->he_cap;
struct ieee80211_sta_he_cap own_he_cap; struct ieee80211_sta_he_cap own_he_cap;
struct ieee80211_he_cap_elem *he_cap_ie_elem = (void *)he_cap_ie; struct ieee80211_he_cap_elem *he_cap_ie_elem = (void *)he_cap_ie;
u8 he_ppe_size; u8 he_ppe_size;
...@@ -153,11 +153,13 @@ ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata, ...@@ -153,11 +153,13 @@ ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata,
he_cap->has_he = true; he_cap->has_he = true;
sta->deflink.cur_max_bandwidth = ieee80211_sta_cap_rx_bw(sta, 0); sta->link[link_id]->cur_max_bandwidth =
sta->sta.deflink.bandwidth = ieee80211_sta_cur_vht_bw(sta, 0); ieee80211_sta_cap_rx_bw(sta, link_id);
sta->sta.link[link_id]->bandwidth =
ieee80211_sta_cur_vht_bw(sta, link_id);
if (sband->band == NL80211_BAND_6GHZ && he_6ghz_capa) if (sband->band == NL80211_BAND_6GHZ && he_6ghz_capa)
ieee80211_update_from_he_6ghz_capa(he_6ghz_capa, sta); ieee80211_update_from_he_6ghz_capa(he_6ghz_capa, sta, link_id);
ieee80211_he_mcs_intersection(&own_he_cap.he_mcs_nss_supp.rx_mcs_80, ieee80211_he_mcs_intersection(&own_he_cap.he_mcs_nss_supp.rx_mcs_80,
&he_cap->he_mcs_nss_supp.rx_mcs_80, &he_cap->he_mcs_nss_supp.rx_mcs_80,
......
...@@ -2153,7 +2153,7 @@ ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata, ...@@ -2153,7 +2153,7 @@ ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata,
struct ieee80211_supported_band *sband, struct ieee80211_supported_band *sband,
const u8 *he_cap_ie, u8 he_cap_len, const u8 *he_cap_ie, u8 he_cap_len,
const struct ieee80211_he_6ghz_capa *he_6ghz_capa, const struct ieee80211_he_6ghz_capa *he_6ghz_capa,
struct sta_info *sta); struct sta_info *sta, unsigned int link_id);
void void
ieee80211_he_spr_ie_to_bss_conf(struct ieee80211_vif *vif, ieee80211_he_spr_ie_to_bss_conf(struct ieee80211_vif *vif,
const struct ieee80211_he_spr *he_spr_ie_elem); const struct ieee80211_he_spr *he_spr_ie_elem);
......
...@@ -447,7 +447,7 @@ static void mesh_sta_info_init(struct ieee80211_sub_if_data *sdata, ...@@ -447,7 +447,7 @@ static void mesh_sta_info_init(struct ieee80211_sub_if_data *sdata,
ieee80211_he_cap_ie_to_sta_he_cap(sdata, sband, elems->he_cap, ieee80211_he_cap_ie_to_sta_he_cap(sdata, sband, elems->he_cap,
elems->he_cap_len, elems->he_cap_len,
elems->he_6ghz_capa, elems->he_6ghz_capa,
sta); sta, 0);
if (bw != sta->sta.deflink.bandwidth) if (bw != sta->sta.deflink.bandwidth)
changed |= IEEE80211_RC_BW_CHANGED; changed |= IEEE80211_RC_BW_CHANGED;
......
...@@ -3579,7 +3579,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata, ...@@ -3579,7 +3579,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
elems->he_cap, elems->he_cap,
elems->he_cap_len, elems->he_cap_len,
elems->he_6ghz_capa, elems->he_6ghz_capa,
sta); sta, 0);
bss_conf->he_support = sta->sta.deflink.he_cap.has_he; bss_conf->he_support = sta->sta.deflink.he_cap.has_he;
if (elems->rsnx && elems->rsnx_len && if (elems->rsnx && elems->rsnx_len &&
......
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