Commit afe0d181 authored by Johannes Berg's avatar Johannes Berg
Browse files

wifi: mac80211: add link_id to vht.c code for MLO



Update the code in vht.c and add the link_id parameter where
necessary.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 4b41b2ef
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1776,7 +1776,7 @@ static void iwl_mvm_mu_mimo_iface_iterator(void *_data, u8 *mac,
		 * the data received from firmware as if it came from the
		 * action frame, so no conversion is needed.
		 */
		ieee80211_update_mu_groups(vif,
		ieee80211_update_mu_groups(vif, 0,
					   (u8 *)&notif->membership_status,
					   (u8 *)&notif->user_position);
	}
+2 −1
Original line number Diff line number Diff line
@@ -6548,6 +6548,7 @@ ieee80211_vif_type_p2p(struct ieee80211_vif *vif)
 * ieee80211_update_mu_groups - set the VHT MU-MIMO groud data
 *
 * @vif: the specified virtual interface
 * @link_id: the link ID for MLO, otherwise 0
 * @membership: 64 bits array - a bit is set if station is member of the group
 * @position: 2 bits per group id indicating the position in the group
 *
@@ -6556,7 +6557,7 @@ ieee80211_vif_type_p2p(struct ieee80211_vif *vif)
 * matching GroupId management frame.
 * Calls to this function need to be serialized with RX path.
 */
void ieee80211_update_mu_groups(struct ieee80211_vif *vif,
void ieee80211_update_mu_groups(struct ieee80211_vif *vif, unsigned int link_id,
				const u8 *membership, const u8 *position);

void ieee80211_enable_rssi_reports(struct ieee80211_vif *vif,
+3 −2
Original line number Diff line number Diff line
@@ -1763,7 +1763,7 @@ static int sta_apply_parameters(struct ieee80211_local *local,
	/* VHT can override some HT caps such as the A-MSDU max length */
	if (params->vht_capa)
		ieee80211_vht_cap_ie_to_sta_vht_cap(sdata, sband,
						    params->vht_capa, sta);
						    params->vht_capa, sta, 0);

	if (params->he_capa)
		ieee80211_he_cap_ie_to_sta_he_cap(sdata, sband,
@@ -1784,7 +1784,8 @@ static int sta_apply_parameters(struct ieee80211_local *local,
		/* returned value is only needed for rc update, but the
		 * rc isn't initialized here yet, so ignore it
		 */
		__ieee80211_vht_handle_opmode(sdata, sta, params->opmode_notif,
		__ieee80211_vht_handle_opmode(sdata, sta, 0,
					      params->opmode_notif,
					      sband->band);
	}

+1 −1
Original line number Diff line number Diff line
@@ -1068,7 +1068,7 @@ static void ieee80211_update_sta_info(struct ieee80211_sub_if_data *sdata,
						   &chandef);
			memcpy(&cap_ie, elems->vht_cap_elem, sizeof(cap_ie));
			ieee80211_vht_cap_ie_to_sta_vht_cap(sdata, sband,
							    &cap_ie, sta);
							    &cap_ie, sta, 0);
			if (memcmp(&cap, &sta->sta.deflink.vht_cap, sizeof(cap)))
				rates_updated |= true;
		}
+10 −8
Original line number Diff line number Diff line
@@ -2121,29 +2121,31 @@ void
ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,
				    struct ieee80211_supported_band *sband,
				    const struct ieee80211_vht_cap *vht_cap_ie,
				    struct sta_info *sta);
				    struct sta_info *sta, unsigned int link_id);
enum ieee80211_sta_rx_bandwidth ieee80211_sta_cap_rx_bw(struct sta_info *sta,
							unsigned int link_id);
enum ieee80211_sta_rx_bandwidth ieee80211_sta_cur_vht_bw(struct sta_info *sta,
							 unsigned int link_id);
void ieee80211_sta_set_rx_nss(struct sta_info *sta);
void ieee80211_sta_set_rx_nss(struct sta_info *sta, unsigned int link_id);
enum ieee80211_sta_rx_bandwidth
ieee80211_chan_width_to_rx_bw(enum nl80211_chan_width width);
enum nl80211_chan_width ieee80211_sta_cap_chan_bw(struct sta_info *sta);
enum nl80211_chan_width ieee80211_sta_cap_chan_bw(struct sta_info *sta,
						  unsigned int link_id);
void ieee80211_process_mu_groups(struct ieee80211_sub_if_data *sdata,
				 unsigned int link_id,
				 struct ieee80211_mgmt *mgmt);
u32 __ieee80211_vht_handle_opmode(struct ieee80211_sub_if_data *sdata,
                                  struct sta_info *sta, u8 opmode,
				  enum nl80211_band band);
				  struct sta_info *sta, unsigned int link_id,
				  u8 opmode, enum nl80211_band band);
void ieee80211_vht_handle_opmode(struct ieee80211_sub_if_data *sdata,
				 struct sta_info *sta, u8 opmode,
				 enum nl80211_band band);
				 struct sta_info *sta, unsigned int link_id,
				 u8 opmode, enum nl80211_band band);
void ieee80211_apply_vhtcap_overrides(struct ieee80211_sub_if_data *sdata,
				      struct ieee80211_sta_vht_cap *vht_cap);
void ieee80211_get_vht_mask_from_cap(__le16 vht_cap,
				     u16 vht_mask[NL80211_VHT_NSS_MAX]);
enum nl80211_chan_width
ieee80211_sta_rx_bw_to_chan_width(struct sta_info *sta);
ieee80211_sta_rx_bw_to_chan_width(struct sta_info *sta, unsigned int link_id);

/* HE */
void
Loading