Commit 9696b80b authored by Ilan Peer's avatar Ilan Peer Committed by Johannes Berg
Browse files

wifi: mac80211: Refactor ieee80211_sta_wmm_params()



The function first updates the link configuration and then
calls the driver to set the link parameters. Since the call
to the driver might sleep, split the function such that
the link configuration could be done without calling the
driver. This would be useful in cases that WMM parameters
need to be configured, but the current locking doesn't allow
to call the driver.

Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250205110958.b1cedcf93763.I65783c102d44127035838f97fab64ec4df5c40f3@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 31320ccb
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -3375,7 +3375,7 @@ void ieee80211_mgd_set_link_qos_params(struct ieee80211_link_data *link)

/* MLME */
static bool
ieee80211_sta_wmm_params(struct ieee80211_local *local,
_ieee80211_sta_wmm_params(struct ieee80211_local *local,
			  struct ieee80211_link_data *link,
			  const u8 *wmm_param, size_t wmm_param_len,
			  const struct ieee80211_mu_edca_param_set *mu_edca)
@@ -3507,6 +3507,19 @@ ieee80211_sta_wmm_params(struct ieee80211_local *local,
	for (ac = 0; ac < IEEE80211_NUM_ACS; ac++)
		link->tx_conf[ac] = params[ac];

	return true;
}

static bool
ieee80211_sta_wmm_params(struct ieee80211_local *local,
			 struct ieee80211_link_data *link,
			 const u8 *wmm_param, size_t wmm_param_len,
			 const struct ieee80211_mu_edca_param_set *mu_edca)
{
	if (!_ieee80211_sta_wmm_params(local, link, wmm_param, wmm_param_len,
				       mu_edca))
		return false;

	ieee80211_mgd_set_link_qos_params(link);

	/* enable WMM or activate new settings */