linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Berg <johannes@sipsolutions.net>
To: Wen Gong <quic_wgong@quicinc.com>, linux-wireless@vger.kernel.org
Cc: ath11k@lists.infradead.org, ath12k@lists.infradead.org
Subject: Re: [PATCH 24/27] wifi: mac80211: implement link switching
Date: Mon, 27 Mar 2023 10:31:24 +0200	[thread overview]
Message-ID: <50719d34bc48d816d00b56d3d9efdb59e3e51a16.camel@sipsolutions.net> (raw)
In-Reply-To: <ca5177fe-3b9f-2309-9afd-1d5e827540f7@quicinc.com>

Hi,

> > +	list_for_each_entry(sta, &local->sta_list, list) {
> > +		if (sdata != sta->sdata)
> > +			continue;
> > +		ret = drv_change_sta_links(local, sdata, &sta->sta,
> > +					   old_active,
> > +					   old_active | active_links);
> > +		WARN_ON_ONCE(ret);
> > +	}
> > +
> > +	ret = ieee80211_key_switch_links(sdata, rem, add);
> 
> I see ieee80211_key_switch_link() only handler the per-link(link_id >= 
> 0) keys,
> 
> So I think lower driver also install the pairwise keys(link_id = -1) for 
> the added links at this moment?

Well from mac80211 POV they're already installed, so we can't really
install them again. We'd have to remove them but that's racy, obviously.
So I think the low-level driver just has to handle that, e.g. when the
station links are updated (and the key belongs to the station.)

> > +	WARN_ON_ONCE(ret);
> > +
> > +	list_for_each_entry(sta, &local->sta_list, list) {
> > +		if (sdata != sta->sdata)
> > +			continue;
> > +		ret = drv_change_sta_links(local, sdata, &sta->sta,
> > +					   old_active | active_links,
> > +					   active_links);
> > +		WARN_ON_ONCE(ret);
> > +	}
> > +
> 
> I see 2 times to call drv_change_sta_link() above, and with sequence  
> old_active->old_active | active_links->active_links
> 
> May I know is it has some design here?

The problem is that we can't really have no links active even as an
intermediate step, so you can't just deactivate old and then activate
new.

> > +	for_each_set_bit(link_id, &add, IEEE80211_MLD_MAX_NUM_LINKS) {
> > +		struct ieee80211_link_data *link;
> > +
> > +		link = sdata_dereference(sdata->link[link_id], sdata);
> > +
> > +		ret = ieee80211_link_use_channel(link, &link->conf->chandef,
> > +						 IEEE80211_CHANCTX_SHARED);
> 
> For the 1st link of MLO connection/NON-MLO connetion, ieee80211_link_use_channel() is called before drv_change_sta_link(),
> And now it is after drv_change_sta_link(), May I know is it also has some design here?

Hmm, probably not really, at least I don't remember anything about that.

Not sure it makes a huge difference? But I suppose we could change it, I
don't really see why not either.

> Also I see commit(8fb7e2ef4bab mac80211_hwsim: always activate all links) and ieee80211_if_parse_active_links()
> will use ieee80211_set_active_links(), so I think ieee80211_set_active_links() has passed test case with some type lower driver/chip?

Yes, we have this working on iwlwifi/mvm.

johannes

  reply	other threads:[~2023-03-27  8:37 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-02 14:12 [PATCH 00/27] another set of MLO patches Johannes Berg
2022-09-02 14:12 ` [PATCH 01/27] wifi: mac80211_hwsim: remove multicast workaround Johannes Berg
2022-09-02 14:12 ` [PATCH 02/27] wifi: mac80211: remove unused arg to ieee80211_chandef_eht_oper Johannes Berg
2022-09-02 14:12 ` [PATCH 03/27] wifi: mac80211_hwsim: check STA magic in change_sta_links Johannes Berg
2022-09-02 14:12 ` [PATCH 04/27] wifi: mac80211_hwsim: refactor RX a bit Johannes Berg
2022-09-02 14:12 ` [PATCH 05/27] wifi: mac80211: move link code to a new file Johannes Berg
2022-09-02 14:12 ` [PATCH 06/27] wifi: mac80211: mlme: assign link address correctly Johannes Berg
2022-09-02 14:12 ` [PATCH 07/27] wifi: mac80211_hwsim: warn on invalid link address Johannes Berg
2022-09-02 14:12 ` [PATCH 08/27] wifi: mac80211: use correct rx link_sta instead of default Johannes Berg
2022-09-02 14:12 ` [PATCH 09/27] wifi: mac80211: make smps_mode per-link Johannes Berg
2022-09-02 14:12 ` [PATCH 10/27] wifi: mac80211: isolate driver from inactive links Johannes Berg
2022-09-08 15:23   ` Wen Gong
2022-09-08 15:36     ` Johannes Berg
2022-09-08 15:51       ` Wen Gong
2022-09-08 15:52         ` Johannes Berg
2022-09-09  4:16           ` Wen Gong
2022-09-09  7:28             ` Johannes Berg
2022-09-09  8:38               ` Wen Gong
2022-09-09  8:58               ` Wen Gong
2022-09-28 15:20                 ` Wen Gong
2022-09-28 15:28                   ` Johannes Berg
2022-10-11  4:07                     ` Wen Gong
2022-10-11  7:26                       ` Johannes Berg
2023-04-04  2:54                         ` Wen Gong
2023-04-11  7:32                           ` Johannes Berg
2023-04-17 14:07                             ` Wen Gong
2023-04-18  8:15                               ` Johannes Berg
2023-04-18  8:59                                 ` Wen Gong
2023-04-18  9:11                                   ` Johannes Berg
2023-04-18  9:22                                     ` Wen Gong
2023-04-18  9:31                                       ` Johannes Berg
2023-04-18  9:37                                         ` Wen Gong
2023-04-18  9:38                                           ` Johannes Berg
2023-04-18  9:44                                             ` Wen Gong
2023-04-18 10:18                                               ` Johannes Berg
     [not found]                                                 ` <5bd1776e-0691-d0a8-d198-e5b4ee676494@quicinc.com>
2023-04-18 10:47                                                   ` Johannes Berg
2023-04-04  3:28       ` Wen Gong
2023-04-11  7:38         ` Johannes Berg
2023-04-17 14:13           ` Wen Gong
2023-04-18  8:18             ` Johannes Berg
2023-04-18  9:27               ` Wen Gong
2023-04-18  9:34                 ` Johannes Berg
2023-04-18  9:52                   ` Wen Gong
2023-05-24  7:39                   ` Wen Gong
2023-05-24  7:41                   ` Wen Gong
2023-06-14 18:32                     ` Johannes Berg
2023-06-15  2:26                       ` Wen Gong
2023-06-15  7:56                         ` Johannes Berg
2023-06-21  7:55                           ` Wen Gong
2023-06-27 11:02                             ` Wen Gong
2023-06-30  9:32                           ` Wen Gong
2023-05-10 11:06           ` Wen Gong
2023-05-10 11:24             ` Johannes Berg
2023-05-10 12:25               ` Wen Gong
2023-05-10 12:25                 ` Johannes Berg
2022-09-02 14:12 ` [PATCH 11/27] wifi: mac80211: add ieee80211_find_sta_by_link_addrs API Johannes Berg
2022-09-02 14:12 ` [PATCH 12/27] wifi: mac80211_hwsim: skip inactive links on TX Johannes Berg
2022-09-02 14:12 ` [PATCH 13/27] wifi: mac80211_hwsim: track active STA links Johannes Berg
2022-09-02 14:12 ` [PATCH 14/27] wifi: mac80211: mlme: refactor QoS settings code Johannes Berg
2022-09-02 14:12 ` [PATCH 15/27] wifi: mac80211: extend ieee80211_nullfunc_get() for MLO Johannes Berg
2022-09-02 14:12 ` [PATCH 16/27] wifi: mac80211_hwsim: send NDP for link (de)activation Johannes Berg
2022-09-02 14:12 ` [PATCH 17/27] wifi: mac80211_hwsim: fix multi-channel handling in netlink RX Johannes Berg
2022-09-02 14:12 ` [PATCH 18/27] wifi: nl80211: add MLD address to assoc BSS entries Johannes Berg
2022-09-02 14:12 ` [PATCH 19/27] wifi: mac80211: call drv_sta_state() under sdata_lock() in reconfig Johannes Berg
2022-09-02 14:12 ` [PATCH 20/27] wifi: mac80211: add vif/sta link RCU dereference macros Johannes Berg
2022-09-02 14:12 ` [PATCH 21/27] wifi: mac80211: set up beacon timing config on links Johannes Berg
2022-09-02 14:12 ` [PATCH 22/27] wifi: mac80211: keep A-MSDU data in sta and per-link Johannes Berg
2022-09-02 14:12 ` [PATCH 23/27] wifi: mac80211: fix double SW scan stop Johannes Berg
2022-09-02 14:12 ` [PATCH 24/27] wifi: mac80211: implement link switching Johannes Berg
2023-03-25 14:33   ` Wen Gong
2023-03-27  8:31     ` Johannes Berg [this message]
2023-03-27  8:40       ` Wen Gong
2023-03-27  9:04         ` Johannes Berg
2023-03-27  9:10           ` Wen Gong
2023-03-28  7:37       ` Wen Gong
2023-03-28  7:39         ` Johannes Berg
2023-04-03 14:15           ` Wen Gong
2023-04-11 10:16             ` Johannes Berg
2023-04-03 14:21       ` Wen Gong
2023-04-11 10:18         ` Johannes Berg
2022-09-02 14:12 ` [PATCH 25/27] wifi: mac80211_hwsim: always activate all links Johannes Berg
2022-09-02 14:12 ` [PATCH 26/27] wifi: mac80211: prevent 4-addr use on MLDs Johannes Berg
2022-09-02 14:12 ` [PATCH 27/27] wifi: mac80211: prevent VLANs " Johannes Berg
2022-09-06  7:18 ` [PATCH 00/27] another set of MLO patches Wen Gong
2022-09-06  7:28   ` Johannes Berg
2022-09-06  7:58     ` Wen Gong
2022-09-06  8:03       ` Johannes Berg
2022-09-06  8:42         ` Wen Gong
2022-09-12 13:17           ` Otcheretianski, Andrei
2022-09-13  4:26             ` Wen Gong
2022-09-28 15:12             ` Wen Gong
2022-10-11  2:28               ` Wen Gong
2022-10-19 10:04                 ` wifi: hostapd:/wpa_supplicant MLO " Wen Gong
2022-10-19 13:31                   ` Otcheretianski, Andrei
2022-11-28  8:45                   ` Wen Gong
2022-11-28 14:05                     ` Otcheretianski, Andrei
2022-11-29  2:06                       ` Wen Gong
2022-11-29  6:59                         ` Otcheretianski, Andrei
2022-11-29  7:04                           ` Wen Gong
2022-09-07  3:34         ` Wen Gong

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=50719d34bc48d816d00b56d3d9efdb59e3e51a16.camel@sipsolutions.net \
    --to=johannes@sipsolutions.net \
    --cc=ath11k@lists.infradead.org \
    --cc=ath12k@lists.infradead.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=quic_wgong@quicinc.com \
    /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).