Linux wireless drivers development
 help / color / mirror / Atom feed
From: Wen Gong <quic_wgong@quicinc.com>
To: Johannes Berg <johannes@sipsolutions.net>,
	<linux-wireless@vger.kernel.org>
Cc: Johannes Berg <johannes.berg@intel.com>, <ath11k@lists.infradead.org>
Subject: Re: [PATCH 10/27] wifi: mac80211: isolate driver from inactive links
Date: Thu, 8 Sep 2022 23:23:56 +0800	[thread overview]
Message-ID: <5d82e564-86bf-c26b-077a-d0bc14e2d3c3@quicinc.com> (raw)
In-Reply-To: <20220902161143.5ce3dad3be7c.I92e9f7a6c120cd4a3631baf486ad8b6aafcd796f@changeid>

On 9/2/2022 10:12 PM, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> In order to let the driver select active links and properly
> make multi-link connections, as a first step isolate the
> driver from inactive links, and set the active links to be
> only the association link for client-side interfaces. For
> AP side nothing changes since APs always have to have all
> their links active.
>
> To simplify things, update the for_each_sta_active_link()
> API to include the appropriate vif pointer.
>
> This also implies not allocating a chanctx for an inactive
> link, which requires a few more changes.
>
> Since we now no longer try to program multiple links to the
> driver, remove the check in the MLME code.
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---
>   include/net/mac80211.h    |  30 +++----
>   net/mac80211/chan.c       |   6 ++
>   net/mac80211/driver-ops.c | 172 ++++++++++++++++++++++++++++++++++++++
>   net/mac80211/driver-ops.h | 165 ++++++------------------------------
>   net/mac80211/key.c        |   8 ++
>   net/mac80211/link.c       |  66 ++++++++++++---
>   net/mac80211/mlme.c       |  25 ++----
>   net/mac80211/util.c       |   2 +-
>   8 files changed, 286 insertions(+), 188 deletions(-)
>
> diff --git a/include/net/mac80211.h b/include/net/mac80211.h
> index d4e1d73d88cc..20a2f25a38fa 100644
> --- a/include/net/mac80211.h
> +++ b/include/net/mac80211.h
> @@ -1799,6 +1799,9 @@ struct ieee80211_vif_cfg {
>    * @link_conf: in case of MLD, the per-link BSS configuration,
>    *	indexed by link ID
>    * @valid_links: bitmap of valid links, or 0 for non-MLO.
> + * @active_links: The bitmap of active links, or 0 for non-MLO.
> + *	The driver shouldn't change this directly, but use the
> + *	API calls meant for that purpose.
>    * @addr: address of this interface
>    * @p2p: indicates whether this AP or STA interface is a p2p
>    *	interface, i.e. a GO or p2p-sta respectively
> @@ -1834,7 +1837,7 @@ struct ieee80211_vif {
>   	struct ieee80211_vif_cfg cfg;
>   	struct ieee80211_bss_conf bss_conf;
>   	struct ieee80211_bss_conf __rcu *link_conf[IEEE80211_MLD_MAX_NUM_LINKS];
> -	u16 valid_links;
> +	u16 valid_links, active_links;
>   	u8 addr[ETH_ALEN] __aligned(2);
>   	bool p2p;
>   
...
> @@ -123,11 +132,38 @@ static int ieee80211_check_dup_link_addrs(struct ieee80211_sub_if_data *sdata)
>   	return 0;
>   }
>   
> +static void ieee80211_set_vif_links_bitmaps(struct ieee80211_sub_if_data *sdata,
> +					    u16 links)
> +{
> +	sdata->vif.valid_links = links;
> +
> +	if (!links) {
> +		sdata->vif.active_links = 0;
> +		return;
> +	}
> +
> +	switch (sdata->vif.type) {
> +	case NL80211_IFTYPE_AP:
> +		/* in an AP all links are always active */
> +		sdata->vif.active_links = links;
> +		break;
> +	case NL80211_IFTYPE_STATION:
> +		if (sdata->vif.active_links)
> +			break;
> +		WARN_ON(hweight16(links) > 1);
> +		sdata->vif.active_links = links;
> +		break;
> +	default:
> +		WARN_ON(1);
> +	}
> +}
> +
Now I found it only active the primay link(the link for 
authentication/assoc request) in my station MLO test,
change_vif_links of struct ieee80211_ops *ops of driver will only be 
called one time for the primary link.
it means only one link for MLO.
I plan to revert this patch in my local test now.

Will you implement muti-links later?
> ...

  reply	other threads:[~2022-09-08 15:24 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 [this message]
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
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=5d82e564-86bf-c26b-077a-d0bc14e2d3c3@quicinc.com \
    --to=quic_wgong@quicinc.com \
    --cc=ath11k@lists.infradead.org \
    --cc=johannes.berg@intel.com \
    --cc=johannes@sipsolutions.net \
    --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