From patchwork Thu Mar 6 10:43:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871136 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 376C82045A1 for ; Thu, 6 Mar 2025 10:43:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257822; cv=none; b=aiSHwu+HDoFPadu+f91Xl13shFzNzQ3hFGv90iqCk2Jk2V8k2+sbLafzUTG0GKkmZJt+TLCCZOKMlilr5BQ+MW7Znb3CcihlrMQN+VDlrymQo2sQqcAYtanPfMWYoJ1ZVCUqYDAxjxQ9LTzTgQjJbg7rOOULSvZnnPdC5zogH38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257822; c=relaxed/simple; bh=jGTy91gK9JsTeafUyT/9UlFPcjJsfYuybb131InUjxc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MQ3FLYBCcrtT+Hh7KFlPbqW8kBjxuB0eLL1hm0lkqXlENmKt4gkzwERjyv9CLkLzguKqDRSM6fKBZuCxd/rXIbOkcLhS854FkUl07zQKK/gyvGHD8AambSdo9iaHMjM/QOqgEuUk8sgpuaHhUJvSFyfioYyeQWzBgvCerPH4bdo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=dZinjKwP; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="dZinjKwP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257821; x=1772793821; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jGTy91gK9JsTeafUyT/9UlFPcjJsfYuybb131InUjxc=; b=dZinjKwPDSutIDfM7+LesvfEkfkzQyhkTjh6MNPGe6WW5uIRQT5IA6fl VxptNhtniK44QqN0lycTJqjaP+ek9D0csoEbrc8nzQdw3Ge7a9eVAXvSZ Z8P4TiWm4OyQ+zqvRuohWAkmbuJd04WSQx/kZyYXXQo3HzdQNG07XSp+Z QHBoyZYsDljTclc3pHOPe5uygvNuuA8+iuaeALsDoVik79UE/qCjXBSM3 w4PmcmJRYl7eP+GzJNgsqvP1VVYDREfshpQapqKjZrX7ii3sRpCS0L+fb mQtfIHEvwjuBZW8DusuRKZwpwY0XbBmQ+EX69n3Sefm6XYR0HLzIugsEW g==; X-CSE-ConnectionGUID: LinHGgTPT2CJanU8IGi7sA== X-CSE-MsgGUID: 5wsYUnNeRdyZefj+dtoJFA== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844466" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844466" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:40 -0800 X-CSE-ConnectionGUID: sEpM4+OvRLqa/IG/6TiigQ== X-CSE-MsgGUID: 5vFqzB1rSpO2HZEidAqTgA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797702" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:38 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 01/15] wifi: cfg80211: move link reconfig parameters into a struct Date: Thu, 6 Mar 2025 12:43:12 +0200 Message-Id: <20250306124057.11ddef83cd2b.Id1a3b1092dc52d0d3731a8798522fdf2e052bf0b@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg Add a new struct cfg80211_ml_reconf_req to collect the link reconfiguration parameters. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- include/net/cfg80211.h | 15 ++++++++++++--- net/mac80211/cfg.c | 7 +++---- net/mac80211/ieee80211_i.h | 5 ++--- net/mac80211/mlme.c | 39 +++++++++++++++++++------------------- net/wireless/core.h | 6 +++--- net/wireless/mlme.c | 13 ++++++------- net/wireless/nl80211.c | 24 +++++++++++------------ net/wireless/rdev-ops.h | 10 ++++------ net/wireless/trace.h | 13 ++++++------- 9 files changed, 67 insertions(+), 65 deletions(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 6b170a8d086c..c7cfef104896 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -7,7 +7,7 @@ * Copyright 2006-2010 Johannes Berg * Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright 2015-2017 Intel Deutschland GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #include @@ -3082,6 +3082,16 @@ struct cfg80211_assoc_link { int error; }; +/** + * struct cfg80211_ml_reconf_req - MLO link reconfiguration request + * @add_links: data for links to add, see &struct cfg80211_assoc_link + * @rem_links: bitmap of links to remove + */ +struct cfg80211_ml_reconf_req { + struct cfg80211_assoc_link add_links[IEEE80211_MLD_MAX_NUM_LINKS]; + u16 rem_links; +}; + /** * enum cfg80211_assoc_req_flags - Over-ride default behaviour in association. * @@ -4972,8 +4982,7 @@ struct cfg80211_ops { struct cfg80211_ttlm_params *params); u32 (*get_radio_mask)(struct wiphy *wiphy, struct net_device *dev); int (*assoc_ml_reconf)(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_assoc_link *add_links, - u16 rem_links); + struct cfg80211_ml_reconf_req *req); int (*set_epcs)(struct wiphy *wiphy, struct net_device *dev, bool val); }; diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 09708a060bb7..76453c0f82a5 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -5,7 +5,7 @@ * Copyright 2006-2010 Johannes Berg * Copyright 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2015-2017 Intel Deutschland GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #include @@ -5185,14 +5185,13 @@ ieee80211_set_ttlm(struct wiphy *wiphy, struct net_device *dev, static int ieee80211_assoc_ml_reconf(struct wiphy *wiphy, struct net_device *dev, - struct cfg80211_assoc_link *add_links, - u16 rem_links) + struct cfg80211_ml_reconf_req *req) { struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); lockdep_assert_wiphy(sdata->local->hw.wiphy); - return ieee80211_mgd_assoc_ml_reconf(sdata, add_links, rem_links); + return ieee80211_mgd_assoc_ml_reconf(sdata, req); } static int diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 845888ac3d2c..5f92619f8584 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -5,7 +5,7 @@ * Copyright 2006-2007 Jiri Benc * Copyright 2007-2010 Johannes Berg * Copyright 2013-2015 Intel Mobile Communications GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #ifndef IEEE80211_I_H @@ -2789,8 +2789,7 @@ void ieee80211_process_epcs_teardown(struct ieee80211_sub_if_data *sdata, struct ieee80211_mgmt *mgmt, size_t len); int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, - struct cfg80211_assoc_link *add_links, - u16 rem_links); + struct cfg80211_ml_reconf_req *req); void ieee80211_process_ml_reconf_resp(struct ieee80211_sub_if_data *sdata, struct ieee80211_mgmt *mgmt, size_t len); diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 23d85a1abbc5..613959f19713 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -10362,8 +10362,7 @@ ieee80211_build_ml_reconf_req(struct ieee80211_sub_if_data *sdata, } int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, - struct cfg80211_assoc_link *add_links, - u16 rem_links) + struct cfg80211_ml_reconf_req *req) { struct ieee80211_local *local = sdata->local; struct ieee80211_mgd_assoc_data *data = NULL; @@ -10383,9 +10382,8 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, return -EBUSY; added_links = 0; - for (link_id = 0; add_links && link_id < IEEE80211_MLD_MAX_NUM_LINKS; - link_id++) { - if (!add_links[link_id].bss) + for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { + if (!req->add_links[link_id].bss) continue; added_links |= BIT(link_id); @@ -10413,7 +10411,8 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { struct ieee80211_supported_band *sband; - struct cfg80211_bss *link_cbss = add_links[link_id].bss; + struct cfg80211_bss *link_cbss = + req->add_links[link_id].bss; struct ieee80211_bss *bss; if (!link_cbss) @@ -10443,11 +10442,11 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, data->link[link_id].bss = link_cbss; data->link[link_id].disabled = - add_links[link_id].disabled; + req->add_links[link_id].disabled; data->link[link_id].elems = - (u8 *)add_links[link_id].elems; + (u8 *)req->add_links[link_id].elems; data->link[link_id].elems_len = - add_links[link_id].elems_len; + req->add_links[link_id].elems_len; if (!bss->uapsd_supported) uapsd_supported = false; @@ -10497,10 +10496,11 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, * Section 35.3.6.4 in Draft P802.11be_D7.0 the AP MLD should accept the * link removal request. */ - if (rem_links) { - u16 new_active_links = sdata->vif.active_links & ~rem_links; + if (req->rem_links) { + u16 new_active_links = + sdata->vif.active_links & ~req->rem_links; - new_valid_links = sdata->vif.valid_links & ~rem_links; + new_valid_links = sdata->vif.valid_links & ~req->rem_links; /* Should not be left with no valid links to perform the * ML reconfiguration @@ -10535,14 +10535,15 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, * is expected to send the ML reconfiguration response frame on the link * on which the request was received. */ - skb = ieee80211_build_ml_reconf_req(sdata, data, rem_links); + skb = ieee80211_build_ml_reconf_req(sdata, data, req->rem_links); if (!skb) { err = -ENOMEM; goto err_free; } - if (rem_links) { - u16 new_dormant_links = sdata->vif.dormant_links & ~rem_links; + if (req->rem_links) { + u16 new_dormant_links = + sdata->vif.dormant_links & ~req->rem_links; err = ieee80211_vif_set_links(sdata, new_valid_links, new_dormant_links); @@ -10555,7 +10556,7 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { - if (!(rem_links & BIT(link_id))) + if (!(req->rem_links & BIT(link_id))) continue; ieee80211_sta_remove_link(sta, link_id); @@ -10564,17 +10565,17 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, /* notify the driver and upper layers */ ieee80211_vif_cfg_change_notify(sdata, BSS_CHANGED_MLD_VALID_LINKS); - cfg80211_links_removed(sdata->dev, rem_links); + cfg80211_links_removed(sdata->dev, req->rem_links); } sdata_info(sdata, "mlo: reconf: adding=0x%x, removed=0x%x\n", - added_links, rem_links); + added_links, req->rem_links); ieee80211_tx_skb(sdata, skb); sdata->u.mgd.reconf.added_links = added_links; sdata->u.mgd.reconf.add_links_data = data; - sdata->u.mgd.reconf.removed_links = rem_links; + sdata->u.mgd.reconf.removed_links = req->rem_links; wiphy_delayed_work_queue(sdata->local->hw.wiphy, &sdata->u.mgd.reconf.wk, IEEE80211_ASSOC_TIMEOUT_SHORT); diff --git a/net/wireless/core.h b/net/wireless/core.h index b094b526b05d..c56a35040caa 100644 --- a/net/wireless/core.h +++ b/net/wireless/core.h @@ -3,7 +3,7 @@ * Wireless configuration interface internals. * * Copyright 2006-2010 Johannes Berg - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #ifndef __NET_WIRELESS_CORE_H #define __NET_WIRELESS_CORE_H @@ -568,8 +568,8 @@ void cfg80211_wdev_release_link_bsses(struct wireless_dev *wdev, u16 link_mask); int cfg80211_assoc_ml_reconf(struct cfg80211_registered_device *rdev, struct net_device *dev, - struct cfg80211_assoc_link *links, - u16 rem_links); + struct cfg80211_ml_reconf_req *req); + /** * struct cfg80211_colocated_ap - colocated AP information * diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index e10f2b3b4b7f..956d33b219df 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c @@ -4,7 +4,7 @@ * * Copyright (c) 2009, Jouni Malinen * Copyright (c) 2015 Intel Deutschland GmbH - * Copyright (C) 2019-2020, 2022-2024 Intel Corporation + * Copyright (C) 2019-2020, 2022-2025 Intel Corporation */ #include @@ -1297,25 +1297,24 @@ void cfg80211_stop_background_radar_detection(struct wireless_dev *wdev) int cfg80211_assoc_ml_reconf(struct cfg80211_registered_device *rdev, struct net_device *dev, - struct cfg80211_assoc_link *links, - u16 rem_links) + struct cfg80211_ml_reconf_req *req) { struct wireless_dev *wdev = dev->ieee80211_ptr; int err; lockdep_assert_wiphy(wdev->wiphy); - err = rdev_assoc_ml_reconf(rdev, dev, links, rem_links); + err = rdev_assoc_ml_reconf(rdev, dev, req); if (!err) { int link_id; for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { - if (!links[link_id].bss) + if (!req->add_links[link_id].bss) continue; - cfg80211_ref_bss(&rdev->wiphy, links[link_id].bss); - cfg80211_hold_bss(bss_from_pub(links[link_id].bss)); + cfg80211_ref_bss(&rdev->wiphy, req->add_links[link_id].bss); + cfg80211_hold_bss(bss_from_pub(req->add_links[link_id].bss)); } } diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 2c4e06610a79..fe706f70ac7e 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -5,7 +5,7 @@ * Copyright 2006-2010 Johannes Berg * Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright 2015-2017 Intel Deutschland GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #include @@ -16488,9 +16488,9 @@ static int nl80211_assoc_ml_reconf(struct sk_buff *skb, struct genl_info *info) struct cfg80211_registered_device *rdev = info->user_ptr[0]; struct net_device *dev = info->user_ptr[1]; struct wireless_dev *wdev = dev->ieee80211_ptr; - struct cfg80211_assoc_link links[IEEE80211_MLD_MAX_NUM_LINKS] = {}; + struct cfg80211_ml_reconf_req req = {}; unsigned int link_id; - u16 add_links, rem_links; + u16 add_links; int err; if (!wdev->valid_links) @@ -16506,39 +16506,37 @@ static int nl80211_assoc_ml_reconf(struct sk_buff *skb, struct genl_info *info) add_links = 0; if (info->attrs[NL80211_ATTR_MLO_LINKS]) { - err = nl80211_process_links(rdev, links, NULL, 0, info); + err = nl80211_process_links(rdev, req.add_links, NULL, 0, info); if (err) return err; for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { - if (!links[link_id].bss) + if (!req.add_links[link_id].bss) continue; add_links |= BIT(link_id); } } if (info->attrs[NL80211_ATTR_MLO_RECONF_REM_LINKS]) - rem_links = + req.rem_links = nla_get_u16(info->attrs[NL80211_ATTR_MLO_RECONF_REM_LINKS]); - else - rem_links = 0; /* Validate that existing links are not added, removed links are valid * and don't allow adding and removing the same links */ - if ((add_links & rem_links) || !(add_links | rem_links) || + if ((add_links & req.rem_links) || !(add_links | req.rem_links) || (wdev->valid_links & add_links) || - ((wdev->valid_links & rem_links) != rem_links)) { + ((wdev->valid_links & req.rem_links) != req.rem_links)) { err = -EINVAL; goto out; } - err = cfg80211_assoc_ml_reconf(rdev, dev, links, rem_links); + err = cfg80211_assoc_ml_reconf(rdev, dev, &req); out: - for (link_id = 0; link_id < ARRAY_SIZE(links); link_id++) - cfg80211_put_bss(&rdev->wiphy, links[link_id].bss); + for (link_id = 0; link_id < ARRAY_SIZE(req.add_links); link_id++) + cfg80211_put_bss(&rdev->wiphy, req.add_links[link_id].bss); return err; } diff --git a/net/wireless/rdev-ops.h b/net/wireless/rdev-ops.h index 759da1623342..9f4783c2354c 100644 --- a/net/wireless/rdev-ops.h +++ b/net/wireless/rdev-ops.h @@ -2,7 +2,7 @@ /* * Portions of this file * Copyright(c) 2016-2017 Intel Deutschland GmbH - * Copyright (C) 2018, 2021-2024 Intel Corporation + * Copyright (C) 2018, 2021-2025 Intel Corporation */ #ifndef __CFG80211_RDEV_OPS #define __CFG80211_RDEV_OPS @@ -1551,16 +1551,14 @@ rdev_get_radio_mask(struct cfg80211_registered_device *rdev, static inline int rdev_assoc_ml_reconf(struct cfg80211_registered_device *rdev, struct net_device *dev, - struct cfg80211_assoc_link *add_links, - u16 rem_links) + struct cfg80211_ml_reconf_req *req) { struct wiphy *wiphy = &rdev->wiphy; int ret = -EOPNOTSUPP; - trace_rdev_assoc_ml_reconf(wiphy, dev, add_links, rem_links); + trace_rdev_assoc_ml_reconf(wiphy, dev, req); if (rdev->ops->assoc_ml_reconf) - ret = rdev->ops->assoc_ml_reconf(wiphy, dev, add_links, - rem_links); + ret = rdev->ops->assoc_ml_reconf(wiphy, dev, req); trace_rdev_return_int(wiphy, ret); return ret; diff --git a/net/wireless/trace.h b/net/wireless/trace.h index 9aa8081ca454..b82dc7282c20 100644 --- a/net/wireless/trace.h +++ b/net/wireless/trace.h @@ -2,7 +2,7 @@ /* * Portions of this file * Copyright(c) 2016-2017 Intel Deutschland GmbH - * Copyright (C) 2018, 2020-2024 Intel Corporation + * Copyright (C) 2018, 2020-2025 Intel Corporation */ #undef TRACE_SYSTEM #define TRACE_SYSTEM cfg80211 @@ -4142,9 +4142,8 @@ TRACE_EVENT(cfg80211_mlo_reconf_add_done, TRACE_EVENT(rdev_assoc_ml_reconf, TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, - struct cfg80211_assoc_link *add_links, - u16 rem_links), - TP_ARGS(wiphy, netdev, add_links, rem_links), + struct cfg80211_ml_reconf_req *req), + TP_ARGS(wiphy, netdev, req), TP_STRUCT__entry( WIPHY_ENTRY NETDEV_ENTRY @@ -4157,9 +4156,9 @@ TRACE_EVENT(rdev_assoc_ml_reconf, u32 i; __entry->add_links = 0; - __entry->rem_links = rem_links; - for (i = 0; add_links && i < IEEE80211_MLD_MAX_NUM_LINKS; i++) - if (add_links[i].bss) + __entry->rem_links = req->rem_links; + for (i = 0; i < IEEE80211_MLD_MAX_NUM_LINKS; i++) + if (req->add_links[i].bss) __entry->add_links |= BIT(i); ), TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", add_links=0x%x, rem_links=0x%x", From patchwork Thu Mar 6 10:43:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871510 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 57F771FCCFA for ; Thu, 6 Mar 2025 10:43:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257822; cv=none; b=c3gEu1Y4IUGkgzIy7CG4u0VHJ2sMxoBGVqtk/KuWLpaeM9zjOtjOWT7bFhe9+EKNF825iiq66xedV0eNhGnbSnYQdvvElm/VKQ6oZrJtoEFcZq3asArtR6RLlPng9F/sV0iAciqnVW4x/oOCVb/+7ngigkPoiECjggCiTse9JUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257822; c=relaxed/simple; bh=f3/dVoJrP7n351BUZdWxgBeW1BIdQN/cWOTkROPjs+U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BxmvX211np90NIy+TuyYSrSoPu5YBxEx6p+UqvvssEsKtVzEOsImFI4d4hnpdhPkuu2imptN9NGnYqxVgjQgMZSaP/wpsuHkPJqD8AQMLKOadrd+tuKO91IXG5J4BjjQGqmPAWQ6PG0q0NoLitZynSuxLkF3Q04rfHAaNtEG2Gc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=IdMHz4Nd; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="IdMHz4Nd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257822; x=1772793822; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=f3/dVoJrP7n351BUZdWxgBeW1BIdQN/cWOTkROPjs+U=; b=IdMHz4Nd9OyAD4sxh6q6/BaRobGBx1gE5hZu6fkgZNE3uicBajTZs5q5 ASL6ctj3nRx67Lg495zUqQ40SJZQXcuuBspB1DxZgMpou+sNuIweOXxRv r5nMUa5mP53HdPuyJq1qsBITcnI7oo23ObwN0kCuH52yP7PKeX+DmB51u ksUd6TPxGN52jY8ZYWuzcHgcAjJzOoY6EnhOZa4flaMJ/XvyoSrhV6Kkz Nxpnwm0UlE+OXxBBNJ3WzhN9SRDTl1Oyjs+b9nPjpUp99ajb/WhPVL/qD nXvMn1VQRdPg5ep0W6bYoD6BxyVjQGXcTpYLJsgInb+1e5hpu/TlLEpw3 A==; X-CSE-ConnectionGUID: palgtoxQSYCzP4MCEKtI0g== X-CSE-MsgGUID: oEsvNZZFQ4+IGrMDxIX3bQ== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844472" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844472" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:42 -0800 X-CSE-ConnectionGUID: /AYx0WEGQSWRYVLesKcmSQ== X-CSE-MsgGUID: 7asHtTDwRfKG64f//tXyHA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797710" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:40 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH wireless-next 02/15] wifi: cfg80211: allow setting extended MLD capa/ops Date: Thu, 6 Mar 2025 12:43:13 +0200 Message-Id: <20250306124057.b42976eb82b4.I4dd8f53b0030db7ea87a2e0920989e7e2c7b5345@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg Some extended MLD capabilities and operations bits (currently the "BTM MLD Recommendataion For Multiple APs Support" bit) may depend on userspace capabilities. Allow userspace to pass the values for this field that it supports to the association and link reconfiguration operations. Signed-off-by: Johannes Berg Reviewed-by: Ilan Peer --- include/net/cfg80211.h | 6 ++++++ include/uapi/linux/nl80211.h | 10 +++++++++- net/wireless/nl80211.c | 12 ++++++++++++ net/wireless/trace.h | 4 ++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index c7cfef104896..29b9cf0fe6c8 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -3086,10 +3086,13 @@ struct cfg80211_assoc_link { * struct cfg80211_ml_reconf_req - MLO link reconfiguration request * @add_links: data for links to add, see &struct cfg80211_assoc_link * @rem_links: bitmap of links to remove + * @ext_mld_capa_ops: extended MLD capabilities and operations set by + * userspace for the ML reconfiguration action frame */ struct cfg80211_ml_reconf_req { struct cfg80211_assoc_link add_links[IEEE80211_MLD_MAX_NUM_LINKS]; u16 rem_links; + u16 ext_mld_capa_ops; }; /** @@ -3164,6 +3167,8 @@ enum cfg80211_assoc_req_flags { * the link on which the association request should be sent * @ap_mld_addr: AP MLD address in case of MLO association request, * valid iff @link_id >= 0 + * @ext_mld_capa_ops: extended MLD capabilities and operations set by + * userspace for the association */ struct cfg80211_assoc_request { struct cfg80211_bss *bss; @@ -3184,6 +3189,7 @@ struct cfg80211_assoc_request { struct cfg80211_assoc_link links[IEEE80211_MLD_MAX_NUM_LINKS]; const u8 *ap_mld_addr; s8 link_id; + u16 ext_mld_capa_ops; }; /** diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index 9d8ecf20ef0d..c59075acdb10 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -11,7 +11,7 @@ * Copyright 2008 Jouni Malinen * Copyright 2008 Colin McCabe * Copyright 2015-2017 Intel Deutschland GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -2893,6 +2893,12 @@ enum nl80211_commands { * @NL80211_ATTR_EPCS: Flag attribute indicating that EPCS is enabled for a * station interface. * + * @NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS: Extended MLD capabilities and + * operations that userspace implements to use during association/ML + * link reconfig, currently only "BTM MLD Recommendation For Multiple + * APs Support". Drivers may set additional flags that they support + * in the kernel or device. + * * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use @@ -3448,6 +3454,8 @@ enum nl80211_attrs { NL80211_ATTR_MLO_RECONF_REM_LINKS, NL80211_ATTR_EPCS, + NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index fe706f70ac7e..e2e8c368fbbf 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -850,6 +850,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { NL80211_MAX_SUPP_SELECTORS), [NL80211_ATTR_MLO_RECONF_REM_LINKS] = { .type = NLA_U16 }, [NL80211_ATTR_EPCS] = { .type = NLA_FLAG }, + [NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS] = { .type = NLA_U16 }, }; /* policy for the key attributes */ @@ -11373,6 +11374,10 @@ static int nl80211_associate(struct sk_buff *skb, struct genl_info *info) err = -EINVAL; goto free; } + + if (info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]) + req.ext_mld_capa_ops = + nla_get_u16(info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]); } else { if (req.link_id >= 0) return -EINVAL; @@ -11382,6 +11387,9 @@ static int nl80211_associate(struct sk_buff *skb, struct genl_info *info) if (IS_ERR(req.bss)) return PTR_ERR(req.bss); ap_addr = req.bss->bssid; + + if (info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]) + return -EINVAL; } err = nl80211_crypto_settings(rdev, info, &req.crypto, 1); @@ -16532,6 +16540,10 @@ static int nl80211_assoc_ml_reconf(struct sk_buff *skb, struct genl_info *info) goto out; } + if (info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]) + req.ext_mld_capa_ops = + nla_get_u16(info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]); + err = cfg80211_assoc_ml_reconf(rdev, dev, &req); out: diff --git a/net/wireless/trace.h b/net/wireless/trace.h index b82dc7282c20..4ed9fada4ec0 100644 --- a/net/wireless/trace.h +++ b/net/wireless/trace.h @@ -1378,6 +1378,7 @@ TRACE_EVENT(rdev_assoc, __dynamic_array(u8, fils_kek, req->fils_kek_len) __dynamic_array(u8, fils_nonces, req->fils_nonces ? 2 * FILS_NONCE_LEN : 0) + __field(u16, ext_mld_capa_ops) ), TP_fast_assign( WIPHY_ASSIGN; @@ -1404,6 +1405,7 @@ TRACE_EVENT(rdev_assoc, if (req->fils_nonces) memcpy(__get_dynamic_array(fils_nonces), req->fils_nonces, 2 * FILS_NONCE_LEN); + __entry->ext_mld_capa_ops = req->ext_mld_capa_ops; ), TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: %pM" ", previous bssid: %pM, use mfp: %s, flags: 0x%x", @@ -4149,6 +4151,7 @@ TRACE_EVENT(rdev_assoc_ml_reconf, NETDEV_ENTRY __field(u16, add_links) __field(u16, rem_links) + __field(u16, ext_mld_capa_ops) ), TP_fast_assign( WIPHY_ASSIGN; @@ -4160,6 +4163,7 @@ TRACE_EVENT(rdev_assoc_ml_reconf, for (i = 0; i < IEEE80211_MLD_MAX_NUM_LINKS; i++) if (req->add_links[i].bss) __entry->add_links |= BIT(i); + __entry->ext_mld_capa_ops = req->ext_mld_capa_ops; ), TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", add_links=0x%x, rem_links=0x%x", WIPHY_PR_ARG, NETDEV_PR_ARG, From patchwork Thu Mar 6 10:43:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871135 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD73E204C28 for ; Thu, 6 Mar 2025 10:43:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257824; cv=none; b=sknTWxaPMksvYvGzZSSs83/lUOL00vGUJJ2SALHNUH6IJioXs5grNwqLg+saAit+x96uBCy1rua7a/BJPK2StDxFS5Igjho5Zj4EvYQi7TRx5U2qaBuYOqNRrFX5bfXB/CN5xEBnrCs1JSt3GMe8fNgFn0TTAaTPDFOvpXmJQvU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257824; c=relaxed/simple; bh=kdBYZdaB8/26drJFity98xmPQnxsQqiq068PnVbHqac=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e9L7gWfI+H8RHnRRcYvnGjc4bCxpVWKOk+NCbeZfsDEEArkMhN7C/Gua19hJEgilsz1jyFC2ZEfmqT/KXUMXTfS9a6usdjQ9oyxmaxETqMas4Hz7LflRrXZqgQQafqnyGU/MyhXDfalXAglIxNp9T35qLL1vaEYfP4uA2UDEJHM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Csr7oSS6; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Csr7oSS6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257823; x=1772793823; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kdBYZdaB8/26drJFity98xmPQnxsQqiq068PnVbHqac=; b=Csr7oSS6oOxC/MiHXrUTCJnCaULW5+pAM2P8rGJW7SWKlvB8hoxX8B/d okgYexRz+6nMYV5AzgMSfV5WkdQrWWwifQ1DEXZWgrNKaDc2sF8WnqvXz KQ14yq0ajGIQYPqOEUoQnpx5pp3bmIJWh6DTILB9lnsEZeMveQ/RvOVCM AnOENZNC8qkwgg47hRIj2pTGcMI/VS3PAmPmZyvCL8ptrDjkKG4O3TVSW sQi2arVUYany16zTGsUgS5EPdXgjGcwJIp+qmLs9dUcujT5KxMt6nGyhQ 6quowOeqQ4Jwo5yR0vnAUeOa/d8JOndm6fnmGPXL6eRF4s9E7yhpAgnIk g==; X-CSE-ConnectionGUID: WVAu1qyzTYClOd9ANoYrMA== X-CSE-MsgGUID: YyoOjTVrRia0CnCSQc7FCg== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844474" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844474" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:43 -0800 X-CSE-ConnectionGUID: O5XfNfd+QfeA2NjLaOZ4LA== X-CSE-MsgGUID: mFKBJ1pURBGUOu4xCrSN8A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797716" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:41 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 03/15] wifi: mac80211: mlme: support extended MLD capa/ops in assoc Date: Thu, 6 Mar 2025 12:43:14 +0200 Message-Id: <20250306124057.83a8f80bf509.I623f59023b47ec202fc0c7520f2b5f575b439927@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg Support passing the value from userspace on to the AP in the association and ML link reconfiguration requests. We may need to also add a driver value to or in with the field, but for now have no feature that is controlled by the driver. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- net/mac80211/ieee80211_i.h | 2 ++ net/mac80211/mlme.c | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 5f92619f8584..a36563a07b3b 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -462,6 +462,8 @@ struct ieee80211_mgd_assoc_data { unsigned int assoc_link_id; + __le16 ext_mld_capa_ops; + u8 fils_nonces[2 * FILS_NONCE_LEN]; u8 fils_kek[FILS_MAX_KEK_LEN]; size_t fils_kek_len; diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 613959f19713..87ebeec2877d 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -1943,6 +1943,21 @@ ieee80211_assoc_add_ml_elem(struct ieee80211_sub_if_data *sdata, } skb_put_data(skb, &mld_capa_ops, sizeof(mld_capa_ops)); + /* Many APs have broken parsing of the extended MLD capa/ops field, + * dropping (re-)association request frames or replying with association + * response with a failure status if it's present. Without a clear + * indication as to whether the AP supports parsing this field or not do + * not include it in the common information unless strict mode is set. + */ + if (ieee80211_hw_check(&local->hw, STRICT) && + assoc_data->ext_mld_capa_ops) { + ml_elem->control |= + cpu_to_le16(IEEE80211_MLC_BASIC_PRES_EXT_MLD_CAPA_OP); + common->len += 2; + skb_put_data(skb, &assoc_data->ext_mld_capa_ops, + sizeof(assoc_data->ext_mld_capa_ops)); + } + for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { u16 link_present_elems[PRESENT_ELEMS_MAX] = {}; const u8 *extra_elems; @@ -2112,6 +2127,7 @@ static int ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata) /* max common info field in basic multi-link element */ size += sizeof(struct ieee80211_mle_basic_common_info) + 2 + /* capa & op */ + 2 + /* ext capa & op */ 2; /* EML capa */ /* @@ -9366,6 +9382,8 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata, else memcpy(assoc_data->ap_addr, cbss->bssid, ETH_ALEN); + assoc_data->ext_mld_capa_ops = cpu_to_le16(req->ext_mld_capa_ops); + if (ifmgd->associated) { u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN]; @@ -10136,7 +10154,7 @@ void ieee80211_process_ml_reconf_resp(struct ieee80211_sub_if_data *sdata, static struct sk_buff * ieee80211_build_ml_reconf_req(struct ieee80211_sub_if_data *sdata, struct ieee80211_mgd_assoc_data *add_links_data, - u16 removed_links) + u16 removed_links, __le16 ext_mld_capa_ops) { struct ieee80211_local *local = sdata->local; struct ieee80211_mgmt *mgmt; @@ -10185,6 +10203,9 @@ ieee80211_build_ml_reconf_req(struct ieee80211_sub_if_data *sdata, var_common_size += 2; } + if (ext_mld_capa_ops) + var_common_size += 2; + /* Add the common information length */ size += common_size + var_common_size; @@ -10269,6 +10290,12 @@ ieee80211_build_ml_reconf_req(struct ieee80211_sub_if_data *sdata, skb_put_data(skb, &mld_capa_ops, sizeof(mld_capa_ops)); } + if (ext_mld_capa_ops) { + ml_elem->control |= + cpu_to_le16(IEEE80211_MLC_RECONF_PRES_EXT_MLD_CAPA_OP); + skb_put_data(skb, &ext_mld_capa_ops, sizeof(ext_mld_capa_ops)); + } + if (sdata->u.mgd.flags & IEEE80211_STA_ENABLE_RRM) capab |= WLAN_CAPABILITY_RADIO_MEASURE; @@ -10535,7 +10562,8 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, * is expected to send the ML reconfiguration response frame on the link * on which the request was received. */ - skb = ieee80211_build_ml_reconf_req(sdata, data, req->rem_links); + skb = ieee80211_build_ml_reconf_req(sdata, data, req->rem_links, + cpu_to_le16(req->ext_mld_capa_ops)); if (!skb) { err = -ENOMEM; goto err_free; From patchwork Thu Mar 6 10:43:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871509 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 897A020551E for ; Thu, 6 Mar 2025 10:43:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257826; cv=none; b=TK8dlr7lD2SuIkQF3wHG3YsB/4NgJSP8D2texD/AVXA2rX49Fs5axtiVLybieMDlSJChSFljVFzihhF6tCdQY4OvLPGteof2BVpbW3edVNoLj7E748tsLWXzqluVFLLZgX3Pwd6NPN2NABmT2ZKAF6WkmO1o7/b0OgYv96EcPcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257826; c=relaxed/simple; bh=3pPY+UCmsD0lXw/itTAdWe36yJau6QzEUgGLGb30UaY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ANtSweMknmHquO1AfrmAJC7lTuj4DY7Mp05ifNDBe6ujLQuGSL0q8hI/Tt7yesQPEQ1+JP9NNyfSLQ3MXdoVh3NJyCIn8xe+fSC6aBKsq9cmjGBoS39IoyOuwFxM4gOJowqFonJOhdD4KKAcsDM5liMdwKAb52izveylet8Mf2o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=CBXSccsB; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="CBXSccsB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257825; x=1772793825; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3pPY+UCmsD0lXw/itTAdWe36yJau6QzEUgGLGb30UaY=; b=CBXSccsB3d/rHUuZsdTi2NXSQB/rOgBxpVq8g1tIEH8nqYGsmPeFPaaC oGtex2bzaKLPdDRtTLifxynVvCt12Lj++cddTi3WyPs9q2c9SSz35dd+r 4oJyKhV+7I7iE0V+IPtheWRg7Q1W4XnexePaLikrfwu7V9x9e+jUI+uXR KGYa833pfmnLfTcuL7TR/7yquy395p4UfdFV3AILaXtLEALE8uNTiUOrX hGrnKXFu3L3L3UXCWwnwgoji1TVZi801dNIxoJxT5sFtIMpZ2Y00UlIl6 k12k1GScBUkHsg9BzDnTHZWqZ8XAmM5fFKoWX0j2DKYDWdRLpMjPcUYiB Q==; X-CSE-ConnectionGUID: srB42do4S2uzEzMnNp8I2Q== X-CSE-MsgGUID: cUOF5NC0Q1WrjsqECT1FDA== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844478" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844478" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:45 -0800 X-CSE-ConnectionGUID: b2rRILJzRIGHHdBBLRLeGA== X-CSE-MsgGUID: 7/Di5g94RpyKVjCtf5KXlw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797724" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:43 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Anjaneyulu , Somashekhar Puttagangaiah Subject: [PATCH wireless-next 04/15] wifi: cfg80211: allow AP operations in 20 MHz configuration Date: Thu, 6 Mar 2025 12:43:15 +0200 Message-Id: <20250306124057.a7b909d23df2.I8a8f79e1c9eb74936929463960ee2a324712fe51@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Anjaneyulu Implemented configuration option for channel properties to allow soft AP/active scan operations exclusively to 20 MHz bandwidth. While on it, fixed indentation and kernel doc for enum nl80211_reg_rule_flags. Signed-off-by: Pagadala Yesu Anjaneyulu Signed-off-by: Somashekhar Puttagangaiah Signed-off-by: Miri Korenblit --- include/net/cfg80211.h | 4 +++ include/uapi/linux/nl80211.h | 52 ++++++++++++++++++++---------------- net/wireless/chan.c | 8 +++++- net/wireless/nl80211.c | 4 +++ net/wireless/reg.c | 4 ++- 5 files changed, 47 insertions(+), 25 deletions(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 29b9cf0fe6c8..9a4a5c20b568 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -127,6 +127,9 @@ struct wiphy; * even if it is otherwise disabled. * @IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP: Allow using this channel for AP operation * with very low power (VLP), even if otherwise set to NO_IR. + * @IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY: Allow using this channel for + * soft AP operations and active scan in 20 MHz bandwidth, + * even if otherwise set to NO_IR. */ enum ieee80211_channel_flags { IEEE80211_CHAN_DISABLED = BIT(0), @@ -155,6 +158,7 @@ enum ieee80211_channel_flags { IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT = BIT(23), IEEE80211_CHAN_CAN_MONITOR = BIT(24), IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP = BIT(25), + IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY = BIT(26), }; #define IEEE80211_CHAN_NO_HT40 \ diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index c59075acdb10..1cf52bc17ef3 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -4335,6 +4335,8 @@ enum nl80211_wmm_rule { * otherwise completely disabled. * @NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP: This channel can be used for a * very low power (VLP) AP, despite being NO_IR. + * @NL80211_FREQUENCY_ATTR_ALLOW_20MHZ_ACTIVITY: This channel can be used for + * soft AP operations in 20MHz bandwidth, despite being NO_IR. * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number * currently defined * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use @@ -4379,6 +4381,7 @@ enum nl80211_frequency_attr { NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT, NL80211_FREQUENCY_ATTR_CAN_MONITOR, NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP, + NL80211_FREQUENCY_ATTR_ALLOW_20MHZ_ACTIVITY, /* keep last */ __NL80211_FREQUENCY_ATTR_AFTER_LAST, @@ -4590,31 +4593,34 @@ enum nl80211_sched_scan_match_attr { * @NL80211_RRF_NO_6GHZ_AFC_CLIENT: Client connection to AFC AP not allowed * @NL80211_RRF_ALLOW_6GHZ_VLP_AP: Very low power (VLP) AP can be permitted * despite NO_IR configuration. + * @NL80211_RRF_ALLOW_20MHZ_ACTIVITY: Allow soft AP operations in + * 20MHz bandwidth, despite NO_IR configuration. */ enum nl80211_reg_rule_flags { - NL80211_RRF_NO_OFDM = 1<<0, - NL80211_RRF_NO_CCK = 1<<1, - NL80211_RRF_NO_INDOOR = 1<<2, - NL80211_RRF_NO_OUTDOOR = 1<<3, - NL80211_RRF_DFS = 1<<4, - NL80211_RRF_PTP_ONLY = 1<<5, - NL80211_RRF_PTMP_ONLY = 1<<6, - NL80211_RRF_NO_IR = 1<<7, - __NL80211_RRF_NO_IBSS = 1<<8, - NL80211_RRF_AUTO_BW = 1<<11, - NL80211_RRF_IR_CONCURRENT = 1<<12, - NL80211_RRF_NO_HT40MINUS = 1<<13, - NL80211_RRF_NO_HT40PLUS = 1<<14, - NL80211_RRF_NO_80MHZ = 1<<15, - NL80211_RRF_NO_160MHZ = 1<<16, - NL80211_RRF_NO_HE = 1<<17, - NL80211_RRF_NO_320MHZ = 1<<18, - NL80211_RRF_NO_EHT = 1<<19, - NL80211_RRF_PSD = 1<<20, - NL80211_RRF_DFS_CONCURRENT = 1<<21, - NL80211_RRF_NO_6GHZ_VLP_CLIENT = 1<<22, - NL80211_RRF_NO_6GHZ_AFC_CLIENT = 1<<23, - NL80211_RRF_ALLOW_6GHZ_VLP_AP = 1<<24, + NL80211_RRF_NO_OFDM = 1 << 0, + NL80211_RRF_NO_CCK = 1 << 1, + NL80211_RRF_NO_INDOOR = 1 << 2, + NL80211_RRF_NO_OUTDOOR = 1 << 3, + NL80211_RRF_DFS = 1 << 4, + NL80211_RRF_PTP_ONLY = 1 << 5, + NL80211_RRF_PTMP_ONLY = 1 << 6, + NL80211_RRF_NO_IR = 1 << 7, + __NL80211_RRF_NO_IBSS = 1 << 8, + NL80211_RRF_AUTO_BW = 1 << 11, + NL80211_RRF_IR_CONCURRENT = 1 << 12, + NL80211_RRF_NO_HT40MINUS = 1 << 13, + NL80211_RRF_NO_HT40PLUS = 1 << 14, + NL80211_RRF_NO_80MHZ = 1 << 15, + NL80211_RRF_NO_160MHZ = 1 << 16, + NL80211_RRF_NO_HE = 1 << 17, + NL80211_RRF_NO_320MHZ = 1 << 18, + NL80211_RRF_NO_EHT = 1 << 19, + NL80211_RRF_PSD = 1 << 20, + NL80211_RRF_DFS_CONCURRENT = 1 << 21, + NL80211_RRF_NO_6GHZ_VLP_CLIENT = 1 << 22, + NL80211_RRF_NO_6GHZ_AFC_CLIENT = 1 << 23, + NL80211_RRF_ALLOW_6GHZ_VLP_AP = 1 << 24, + NL80211_RRF_ALLOW_20MHZ_ACTIVITY = 1 << 25, }; #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR diff --git a/net/wireless/chan.c b/net/wireless/chan.c index 9f918b77b40e..4cdb74a3f38c 100644 --- a/net/wireless/chan.c +++ b/net/wireless/chan.c @@ -6,7 +6,7 @@ * * Copyright 2009 Johannes Berg * Copyright 2013-2014 Intel Mobile Communications GmbH - * Copyright 2018-2024 Intel Corporation + * Copyright 2018-2025 Intel Corporation */ #include @@ -1497,6 +1497,12 @@ bool cfg80211_reg_check_beaconing(struct wiphy *wiphy, if (cfg->reg_power == IEEE80211_REG_VLP_AP) permitting_flags |= IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP; + if ((cfg->iftype == NL80211_IFTYPE_P2P_GO || + cfg->iftype == NL80211_IFTYPE_AP) && + (chandef->width == NL80211_CHAN_WIDTH_20_NOHT || + chandef->width == NL80211_CHAN_WIDTH_20)) + permitting_flags |= IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY; + return _cfg80211_reg_can_beacon(wiphy, chandef, cfg->iftype, check_no_ir ? IEEE80211_CHAN_NO_IR : 0, permitting_flags); diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index e2e8c368fbbf..aee49d43cf86 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -1235,6 +1235,10 @@ static int nl80211_msg_put_channel(struct sk_buff *msg, struct wiphy *wiphy, if ((chan->flags & IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP) && nla_put_flag(msg, NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP)) goto nla_put_failure; + if ((chan->flags & IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY) && + nla_put_flag(msg, + NL80211_FREQUENCY_ATTR_ALLOW_20MHZ_ACTIVITY)) + goto nla_put_failure; } if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_MAX_TX_POWER, diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 2dd0533e7660..9314f7fcd54b 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -5,7 +5,7 @@ * Copyright 2008-2011 Luis R. Rodriguez * Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright 2017 Intel Deutschland GmbH - * Copyright (C) 2018 - 2024 Intel Corporation + * Copyright (C) 2018 - 2025 Intel Corporation * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -1602,6 +1602,8 @@ static u32 map_regdom_flags(u32 rd_flags) channel_flags |= IEEE80211_CHAN_PSD; if (rd_flags & NL80211_RRF_ALLOW_6GHZ_VLP_AP) channel_flags |= IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP; + if (rd_flags & NL80211_RRF_ALLOW_20MHZ_ACTIVITY) + channel_flags |= IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY; return channel_flags; } From patchwork Thu Mar 6 10:43:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871134 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3562C2040BF for ; Thu, 6 Mar 2025 10:43:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257827; cv=none; b=d6RjNdlQnayuDyHWwdYFhvfYylQWpoREXneOXg6bShna3xRtsZ0qOjbwqDXxdrSgsHnczURDF1+AhAbr/eipXSURJPbD+W5uNVP1yWowpI6hotQVz2aK1TWkOxqpFagYFt8SJPgLDfUNn3I5FkgLjofNnOIe8yC51lOw29DyR0o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257827; c=relaxed/simple; bh=s94LcA9sw7TLrMkJh5mCQaXdgRMBn6WyiEpLoQBX5DI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=H/gz69opDIKTiDgdeVOdI+fWo0sNtpkZVNfkPF5+bGlXtoPMPlXLTIpIsahylzFMDq4KBZsH5OwqrUByONLACHpplJGTdftnJHRr6d2YxzmIr/X1KjlVoU7LY+3p0DaqfZsw8iD5QtLHQQua3GRZSD2VCF2KlejdiGTerXkKCJ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=kQ3E56fw; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="kQ3E56fw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257827; x=1772793827; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=s94LcA9sw7TLrMkJh5mCQaXdgRMBn6WyiEpLoQBX5DI=; b=kQ3E56fwZ/Ukko9MBbaYxpBDore/2ogdI8UYLHK5Ti7T6vAm6pPahhB0 xz3SD5dGnpj8qdChl4r6vGH0C2zIuZ37zjsopXZKqvfPO1K/BN3j/oDYT Plm4hcVWBWPgjGAP/0IqsGOTJMpmN6WXCVnPHhdfDHMkIdnKg0RSMcjFm 9742ie321VYWAb/M0ukstSKSneMguv98U2k57rWzxZegvPQ1AhEXq/BP+ mEuxYyhSA2/Byf+6pPiwAcBBfjn78Z2l3CY5Ou4GqWAR71LkuaJM2jd+n 9WqCIqYxhuinG9Brx2x86BM8PM3LoncaaK8n5j2E9dbJqEjh4aWhDY1M/ g==; X-CSE-ConnectionGUID: OVFHMRqYS9+703S1hC+ULQ== X-CSE-MsgGUID: UK1aN24uQgmDEeyRR2pfYg== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844482" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844482" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:46 -0800 X-CSE-ConnectionGUID: RtwS4elhShW3CojF+kh20Q== X-CSE-MsgGUID: dp6j/1/mTUqZeaBWMSpajg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797731" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:45 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH wireless-next 05/15] wifi: mac80211: fix U-APSD check in ML reconfiguration Date: Thu, 6 Mar 2025 12:43:16 +0200 Message-Id: <20250306124057.db8705144418.I01959e448c6a2a3e8bc5d561bbae9e8d2cca616a@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg If U-APSD isn't enabled by us, then IEEE80211_STA_UAPSD_ENABLED won't be set, but the AP can still support it in that case. Only require U-APSD from the AP if we enabled it, don't require it to be disabled on the AP if we didn't. Signed-off-by: Johannes Berg Reviewed-by: Ilan Peer Signed-off-by: Miri Korenblit --- net/mac80211/mlme.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 87ebeec2877d..426c0246fe1f 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -10492,12 +10492,11 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, } } - /* Require U-APSD support to be similar to the current valid - * links - */ - if (uapsd_supported != - !!(sdata->u.mgd.flags & IEEE80211_STA_UAPSD_ENABLED)) { + /* Require U-APSD support if we enabled it */ + if (sdata->u.mgd.flags & IEEE80211_STA_UAPSD_ENABLED && + !uapsd_supported) { err = -EINVAL; + sdata_info(sdata, "U-APSD on but not available on (all) new links\n"); goto err_free; } From patchwork Thu Mar 6 10:43:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871508 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 64864209681 for ; Thu, 6 Mar 2025 10:43:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257829; cv=none; b=bav27Q71a9fEzQmiHX4+KgzOlYa46hzef7+/Od7QAdVje+UV8Loss/w8IA4bmqTao+CwpEIanlwLmGQRMptHmSsYNf+XEeEn2P2BHN7BxngSgAVCRtdByTrPkh3LI2stOmqw16Oti08qF7wqTK1hLtk6pYn1Kh/lDKnDAlFd1Mg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257829; c=relaxed/simple; bh=8pLMsaVdsrHpTBd9Nhqae0S+nvAfGbMfiJFFo2jWdSg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Q79ySWcugXgvayCFWKPgirRbwduE19xNy4ES01QtAHcLi7ZNKn/wE+9Co4KaSHbHYQAz0XKP6ff+JFeiN2Q7ODUGwiQf+JrqFTsQ8o8b+9MMd4LTeeWCOoIl6SJs6Oman5gCY4ZNeA3YKJx882yo4RdZXd4YFQ2i/Wb3DV+Tlvc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=GYc+Qp2i; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="GYc+Qp2i" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257829; x=1772793829; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8pLMsaVdsrHpTBd9Nhqae0S+nvAfGbMfiJFFo2jWdSg=; b=GYc+Qp2i+EJakn3WQazxjBbOdklRpZkHSJO1HBqGg1ve1nns2/smG8k1 PfpbxN49r3/L/r6ZBRW+WYf2ibvq927X4SspBm3GJC0qNJrpLXjZ05n8y IhaMibaA/D4UCy1S8SgmAa2YHZHNXniBnbNeUj6wMbi7zwQ9/X4/u+se/ PaOOcqWgReUYobRFA/R3BWotN7y9sxJfjPzyVcGCRMAxx3GbNCceSbnYg SqOjYOKYIKoqgR7E3SpvFoUfJ2PqtuMRVs5xweB7eEtYGo9NlYhipjCwR 0haDvH57Mof6TbmQIL3X/w1vU6gHkoApIeBXiVufI9aJogRO6rKgpLOF5 A==; X-CSE-ConnectionGUID: f0bwl4f4QaC6ANNwhBc5bQ== X-CSE-MsgGUID: ZDnL3cdMQMCX/SiwBe/5XQ== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844484" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844484" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:48 -0800 X-CSE-ConnectionGUID: 9NCIxATVQVSUlUNu1P1Azg== X-CSE-MsgGUID: oAGw9FHhQRa1VodfJxzmAg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797738" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:46 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH wireless-next 06/15] wifi: cfg80211: improve supported_selector documentation Date: Thu, 6 Mar 2025 12:43:17 +0200 Message-Id: <20250306124057.8ba33932cad6.I502b56111b62ea0be174ae76bd03684ae1d4aefb@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg Improve the documentation for supported BSS selectors to make it more precise. Signed-off-by: Johannes Berg Reviewed-by: Ilan Peer Signed-off-by: Miri Korenblit --- include/net/cfg80211.h | 4 ++-- include/uapi/linux/nl80211.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 9a4a5c20b568..6f76059c0aa5 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -3149,10 +3149,10 @@ enum cfg80211_assoc_req_flags { * included in the Current AP address field of the Reassociation Request * frame. * @flags: See &enum cfg80211_assoc_req_flags - * @supported_selectors: supported selectors in IEEE 802.11 format + * @supported_selectors: supported BSS selectors in IEEE 802.11 format * (or %NULL for no change). * If %NULL, then support for SAE_H2E should be assumed. - * @supported_selectors_len: Length of supported_selectors in octets. + * @supported_selectors_len: number of supported BSS selectors * @ht_capa: HT Capabilities over-rides. Values set in ht_capa_mask * will be used in ht_capa. Un-supported values will be ignored. * @ht_capa_mask: The bits of ht_capa which are to be used. diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index 1cf52bc17ef3..36b9daf98974 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -2881,9 +2881,9 @@ enum nl80211_commands { * @NL80211_ATTR_VIF_RADIO_MASK: Bitmask of allowed radios (u32). * A value of 0 means all radios. * - * @NL80211_ATTR_SUPPORTED_SELECTORS: supported selectors, array of - * supported selectors as defined by IEEE 802.11 7.3.2.2 but without the - * length restriction (at most %NL80211_MAX_SUPP_SELECTORS). + * @NL80211_ATTR_SUPPORTED_SELECTORS: supported BSS Membership Selectors, array + * of supported selectors as defined by IEEE 802.11 (9.4.2.3 in -2020) but + * without the length restriction (at most %NL80211_MAX_SUPP_SELECTORS). * This can be used to provide a list of selectors that are implemented * by the supplicant. If not given, support for SAE_H2E is assumed. * From patchwork Thu Mar 6 10:43:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871133 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D0FFD2040BF for ; Thu, 6 Mar 2025 10:43:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257831; cv=none; b=sDySgTfUGE92rd2fSFQKdC5MDoOWNRrqaIgguRxuT5e3MsGjKWtb2c/rP6yq4XDnVavwmzC9In9XhXG5OvPm/1lpYPcMEH0eNWS6lso4fH/kkZQZucG+VaNr9i93mpSldqt+mUUDJNGYd5LzRv9WnBDD+2qfvAuOKz1XcB25/ak= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257831; c=relaxed/simple; bh=DYcltVUMLF4xMeT3uxSDwG6lZLJOWpkDsyW4wL2ahME=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=c3vaCo/uy5NDocs3T5zLu8qRs8Pqkllj9Dta+jJuT4xz1Azy5Og0KbHUq7oCYGeyJRlkHr+rYtDxmxJvcXFh/CF+YlZQSG3HaOLMNpvHDyElVoeBVNwALFZjTpUY3taaqI3WEEhp/NACt/19nMSZlFfPjacO+7eWg4BmrEivhag= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=MGrN8BlJ; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="MGrN8BlJ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257830; x=1772793830; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DYcltVUMLF4xMeT3uxSDwG6lZLJOWpkDsyW4wL2ahME=; b=MGrN8BlJsWjlg4pR1LHJWnnV0oJ2FJ3Yrec4SXwFDIo4k2K552p1KO9A Mg25qnUrKK3RZSHhbsvzwkPbhoMroKtvycvEDT5kFTDI6hckWZUWKFh/R oyai6ToMOdF9FZvdsHYcRm03uXlEzEqo5IS3g6AvWO8MJfXcFENOwcvJo UENIaLLg14D42dgXHg+20TZWPMlwZNjnOjewHXWppE9gquUMpnsDs3XMe OQ6KTkErHn4lPg5rMuCLo51NVDy6QXPh5a0K8YHvlhDRIFp/kIDfSjRje kIZ2nLXFv/URuurbFjaL7+QL1UAGEF89D4BN0ZSXQJJDsVNlMtNYgGsYL Q==; X-CSE-ConnectionGUID: x4d+cfdvTgKaoOS9NtJzTQ== X-CSE-MsgGUID: AuwdWn8+RnChSrm4h+no8Q== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844488" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844488" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:50 -0800 X-CSE-ConnectionGUID: bU9ZosMsT4OUCwurTErUmg== X-CSE-MsgGUID: 6Img398lQ7+Zyl1Wdh4r8Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797744" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:48 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Avraham Stern Subject: [PATCH wireless-next 07/15] wifi: mac80211: allow 320 MHz FTM measurements Date: Thu, 6 Mar 2025 12:43:18 +0200 Message-Id: <20250306124057.eaa80d17cd7d.I9205c585fca6a54a2c5a9e4db98c7781bd1fc4e1@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Avraham Stern Add 320 MHz to the list of allowed bandwidths for FTM measurements. Signed-off-by: Avraham Stern Signed-off-by: Miri Korenblit --- net/wireless/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/wireless/core.c b/net/wireless/core.c index 15bbc9d06c9e..52728527c6f5 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -5,7 +5,7 @@ * Copyright 2006-2010 Johannes Berg * Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright 2015-2017 Intel Deutschland GmbH - * Copyright (C) 2018-2024 Intel Corporation + * Copyright (C) 2018-2025 Intel Corporation */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -793,6 +793,7 @@ int wiphy_register(struct wiphy *wiphy) BIT(NL80211_CHAN_WIDTH_80) | BIT(NL80211_CHAN_WIDTH_80P80) | BIT(NL80211_CHAN_WIDTH_160) | + BIT(NL80211_CHAN_WIDTH_320) | BIT(NL80211_CHAN_WIDTH_5) | BIT(NL80211_CHAN_WIDTH_10)))) return -EINVAL; From patchwork Thu Mar 6 10:43:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871507 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2735209F46 for ; Thu, 6 Mar 2025 10:43:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257832; cv=none; b=dN0EkPurmWvT8MqRRFV97PLjML6l0fUd1DuiE+cEuRfYb9P0VipGYAOy3jdIIZqTXR6BClLJR8/lW3Dt0CeQne3Rc9YAEG8VzJVI87CYJktm72IAFaKNaKXOMoGCcAImBVPYGJHTYud7im1bvoXCm2NW5IrsK5DsJtwtNPM72Rw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257832; c=relaxed/simple; bh=z9YiSsuR8tZfAE1pEAoxKoDCaDTLLV85kifjv5K9shM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=iAQJlFoANsIOcvWWRrzf7XyEo9N7xsHFibTDrHq8hF8EFbwhngplgZa7wmlTJnUIu+2p8ynoInk7vOiYTVifzSQzpZr6lTv8RSdXIyRoNwfRi+PoNQkOxIBMTF4Rr+Db8jpbYxalowfxZULj/AiAUNAjG2R0JtDRDx8F4t+bRK0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=H7yrnf7s; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="H7yrnf7s" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257831; x=1772793831; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=z9YiSsuR8tZfAE1pEAoxKoDCaDTLLV85kifjv5K9shM=; b=H7yrnf7swa76Y8mTmgKbcl2WMmUP4dg+jwSPbTp9iHmtgE5ih3KKTtGs T8L4Xb7ppFu4mDiBeWfeOPGEV8ZhmtlEjPmo8Hcq9H5MXmNFWpv4VSM7+ bf7PaBhFg6NW45XQelC0RR1FcSqsxOUX+zfffc2U1N3Ce24hJd9PcZJXj FEM+rOqt1/RSh45TJjnrP2ll8D37y10z7N5pT/fiUGx5aIom4niHHj7bg VzXTPQ/KzL6xZ5ujS9d5nmt+dLlG7osLpplXHeC0Gmzgcahzzgf8+TRUJ E2ifDZshDUbZQzEOw/TWyXZp7wMkIEyjZ+8g1Y7/x+LOQ8VG9UpKfldMF Q==; X-CSE-ConnectionGUID: zFMaOhamRyu/IQcdtCfQ7w== X-CSE-MsgGUID: u0Ep6Fg7RyOYPtub0D5jkw== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844491" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844491" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:51 -0800 X-CSE-ConnectionGUID: bDVBgVgHROWoKhh0dM1p4A== X-CSE-MsgGUID: k6+QRdMkSuGrnTewQ2u0Cw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797750" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:49 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Ilan Peer Subject: [PATCH wireless-next 08/15] wifi: mac80211_hwsim: Fix MLD address translation Date: Thu, 6 Mar 2025 12:43:19 +0200 Message-Id: <20250306124057.36bff11d7dae.Ic21592e1b1634653f02b80628cb2152f6e9de367@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Ilan Peer Do address translations only between shared links. It is possible that while an non-AP MLD station and an AP MLD station have shared links, the frame is intended to be sent on a link which is not shared (for example when sending a probe response). Signed-off-by: Ilan Peer Signed-off-by: Miri Korenblit --- drivers/net/wireless/virtual/mac80211_hwsim.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/virtual/mac80211_hwsim.c b/drivers/net/wireless/virtual/mac80211_hwsim.c index d0d9dab7f11f..b426f3bfab28 100644 --- a/drivers/net/wireless/virtual/mac80211_hwsim.c +++ b/drivers/net/wireless/virtual/mac80211_hwsim.c @@ -4,7 +4,7 @@ * Copyright (c) 2008, Jouni Malinen * Copyright (c) 2011, Javier Lopez * Copyright (c) 2016 - 2017 Intel Deutschland GmbH - * Copyright (C) 2018 - 2024 Intel Corporation + * Copyright (C) 2018 - 2025 Intel Corporation */ /* @@ -1983,11 +1983,13 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, return; } - if (sta && sta->mlo) { - if (WARN_ON(!link_sta)) { - ieee80211_free_txskb(hw, skb); - return; - } + /* Do address translations only between shared links. It is + * possible that while an non-AP MLD station and an AP MLD + * station have shared links, the frame is intended to be sent + * on a link which is not shared (for example when sending a + * probe response). + */ + if (sta && sta->mlo && link_sta) { /* address translation to link addresses on TX */ ether_addr_copy(hdr->addr1, link_sta->addr); ether_addr_copy(hdr->addr2, bss_conf->addr); From patchwork Thu Mar 6 10:43:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871506 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 770A12040BF for ; Thu, 6 Mar 2025 10:43:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257834; cv=none; b=Gq4Y7/3MkA151D/HbtHxaoPKjJaDXBwRi2GVw9zCYxwUkAqwF4cX8R8KA/ycfeMwIYfQLwfSZHqOyY3mJD/c4fw1Mkh7/lODTyEsljDnn83wqYn9FXhJ4+LVJpysTHF17M/TOoE00y7LJHZN7lXdycRgXx+S0KD8XlknT1YEYwY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257834; c=relaxed/simple; bh=sqxI0dgpV6+w2QdV7mpm91T6PuW4AuPZjwLURYkgsFg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oaOaHurEmTWVDQ0j1D/wAenB255cfGHjMnfnrqhra6Wk10kWolC4CU9GIMW3Zij3FvzQ4RaCD5vZtwG6uJQM1Qxfx+9ZgYqYh20eTPGI4AAECZNdjO2NNAxgqprruOyl4xmwes4/w19OcL0miHRCf1rx+1+7uCsZhawXh/lKinE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Y/Kgr9I2; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Y/Kgr9I2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257833; x=1772793833; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sqxI0dgpV6+w2QdV7mpm91T6PuW4AuPZjwLURYkgsFg=; b=Y/Kgr9I2WiwIvZvNIt98sOaMxLUPhRUsZBz9PKZx5DyrWQrJJjuaVccy VMbqfv+ok3P52FGhmzIYaHnO7BIOsJkMp6JC9Wy4hR3kOQ+IsaeqoRjCm 3nNHQpi4LSNHRr9kfTqG6jLXAaAA6vKAPpFvG2DAN58JJ7C8dbpKLPq/i eakqmex2zXOlJ194l5+gs5NE2+J7YJyqT7ONiqQ2q20gtp7XZu62HQtXW WYERvlYnzfXnb/YpKqPoThtRWnm6o25LNVSN/z1ZBtD2EX+O7QsOg6Mtu 3efSL9W1qCdnvygpbjqUyMaYHJyBlwyzVuoUtt2q02eCe+O6fALYfl26P Q==; X-CSE-ConnectionGUID: ur21nWv7SnWrFJgzCy5Jcw== X-CSE-MsgGUID: 0YKjaoMGQVuuL3Acb0eCZw== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844494" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844494" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:53 -0800 X-CSE-ConnectionGUID: cx3k//ySQgipcmay2qZgWw== X-CSE-MsgGUID: seHUjJ87SUyGgV1nC5PCsg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797758" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:51 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH wireless-next 09/15] wifi: mac80211: fix userspace_selectors corruption Date: Thu, 6 Mar 2025 12:43:20 +0200 Message-Id: <20250306124057.499f9762afc1.Ibeb8970c82a30c97279a4cc4e68faca5df1813a5@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg Spotted during code review, the selectors need to be large enough for a 128-bit bitmap, not a single unsigned long, otherwise we have stack corruption. We should also allow passing selectors from userspace, but that should be a separate change. Signed-off-by: Johannes Berg Reviewed-by: Ilan Peer Signed-off-by: Miri Korenblit --- net/mac80211/mlme.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 426c0246fe1f..85ae66197674 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -9914,8 +9914,6 @@ EXPORT_SYMBOL(ieee80211_disable_rssi_reports); static void ieee80211_ml_reconf_selectors(unsigned long *userspace_selectors) { - *userspace_selectors = 0; - /* these selectors are mandatory for ML reconfiguration */ set_bit(BSS_MEMBERSHIP_SELECTOR_SAE_H2E, userspace_selectors); set_bit(BSS_MEMBERSHIP_SELECTOR_HE_PHY, userspace_selectors); @@ -9935,7 +9933,7 @@ void ieee80211_process_ml_reconf_resp(struct ieee80211_sub_if_data *sdata, sdata->u.mgd.reconf.removed_links; u16 link_mask, valid_links; unsigned int link_id; - unsigned long userspace_selectors; + unsigned long userspace_selectors[BITS_TO_LONGS(128)] = {}; size_t orig_len = len; u8 i, group_key_data_len; u8 *pos; @@ -10043,7 +10041,7 @@ void ieee80211_process_ml_reconf_resp(struct ieee80211_sub_if_data *sdata, } ieee80211_vif_set_links(sdata, valid_links, sdata->vif.dormant_links); - ieee80211_ml_reconf_selectors(&userspace_selectors); + ieee80211_ml_reconf_selectors(userspace_selectors); link_mask = 0; for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { struct cfg80211_bss *cbss = add_links_data->link[link_id].bss; @@ -10089,7 +10087,7 @@ void ieee80211_process_ml_reconf_resp(struct ieee80211_sub_if_data *sdata, link->u.mgd.conn = add_links_data->link[link_id].conn; if (ieee80211_prep_channel(sdata, link, link_id, cbss, true, &link->u.mgd.conn, - &userspace_selectors)) { + userspace_selectors)) { link_info(link, "mlo: reconf: prep_channel failed\n"); goto disconnect; } @@ -10427,14 +10425,14 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, */ if (added_links) { bool uapsd_supported; - unsigned long userspace_selectors; + unsigned long userspace_selectors[BITS_TO_LONGS(128)] = {}; data = kzalloc(sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; uapsd_supported = true; - ieee80211_ml_reconf_selectors(&userspace_selectors); + ieee80211_ml_reconf_selectors(userspace_selectors); for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { struct ieee80211_supported_band *sband; @@ -10510,7 +10508,7 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, data->link[link_id].bss, true, &data->link[link_id].conn, - &userspace_selectors); + userspace_selectors); if (err) goto err_free; } From patchwork Thu Mar 6 10:43:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871132 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A196520AF77 for ; Thu, 6 Mar 2025 10:43:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257836; cv=none; b=mQdcK3hUKVgvxrUVU7na3Lb+nlU378m4+bj1iVeLR2qAQuMm6LI58V846ntIUKIY7+V8PHHZ2lmDldLED6xdzQww33xni1FM7Hto/m4Wb7X6DPN/6qFs/GrwDMMKhjeap4cR4sELsp73mqdbkaKWFdOndvNsLm7P3OtPwU3VaAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257836; c=relaxed/simple; bh=qNu7cBgx21Jtj0k1YDhalz/PZF88UWia1kyMtsuxMy0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VOnyi5GtJ8EZaUpj1Iwm+mc7zmeHO2Y2lrHkb79Yc/qemBE3lKu0QIcey2Sp4+289DN0j6Ow0MHbJsR84NX0xshJy9XWUYW48/pTKiF2JWuLsNXgEuECBBMyiA7ya2q9Itk/WjvBPJBTmXtd6Aq9vs6l82kBYSXomCbQYRLfuwg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=W1Syc5z6; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="W1Syc5z6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257835; x=1772793835; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qNu7cBgx21Jtj0k1YDhalz/PZF88UWia1kyMtsuxMy0=; b=W1Syc5z6IWCtQ5RFNvhUMd42TGUhnQVH7fs2AySWPtmoVN0IRpI/LGEy TCwODVBnQy+mZXnS2GcN9uHskU4hlXysENOQnGEubUHJq8+wPrYDoDKaw xLn2+PUrcbcxEAdIdqIJ0Ml8DiKXMMlivvxwkpJvipsDW9H/n4joiCJj/ uDoS37LagcJxWZQilkVoCJCtUDdYX02GqyvI5Bh0ZdSrr0qIKDOLk10ag C2ODDW1y5eCgmbPOj8sJ8LmDKPepOHZuQxY465SnWFHY9NlRVFahozEnU uN0fU/aKmeWamACXXuaeeVm6wzfkTPYm6p37NNSqDXNPnFptq0vz1SoqB g==; X-CSE-ConnectionGUID: IswiAmx5Tz6MMgacgHH5Sw== X-CSE-MsgGUID: O+fXaULwQ/2MbS4SPEk7hw== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844499" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844499" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:54 -0800 X-CSE-ConnectionGUID: g3KadxVUTLa8XzTYxAJTNA== X-CSE-MsgGUID: CXd2/C7+QVash/3xSVVT/w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797765" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:52 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH wireless-next 10/15] wifi: mac80211: fix warning on disconnect during failed ML reconf Date: Thu, 6 Mar 2025 12:43:21 +0200 Message-Id: <20250306124057.7275233ffcd2.I599d5ff69092a65e916e2acd25137ae9df8debe8@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg If multi-link reconfiguration fails, we can disconnect with a local link already allocated but the BSS entry not assigned yet, which leads to a warning in cfg80211. Add a check to avoid the warning. Signed-off-by: Johannes Berg Reviewed-by: Ilan Peer Signed-off-by: Miri Korenblit --- net/mac80211/mlme.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 85ae66197674..f3bf66d4ce6a 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -4466,7 +4466,7 @@ static void __ieee80211_disconnect(struct ieee80211_sub_if_data *sdata) struct ieee80211_link_data *link; link = sdata_dereference(sdata->link[link_id], sdata); - if (!link) + if (!link || !link->conf->bss) continue; cfg80211_unlink_bss(local->hw.wiphy, link->conf->bss); link->conf->bss = NULL; From patchwork Thu Mar 6 10:43:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871131 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E99CA20AF9B for ; Thu, 6 Mar 2025 10:43:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257839; cv=none; b=FIrFog1o5JlbrpBuj/9e2y3hy+gmy3x/7HtHydQSWYJ+Z6BgBW59O+ZTTzuHBGdP1znFwhd1DbZf6LcOeJnqkDQM7o2p/8scARewF9tUXn2GE/EkMf2MrJ6+naPN2tD4bLmkdDGXzpf0vJjzn+A7zKUExmZJK9aGCi2WBrVO7nM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257839; c=relaxed/simple; bh=zKodz0hKk/Ug/8bZRVtOH5ADH9qO7VyFvVqWi8zrCh8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LQIYtdeAESt1NJoX1d7LDfg4d1TamIxUjlBZg+U8XqwxR4bcJBp8Wx4EsaBlJ+WNUI0P7BcpsiUd5CHpBrTqov3Re7aYtio/zcK6QrlIn6W7Ii0RftK16X4/iUgAiO1GFALmZc3IUn8t2o0l28SIHyYN8S4eg8VPWXrpGOVeFMw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=cUpo/Ds4; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="cUpo/Ds4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257837; x=1772793837; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zKodz0hKk/Ug/8bZRVtOH5ADH9qO7VyFvVqWi8zrCh8=; b=cUpo/Ds4dyz4dfSEf2pOVbq9fbXraCIL3uX5dT6aVJ+v4Puv5xIfX/h7 ykaHWX6e7pRq/pS+nkzixqwbuMkj/srU4ReY0rjXDjk/OvuxkN5PuhJN2 k6r59dU2i7HSw69/PQdkU0c0HbD+BFVbNLUdOxIERDDN9CrMoEUl/0hvF tUMylcXqB0QC9c4PsKRq6b7IhjlHbNtOcDRBLSpOV6GtGQGy690byS9Cv vxF3hTSeIR/fIou7maFGYIq+cNxl2aEvothwWx7WDKt53Vu6PRZB6y7cc k8b5Yl45k6aclj2Ro6eo5M3jDU8m5wljnkhV5fpUbddreqxRTbvekNtJI Q==; X-CSE-ConnectionGUID: 0jOjyai2Si6Ojn16u6KmXg== X-CSE-MsgGUID: DwXd523kQWuDSaHLwLs9cQ== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844504" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844504" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:56 -0800 X-CSE-ConnectionGUID: dFcas984Qga1/fVb7yXNXQ== X-CSE-MsgGUID: OX6/7WwrSMOz/Z8ajvop5w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797772" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:54 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Ilan Peer Subject: [PATCH wireless-next 11/15] wifi: cfg80211: Update the link address when a link is added Date: Thu, 6 Mar 2025 12:43:22 +0200 Message-Id: <20250306124057.6ae37b21922b.I79b010ea9aab47893e4f22c266362fde30b7f9ac@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Ilan Peer When links are added, update the wireless device link addresses based on the information provided by the driver. Signed-off-by: Ilan Peer Signed-off-by: Miri Korenblit --- include/net/cfg80211.h | 1 + net/wireless/mlme.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 6f76059c0aa5..558dc88b9f07 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -9771,6 +9771,7 @@ struct cfg80211_mlo_reconf_done_data { u16 added_links; struct { struct cfg80211_bss *bss; + u8 *addr; } links[IEEE80211_MLD_MAX_NUM_LINKS]; }; diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 956d33b219df..05d44a443518 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c @@ -1360,6 +1360,10 @@ void cfg80211_mlo_reconf_add_done(struct net_device *dev, if (data->added_links & BIT(link_id)) { wdev->links[link_id].client.current_bss = bss_from_pub(bss); + + memcpy(wdev->links[link_id].addr, + data->links[link_id].addr, + ETH_ALEN); } else { cfg80211_unhold_bss(bss_from_pub(bss)); cfg80211_put_bss(wiphy, bss); From patchwork Thu Mar 6 10:43:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871505 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 109AF20B1E2 for ; Thu, 6 Mar 2025 10:43:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257838; cv=none; b=PjqJYITkPJYV6C7N80MgdX70xaV7tP7XioSiUtvFdowEpXyfv0AxUe+qmIWef42tEShsTbU9f5kOkhCgWaWgDCL5wK/jqfA3586YiRCQkKX710nVultM8Qd0uU2+CWfroiLGWVs2/lyW0z6iE0qoYVTafHEYUpuGMoYOIWLVHB8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257838; c=relaxed/simple; bh=gsIIy478v8/6nY9cvDyZuNEbjerd5nropVjWreVv+qI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=h6aI3Gg51Rhx4nYtoOfjvrfYEArjUVbpWVK4mz5s709BJCBTRkFrA19HOeu2/ZOk05Bx+CkSsrO8UXvqkQV1pzJP5evNU91FV1KkFF9qLnwqP7jO6LeSahXgjz/5CtpO2pnoTm/qpaNXpElkmxrXArJOi1h/Qbt/VBr+tkJmByE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=YZHN5cIP; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="YZHN5cIP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257837; x=1772793837; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gsIIy478v8/6nY9cvDyZuNEbjerd5nropVjWreVv+qI=; b=YZHN5cIPyuHU+WxxKg7qTdo8/bxgjDCpGiCaRVAPDD197H5Uk1hlvx27 QYuTsAN8TN6uwR+kkgJjCxKwA4/903x+0zD6qElBuXhvvFsx5A4/7lSmd 2JQm1cH1gbr7wpcVRj4ryjsVTwt2u9uG8DNc84lq/RTY6xoHzSk+3ZGju U9P38PmFEyHpHo99DSB3Ml+xj4IOeTnXA2DLKrEXlvtADsPYtbSos3TVG eQKI4xQqyV6rxVaDTnimnuuzJwDrxKenOckYnaKUcke+wgszaYQhoOlKK 56mwBFxEsLLEkvHqLyCwjyTjTWAdchCwoTjQkC+7Rza5OqJ5GiWPIv5DK A==; X-CSE-ConnectionGUID: DnSHaI/jSo6Z7AflAEJLrQ== X-CSE-MsgGUID: e3h2Q+ZOSlKjenuPsWeKlg== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844513" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844513" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:57 -0800 X-CSE-ConnectionGUID: froFF3XWRZqEV4URd5UnLA== X-CSE-MsgGUID: bH6caF1iTTuQpotNAQYs6w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797777" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:56 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Ilan Peer Subject: [PATCH wireless-next 12/15] wifi: mac80211: Notify cfg80211 about added link addresses Date: Thu, 6 Mar 2025 12:43:23 +0200 Message-Id: <20250306124057.f686a1690c92.I2aa16801f07321a580dd7dce4a074a3486f627f1@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Ilan Peer When ML reconfiguration is done and new links are added, update cfg80211 with the addresses of the newly added links. Signed-off-by: Ilan Peer Signed-off-by: Miri Korenblit --- net/mac80211/mlme.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index f3bf66d4ce6a..60a585caa96d 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -10135,8 +10135,11 @@ void ieee80211_process_ml_reconf_resp(struct ieee80211_sub_if_data *sdata, done_data.len = orig_len; done_data.added_links = link_mask; - for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) + for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { done_data.links[link_id].bss = add_links_data->link[link_id].bss; + done_data.links[link_id].addr = + add_links_data->link[link_id].addr; + } cfg80211_mlo_reconf_add_done(sdata->dev, &done_data); kfree(sdata->u.mgd.reconf.add_links_data); From patchwork Thu Mar 6 10:43:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871504 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B29DC20AF77 for ; Thu, 6 Mar 2025 10:43:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257840; cv=none; b=aBipzwN798dSDF2Oy+of+3H27wDe1IwZKujownJvDlvDKe+itYL28YaZgbY03PovLZM60ESdhqp7irhniqkDM2eDqotfCfj2QRtbTV5DHKk/tUgG0cROLfiZNyYnQ7V+WV8sVrNRPgbwTyHmyC2RriYY6NYqyK1LTarqSogZi4s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257840; c=relaxed/simple; bh=Mozn9GM8A5OO8wzQLG5biURyg82peQ/rG6dUuKHg38Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ojwdVPtsp/1fm4+v5BcnqRs1ZVEbbQYi9aYXaBtxJIe05HRnrjx6pzZKLIzIGqlTpish9ICszJRx+RaMg2+jlc5y7PwWzDUuymOGwZ8/1xtQPLe4oU2wlWNkOGJtcNc1LwAFJrSjQbfiQ4FG7BeVT9iGjKCInExo63cTsnnzxYE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=AeBckitk; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="AeBckitk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257839; x=1772793839; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Mozn9GM8A5OO8wzQLG5biURyg82peQ/rG6dUuKHg38Q=; b=AeBckitkEwrKS/DLAtuWo7txDRevD91Hs5mRYl4eZHtlboZYIZ9GLdNh RIRfETUucTzh+8+k7AuAAsIZoX5+jtCc0Cq5sgDs1dFHxUWhdymg2cwKp Gs1YzcDHbbnz7376L6VtcO0JtdcpqatpINuQilGDZAmkvwoNhwUutzVPB T/QVSaLWfhidbW26DmKlpu1qcKIK6QFRch8I/c1Vf9J/1894gTfBL4Vnb M3wgbNiH1LCOP3VsOO1flFvYbEli2iCm/3xYzUilQ5xktlN8oMcTbskOb EUt7YJS2+Y5ItAgipgaVQadQtJYuyuUeqcFr+H6o7lJ1RDkLF1B7z2+Sr A==; X-CSE-ConnectionGUID: YiIN3S+/S4ufHLKa8TXmJQ== X-CSE-MsgGUID: T+BHHBPATZqZB7wIcYdyPQ== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844519" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844519" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:59 -0800 X-CSE-ConnectionGUID: wL8lFn4PSuq82CtkeQQalQ== X-CSE-MsgGUID: pCVzOqqMRpO7DPUFrI1Prw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797780" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:57 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH wireless-next 13/15] wifi: mac80211: fix ML reconf reset in disconnect Date: Thu, 6 Mar 2025 12:43:24 +0200 Message-Id: <20250306124057.0f4758d60066.I7e6b35731ded94fc2d68a2d4ecf81873712c268e@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg If disconnecting while ML reconfiguration is in progress, the data isn't freed because the reset call is too late, after the vif already switches to non-MLD. Move the call to fix that. Signed-off-by: Johannes Berg Reviewed-by: Ilan Peer Signed-off-by: Miri Korenblit --- net/mac80211/mlme.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 60a585caa96d..9c4d4f04b23e 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -4152,16 +4152,16 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, wiphy_work_cancel(sdata->local->hw.wiphy, &ifmgd->teardown_ttlm_work); - ieee80211_vif_set_links(sdata, 0, 0); - - ifmgd->mcast_seq_last = IEEE80211_SN_MODULO; - /* if disconnection happens in the middle of the ML reconfiguration * flow, cfg80211 must called to release the BSS references obtained * when the flow started. */ ieee80211_ml_reconf_reset(sdata); + ieee80211_vif_set_links(sdata, 0, 0); + + ifmgd->mcast_seq_last = IEEE80211_SN_MODULO; + ifmgd->epcs.enabled = false; ifmgd->epcs.dialog_token = 0; } From patchwork Thu Mar 6 10:43:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871130 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9AB3120B1F3 for ; Thu, 6 Mar 2025 10:44:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257842; cv=none; b=IVUfn+GSO1CmiEmuz6Bxd2oH/6OMPdp7TDJsvaDau9W+wDYP71MBaIdeH2k72UrEZP5hnwV75XBvV3DmOlJLBV/rJQz1uLtemNeMEurqcsr1ZlZCbdfO+iISXVgFaPqJkuopG9+/9fcMDr9ZfRx+m1mVQZL4RF7WiycqOHrdoqU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257842; c=relaxed/simple; bh=APQUsvv8NJyGFNs7j/q6znNhdgDoGWngVOpacJWZix4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Cn1OyruPn/5K0wznaVoPuOTrcJzQOiLQupAKUY6DfXVFBIu9QiLbar8eQZRZo7P433ZquGZOhfLEHb4LziEZ4qz8hB7XzHCll3N7ugO0ixblPTvaBRcZyQK+JpthS+dCKtib1AzOkHLydyDDLEs3ru6ifSdY8AkJoIQzT1VXO1o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=C8RfySyn; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="C8RfySyn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257841; x=1772793841; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=APQUsvv8NJyGFNs7j/q6znNhdgDoGWngVOpacJWZix4=; b=C8RfySynyxzTwqddbxV//9waj6fgxjnPJgQYFkl0SwGSvfZWBQfQY/aR 41GATqqS/LF2IjsVJ4jnWuEKMpItZ8c/E43lSYflMD81AVNwWm0rJx3bq W7NJGTASJOreQ2Y0Kom8S2APQ6Fzla7Ydc1t6aiLOD+Joh305GiFHsw6Y YII/kfv/c829g7aUaIk/4i78G9rZ7OrH3yO47URM0m+y4XndMRhMrWNb+ tQyHSRDbUwzYkaD6jNidNXXAIi8u0aTFECpJNiFYt/aXXBMBSeyPR0wSo ToSl5BQAlGqo0HqUplYVLLPJwJbrncBVcuMD5NlhI7+7JoW7DUtM/goGM A==; X-CSE-ConnectionGUID: P5UX7jRhRl+rJx4RhBnxEQ== X-CSE-MsgGUID: 5E9loJXGRNWUEqmIUhutjA== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844521" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844521" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:44:01 -0800 X-CSE-ConnectionGUID: nJ+K3MopSd6WEylU9nURkw== X-CSE-MsgGUID: KA+U8Nl8T5K4JeusgTeZfA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797786" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:43:59 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH wireless-next 14/15] wifi: mac80211: don't include MLE in ML reconf per-STA profile Date: Thu, 6 Mar 2025 12:43:25 +0200 Message-Id: <20250306124057.7191c2a0dc6d.I3472cd5c347814ee3600869a88488997bcd43224@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg In the multi-link reconfiguration frame, the per-STA profile for added links shouldn't include the multi-link element. Set the association ID to an invalid value, so it doesn't erroneously match the link ID if that happens to be zero. Signed-off-by: Johannes Berg Reviewed-by: Ilan Peer Signed-off-by: Miri Korenblit --- net/mac80211/ieee80211_i.h | 2 +- net/mac80211/mlme.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index a36563a07b3b..217e949bb756 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -460,7 +460,7 @@ struct ieee80211_mgd_assoc_data { bool s1g; bool spp_amsdu; - unsigned int assoc_link_id; + s8 assoc_link_id; __le16 ext_mld_capa_ops; diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 9c4d4f04b23e..94d9d9ca42fe 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -10434,6 +10434,8 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, if (!data) return -ENOMEM; + data->assoc_link_id = -1; + uapsd_supported = true; ieee80211_ml_reconf_selectors(userspace_selectors); for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; From patchwork Thu Mar 6 10:43:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871503 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19C64207DE2 for ; Thu, 6 Mar 2025 10:44:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257843; cv=none; b=EBS3PsUPuAPDOgXRmiWxLKGvUZ6j80xgecZp8j17D/QrdvOnwAb/z3gfEHrUh5yx68mLJO8m9kc3C9vOA6xgnuPmQubLioAth3Kf4NP0owwGsfdp8A7BzUQ5qamgiVuwKOFYmpkzlBfzLLWN4PGoVIg+vpgbxDPLfp6yK5LBYdU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741257843; c=relaxed/simple; bh=rcmeEKUl0grt5NqQFQ066GwHAD1piFf/75GVuUnDpDI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=afiw6P1nb6IFVar12YObwLBYsQPpTIWGoR4n4u1K9vcRqIP9kP3EfhjhFFOK0swsovZ46Ybk3e+Yux2V72ApVe+RklCeXbRp5UAEF0MUY4ly4lMxr9uzUDH94igeroig2RiaLZ6tF1QogpJjsQ5hEv8NRxhP3iRp8A6D/sDfy/o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=CtsNgFwK; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="CtsNgFwK" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741257842; x=1772793842; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rcmeEKUl0grt5NqQFQ066GwHAD1piFf/75GVuUnDpDI=; b=CtsNgFwKUggoPTdaUwq9Hs9lpRY1LmXU13utxDKXEW8rdbJ8/YhBF0br H08KX7zjhfwm6oC51i5Bu330SJBn1VJzXoMllnFw9N2vqXD5ZVKQbeiBm daOzKgVz11g+nOb5K7u7K82msfizLsb/a9S0ovlA1YAG6I1VqTMjryQaW FX9hT5HYTf3Z2J6IFZ8vfn0pot3zEykTWxnoaIPmANi1JypIAx/9XKCVB 0YqR1fRnkt4c7lVrUIeAwDFsGp+8lLWCYv5QXWdN3WpqCIaurQh+BXivD PBkWbHe5MoXk3+Wlj7DBzqsMCnpNTBaC/2G2JgkvbfPmcBK62Fmfm4zR2 A==; X-CSE-ConnectionGUID: PuSxc7ATSQSj7bes/Y7qig== X-CSE-MsgGUID: nqjkTic4RreEFd8P1ottPw== X-IronPort-AV: E=McAfee;i="6700,10204,11363"; a="29844524" X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="29844524" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:44:02 -0800 X-CSE-ConnectionGUID: hnrAqSpNTgCuZyi9LrmwRw== X-CSE-MsgGUID: /0tSTrmhSN2Newe66c511g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,225,1736841600"; d="scan'208";a="118797792" Received: from weis0040.iil.intel.com ([10.12.217.108]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Mar 2025 02:44:00 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH wireless-next 15/15] wifi: mac80211: set WMM in ML reconfiguration Date: Thu, 6 Mar 2025 12:43:26 +0200 Message-Id: <20250306124057.2b473bffdbcb.I362c3101d3f523a8db37c16cd7b5f573d76a36e6@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> References: <20250306104326.4105722-1-miriam.rachel.korenblit@intel.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Israel (74) Limited From: Johannes Berg In the per-STA profiles for added links in multi-link reconfiguration the WMM element should be included. Fix that. dfjhds Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit --- net/mac80211/mlme.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 94d9d9ca42fe..bfd3653a5b84 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -10435,6 +10435,7 @@ int ieee80211_mgd_assoc_ml_reconf(struct ieee80211_sub_if_data *sdata, return -ENOMEM; data->assoc_link_id = -1; + data->wmm = true; uapsd_supported = true; ieee80211_ml_reconf_selectors(userspace_selectors);