linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Berg <johannes@sipsolutions.net>
To: linux-wireless@vger.kernel.org
Cc: Johannes Berg <johannes.berg@intel.com>
Subject: [PATCH 14/28] wifi: mac80211: use link_id in ieee80211_change_bss()
Date: Wed,  5 Oct 2022 15:00:34 +0200	[thread overview]
Message-ID: <20221005145226.590dadcad812.I61f4492fce85a5c7717facefeddb20e8528d320c@changeid> (raw)
In-Reply-To: <20221005130048.217341-1-johannes@sipsolutions.net>

From: Johannes Berg <johannes.berg@intel.com>

We should set the parameters here per link, except
unfortunately ap_isolate, but we can't really change
that anymore so it'll remain a quirk in the API in
that you need to change it on one of the valid links
and it'll apply to all.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 net/mac80211/cfg.c | 40 +++++++++++++++++++++-------------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 687b4c878d4a..ef5700eac05c 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2554,47 +2554,50 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
 				struct bss_parameters *params)
 {
 	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+	struct ieee80211_link_data *link;
 	struct ieee80211_supported_band *sband;
 	u32 changed = 0;
 
-	if (!sdata_dereference(sdata->deflink.u.ap.beacon, sdata))
+	link = ieee80211_link_or_deflink(sdata, params->link_id, true);
+	if (IS_ERR(link))
+		return PTR_ERR(link);
+
+	if (!sdata_dereference(link->u.ap.beacon, sdata))
 		return -ENOENT;
 
-	sband = ieee80211_get_sband(sdata);
+	sband = ieee80211_get_link_sband(link);
 	if (!sband)
 		return -EINVAL;
 
 	if (params->use_cts_prot >= 0) {
-		sdata->vif.bss_conf.use_cts_prot = params->use_cts_prot;
+		link->conf->use_cts_prot = params->use_cts_prot;
 		changed |= BSS_CHANGED_ERP_CTS_PROT;
 	}
 	if (params->use_short_preamble >= 0) {
-		sdata->vif.bss_conf.use_short_preamble =
-			params->use_short_preamble;
+		link->conf->use_short_preamble = params->use_short_preamble;
 		changed |= BSS_CHANGED_ERP_PREAMBLE;
 	}
 
-	if (!sdata->vif.bss_conf.use_short_slot &&
+	if (!link->conf->use_short_slot &&
 	    (sband->band == NL80211_BAND_5GHZ ||
 	     sband->band == NL80211_BAND_6GHZ)) {
-		sdata->vif.bss_conf.use_short_slot = true;
+		link->conf->use_short_slot = true;
 		changed |= BSS_CHANGED_ERP_SLOT;
 	}
 
 	if (params->use_short_slot_time >= 0) {
-		sdata->vif.bss_conf.use_short_slot =
-			params->use_short_slot_time;
+		link->conf->use_short_slot = params->use_short_slot_time;
 		changed |= BSS_CHANGED_ERP_SLOT;
 	}
 
 	if (params->basic_rates) {
-		ieee80211_parse_bitrates(sdata->vif.bss_conf.chandef.width,
+		ieee80211_parse_bitrates(link->conf->chandef.width,
 					 wiphy->bands[sband->band],
 					 params->basic_rates,
 					 params->basic_rates_len,
-					 &sdata->vif.bss_conf.basic_rates);
+					 &link->conf->basic_rates);
 		changed |= BSS_CHANGED_BASIC_RATES;
-		ieee80211_check_rate_mask(&sdata->deflink);
+		ieee80211_check_rate_mask(link);
 	}
 
 	if (params->ap_isolate >= 0) {
@@ -2606,30 +2609,29 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
 	}
 
 	if (params->ht_opmode >= 0) {
-		sdata->vif.bss_conf.ht_operation_mode =
-			(u16) params->ht_opmode;
+		link->conf->ht_operation_mode = (u16)params->ht_opmode;
 		changed |= BSS_CHANGED_HT;
 	}
 
 	if (params->p2p_ctwindow >= 0) {
-		sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow &=
+		link->conf->p2p_noa_attr.oppps_ctwindow &=
 					~IEEE80211_P2P_OPPPS_CTWINDOW_MASK;
-		sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow |=
+		link->conf->p2p_noa_attr.oppps_ctwindow |=
 			params->p2p_ctwindow & IEEE80211_P2P_OPPPS_CTWINDOW_MASK;
 		changed |= BSS_CHANGED_P2P_PS;
 	}
 
 	if (params->p2p_opp_ps > 0) {
-		sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow |=
+		link->conf->p2p_noa_attr.oppps_ctwindow |=
 					IEEE80211_P2P_OPPPS_ENABLE_BIT;
 		changed |= BSS_CHANGED_P2P_PS;
 	} else if (params->p2p_opp_ps == 0) {
-		sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow &=
+		link->conf->p2p_noa_attr.oppps_ctwindow &=
 					~IEEE80211_P2P_OPPPS_ENABLE_BIT;
 		changed |= BSS_CHANGED_P2P_PS;
 	}
 
-	ieee80211_link_info_change_notify(sdata, &sdata->deflink, changed);
+	ieee80211_link_info_change_notify(sdata, link, changed);
 
 	return 0;
 }
-- 
2.37.3


  parent reply	other threads:[~2022-10-05 13:01 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-05 13:00 [PATCH 00/28] wifi: further MLO work Johannes Berg
2022-10-05 13:00 ` [PATCH 01/28] wifi: mac80211: add pointer from link STA to STA Johannes Berg
2022-10-05 13:00 ` [PATCH 02/28] wifi: mac80211: add API to show the link STAs in debugfs Johannes Berg
2022-10-05 13:00 ` [PATCH 03/28] wifi: mac80211: include link address " Johannes Berg
2022-10-05 13:00 ` [PATCH 04/28] wifi: mac80211: recalc station aggregate data during link switch Johannes Berg
2022-10-05 13:00 ` [PATCH 05/28] wifi: cfg80211: support reporting failed links Johannes Berg
2022-10-06 10:49   ` Veerendranath Jakkam
2022-10-06 10:51     ` Johannes Berg
2022-10-06 11:09       ` Veerendranath Jakkam
2022-10-06 11:11         ` Johannes Berg
2022-10-06 14:40           ` Veerendranath Jakkam
2022-10-05 13:00 ` [PATCH 06/28] wifi: ieee80211: Support validating ML station profile length Johannes Berg
2022-10-05 13:00 ` [PATCH 07/28] wifi: cfg80211/mac80211: Fix ML element common size calculation Johannes Berg
2022-10-05 13:00 ` [PATCH 08/28] wifi: cfg80211/mac80211: Fix ML element common size validation Johannes Berg
2022-10-05 13:00 ` [PATCH 09/28] wifi: mac80211: Parse station profile from association response Johannes Berg
2022-10-05 13:00 ` [PATCH 10/28] wifi: mac80211: Process association status for affiliated links Johannes Berg
2022-10-05 13:00 ` [PATCH 11/28] wifi: mac80211: wme: use ap_addr instead of deflink BSSID Johannes Berg
2022-10-05 13:00 ` [PATCH 12/28] wifi: mac80211: transmit AddBA with MLD address Johannes Berg
2022-10-05 13:00 ` [PATCH 13/28] wifi: nl80211: use link ID in NL80211_CMD_SET_BSS Johannes Berg
2022-10-05 13:00 ` Johannes Berg [this message]
2022-10-05 13:00 ` [PATCH 15/28] wifi: mac80211: advertise TWT requester only with HW support Johannes Berg
2022-10-05 13:00 ` [PATCH 16/28] wifi: mac80211: set internal scan request BSSID Johannes Berg
2022-10-05 13:00 ` [PATCH 17/28] wifi: mac80211: fix AddBA response addressing Johannes Berg
2022-10-05 13:00 ` [PATCH 18/28] wifi: mac80211: add RCU _check() link access variants Johannes Berg
2022-10-05 13:00 ` [PATCH 19/28] wifi: fix multi-link element subelement iteration Johannes Berg
2022-10-05 13:00 ` [PATCH 20/28] wifi: mac80211: mlme: fix null-ptr deref on failed assoc Johannes Berg
2022-10-05 13:00 ` [PATCH 21/28] wifi: mac80211: check link ID in auth/assoc continuation Johannes Berg
2022-10-05 13:00 ` [PATCH 22/28] wifi: mac80211: mlme: mark assoc link in output Johannes Berg
2022-10-05 13:00 ` [PATCH 23/28] wifi: mac80211: change AddBA deny error message Johannes Berg
2022-10-05 13:00 ` [PATCH 24/28] wifi: mac80211: don't clear DTIM period after setting it Johannes Berg
2022-10-05 13:00 ` [PATCH 25/28] wifi: mac80211: prohibit IEEE80211_HT_CAP_DELAY_BA with MLO Johannes Berg
2022-10-05 13:00 ` [PATCH 26/28] wifi: mac80211: agg-rx: avoid band check Johannes Berg
2022-10-05 13:00 ` [PATCH 27/28] wifi: mac80211: remove support for AddBA with fragmentation Johannes Berg
2022-10-05 13:00 ` [PATCH 28/28] wifi: mac80211: fix ifdef symbol name Johannes Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221005145226.590dadcad812.I61f4492fce85a5c7717facefeddb20e8528d320c@changeid \
    --to=johannes@sipsolutions.net \
    --cc=johannes.berg@intel.com \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).