From patchwork Sat Mar 8 21:03:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872154 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 4A2C91A4F2F for ; Sat, 8 Mar 2025 21:06:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467975; cv=none; b=JETTru33s0D/gBgYc6w3Tbu3UfCUPb4Ra1Yov80tgqKOClaVNuNa+AEVam4eVCkkE44u23ZLPAY5h6HcRZVJfG3GHHTVzSmmJlLb9tNzU0AEceW9YxyA6B5l+LXHXt2b9x03NtUttsY1T5Al8TzvFJ49CT5ASuE4f3WG2wbHMR8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467975; c=relaxed/simple; bh=jGTy91gK9JsTeafUyT/9UlFPcjJsfYuybb131InUjxc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OwvDj5GLnWPBsemxQCpHc/mNNaAvXrR/COtfYaJ8cYve73p+4jn9wX1Yqp6AdTQ58hcWKEM/cyzHISG/1uDP7RZFERN7QElWiQXHvrPwWp1mLvTufgLIiZj3g8tDdaOuivYklnciASEhrvrFCHoyl9MO97t/hyCjE9zhkfLoWvs= 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=Cb3ih/gA; arc=none smtp.client-ip=198.175.65.21 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="Cb3ih/gA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741467974; x=1773003974; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jGTy91gK9JsTeafUyT/9UlFPcjJsfYuybb131InUjxc=; b=Cb3ih/gAs6dINK9NTelVFjqJv/jZPcj4/21MXtmgW1q70hn7YSAA7tx0 CtV1xxF9bUMVu8oP2+sdIAemthWPOcoPkLqxzWSLeYsYEnN9c64fCYv5E OFnY+aMKuDDmX7sSRJK+MYjpaLKI1955LI/GMyjKfW38YdRWAGbr0GyYn Xp1pfThig5R3EYuegE0End2gMz13yzke6pehkPGOaBUQAhLc+Xm5V1ezg qKkiBPRt6aBUr0MQ8IFVu+MbmAWYOlfSetCYYkslyzTwutp/k04HZ3G1/ i10aoAPuYeq2MuyQQbfNyalWXuH8sI+w2kWZst4sudn9jp8yw87kpsgAU g==; X-CSE-ConnectionGUID: CEqFeWM2SVOp8UlDqgYUYw== X-CSE-MsgGUID: gQ0blwFGQNqwa5Ilu431jw== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413018" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413018" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:03:55 -0800 X-CSE-ConnectionGUID: J/ZPFi3ISMWe1hYRa0NuQg== X-CSE-MsgGUID: UOeAlYXyROKhLBXeU+hD1A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644353" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:03:54 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH RESEND wireless-next 01/15] wifi: cfg80211: move link reconfig parameters into a struct Date: Sat, 8 Mar 2025 23:03:27 +0200 Message-Id: <20250308225541.0cf299c1fdd0.Id1a3b1092dc52d0d3731a8798522fdf2e052bf0b@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871864 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 189A2374FF for ; Sat, 8 Mar 2025 21:06:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467984; cv=none; b=eYY0AHqLvaH7D8dwDTf8Lqi/FOP7wzSK7oVh+uhRDZrfo0glXJje7ayqKHPq1zcMS3X8FVWw37IgA9xd3gB5+503RRGPVLO5O9PNlRROSpHDcwQme9Qd08jBB2wGtoxttX5/g0kyuaaYtE/ync0CrnKZeokpvlcehEpZdORWJQQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467984; c=relaxed/simple; bh=f3/dVoJrP7n351BUZdWxgBeW1BIdQN/cWOTkROPjs+U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=i6b4pp51m6ps8RLWTnDX4f18/TbrgkYoftOLWFQSEEUicfqovZYNKpnP4RUYNHvktIYu+KxlVggQllqC1yPGU40LhJ09f6xgTLk1bnvVObOz6rTqbiLSnA5W65iKXYBujbCvXbKGTg2iomxhSs64cYWCFDIb5f5N/ALk9/NTJmk= 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=Pi8Dscig; arc=none smtp.client-ip=198.175.65.21 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="Pi8Dscig" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741467982; x=1773003982; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=f3/dVoJrP7n351BUZdWxgBeW1BIdQN/cWOTkROPjs+U=; b=Pi8Dscigeq2EIMiq7rN3bvupJt35/A6YE8Y5ZNhIY8xdgo2pcihVVR3a WTII29tZgGIRKQ3jdHZ1ofTeKIt53sw0lo33ENjHjmp5U0AiTHYmOUpif zGmnMea7Cd57Qw92CRLH5wgoZfVSfRNztVDtnPq2pynLAI8aG7u6DozJ0 L1tRU8oIGm3dLuMpX5e2M29DbNDpU4RuUIfWhH7pKX4VrpHzlyiiyLVnH JLBve2VozdCWRXhGIAU8u4gDsEr5yvnN01nqI2ksnaecNsvUyZE04fhTb aK0aloNpMAAOuuHmKeI+vCVUmfkf7zVXVOsXu+c3a8aOb/CpzxNO3dw8B g==; X-CSE-ConnectionGUID: HqVe5VCnQpm2DfRpy5/U3Q== X-CSE-MsgGUID: z9lgGxZ6QyGVYo+CTifLUQ== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413025" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413025" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:03:57 -0800 X-CSE-ConnectionGUID: ud0GzQibSbeKGgkFNCgTLw== X-CSE-MsgGUID: 6lbN/PLKSJ+MtvHMWk5e9A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644357" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:03:55 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH RESEND wireless-next 02/15] wifi: cfg80211: allow setting extended MLD capa/ops Date: Sat, 8 Mar 2025 23:03:28 +0200 Message-Id: <20250308225541.bd52078b5f65.I4dd8f53b0030db7ea87a2e0920989e7e2c7b5345@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872153 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 A67E41EDA00 for ; Sat, 8 Mar 2025 21:06:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467987; cv=none; b=o15EgVUuNyNT7gdGk/vXulIudsfFVlG4GP1qea5pZkOWAbehHgFwx8rulREJKrMzfI389xcCXtNWaUUruuTkFLlCjkyDwnLatvNBN1NI6G6Fx/hAzupmgrC6h37AMczoA8QQ7/o+GVYRA5RuEvj1kYLxgLCK+ouBUbLkuGeAsDI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467987; c=relaxed/simple; bh=kdBYZdaB8/26drJFity98xmPQnxsQqiq068PnVbHqac=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FUQyagchgAtLQcBpkRcjGNxzRU3RKcgh35zQw4yvK5RF9ltHxoXM9mmhUBk4hA4RB6rTK3qWG0TZBxaA/ZAGzZaEvDNSIZt+qmsKmGwp1+uLLF8RjAWj9xBSp2vDFEA3CO6D79L5q5Fm5hFkJI3ooLpT5MUbfxPIPgCMPCaMfcU= 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=lUKo3vLb; arc=none smtp.client-ip=198.175.65.21 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="lUKo3vLb" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741467986; x=1773003986; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kdBYZdaB8/26drJFity98xmPQnxsQqiq068PnVbHqac=; b=lUKo3vLbSWmKXvH5hMNSce2aPLjpa61fSwBiU7yzxo41NZSXk4CBFgMJ FKD9AyZrYDdvxBRYxvZVRAFK9RG56o2fECSb0/O3AFB4Ghm5i6LAcflZr 7k+gem/JGCi1GTSC0+4UGMu3sjpBpJ4qK5huVpI9A5qSOEnx+6b8hi3mz NfIjuJsWYNXn7SWJJ7mE4TP+AhiVJ438uHYRXxZ09EYx/YZTpYAce03/u Lfrohe6QbBRkjvdaGZ46SE4smP8pikpgufGxIjzJNeKeL6G+P/0mabeQD O95pgkeBcRon/YuzWncMtpDpOgNowD8SO2dyOXGr4t4EWS17HykY5SnWM A==; X-CSE-ConnectionGUID: N1IAg9ASSjK7dPJmv/GIqg== X-CSE-MsgGUID: KQvsV4S1TxiQDbM9xjOxXA== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413041" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413041" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:03:58 -0800 X-CSE-ConnectionGUID: gEAuHhTMTb+XsM3Motn7Jg== X-CSE-MsgGUID: Drkt7a3KTtePDZShnLPWTw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644361" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:03:57 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH RESEND wireless-next 03/15] wifi: mac80211: mlme: support extended MLD capa/ops in assoc Date: Sat, 8 Mar 2025 23:03:29 +0200 Message-Id: <20250308225541.2e555beb0a76.I623f59023b47ec202fc0c7520f2b5f575b439927@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872152 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 11CFC1F5855 for ; Sat, 8 Mar 2025 21:06:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467991; cv=none; b=mlo6+iWwKQOriUenq25IJg2WPhtp2xfjocK8YecdOqU+PDfuWRrQ9H4eUsdVtvgWviB+fe/JFjmLAiGGNkyG3n9NN0WXaK70Emaq/ZpXs767rfTGd7Kle6tyKzN5cLI/vKku4/oqsMXkAxznYKXm9EZ1kMo/IQbRLt5JK/Clbn4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467991; c=relaxed/simple; bh=kV8ByCW6K5X2ZXVPep4O8twqq18glwwBKDg6P0NDwrI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aqShivfuOr6Dp8Bl24Lkgp3EuSW7WqF7CvhWxf3vZdO22bDCz32j/fFQImC/nL3O61ct/Hf6gF+14nbSYnGZOwgyQK0wFEJhjqud/DkSLAdkAbXldoRoBV2SrVZDKhp4JBSpvgrNc1U6tqVlhTDBOToWKOqbCNz3hmRa7v3l3us= 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=Iux4Mr1M; arc=none smtp.client-ip=198.175.65.21 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="Iux4Mr1M" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741467989; x=1773003989; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kV8ByCW6K5X2ZXVPep4O8twqq18glwwBKDg6P0NDwrI=; b=Iux4Mr1MpCA+cJuEGsQB4ozvbi/K1kGBdR4q/tUg3+3tKZfPvCRVbQR9 lMXKL2xS51w+kc/rTF0woKsKpyd16XlHQOcTA74qfSTC565pgqx72iNXl uhguS5Twdc8JeweJVPkTN4U+ivcpxrH/YxOU4o3b808vzMrEYULNDVc00 WlYEBWHXH0u+GqBqXmCPGKsRJOctIkenQOnhw669XRx4HHN6OEManMJlE 3EywFZMyhe9bKsMtbashNo4YdjPEv8nrvQCMLmBUDbFoc/pnwRO/0Wf3y ge0YV/ulHVuNxH2D0VrF2XhFlHiUoqQ6KKUbeoozuk+Je4s+xirYOU71k g==; X-CSE-ConnectionGUID: irxRDn2dQSab9JBfi05zMw== X-CSE-MsgGUID: psyGKCRZSd23qrl4/jvIbQ== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413043" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413043" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:00 -0800 X-CSE-ConnectionGUID: PnChQJW4Rr2W3Sp4aKYiQQ== X-CSE-MsgGUID: /4mXbObaRRSByjiV5/YFpQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644365" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:03:58 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Anjaneyulu , Somashekhar Puttagangaiah Subject: [PATCH RESEND wireless-next 04/15] wifi: cfg80211: allow IR in 20 MHz configurations Date: Sat, 8 Mar 2025 23:03:30 +0200 Message-Id: <20250308225541.d3ab352a73ff.I8a8f79e1c9eb74936929463960ee2a324712fe51@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Some regulatory bodies doesn't allow IR (initiate radioation) on a specific subband, but allows it for channels with a bandwidth of 20 MHz. Add a channel flag that indicates that, and consider it in cfg80211_reg_check_beaconing. While on it, fix the kernel doc of enum nl80211_reg_rule_flags and change it to use BIT(). Signed-off-by: Anjaneyulu Co-developed-by: Somashekhar Puttagangaiah Signed-off-by: Somashekhar Puttagangaiah Signed-off-by: Miri Korenblit --- include/net/cfg80211.h | 3 +++ include/uapi/linux/nl80211.h | 52 ++++++++++++++++++++---------------- net/wireless/chan.c | 8 +++++- net/wireless/nl80211.c | 4 +++ net/wireless/reg.c | 4 ++- 5 files changed, 46 insertions(+), 25 deletions(-) --- v3: changed 'Soft AP' and 'active scan' to 'activity', added S-O-B after Co-developed-by, and fixed the S-O-B to match the 'from' diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 29b9cf0fe6c8..0d423830a8ed 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -127,6 +127,8 @@ 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 activity on a 20 MHz channel, + * even if otherwise set to NO_IR. */ enum ieee80211_channel_flags { IEEE80211_CHAN_DISABLED = BIT(0), @@ -155,6 +157,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..95287289b3b4 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 acitve in + * 20 MHz 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 activity in 20 MHz 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 Sat Mar 8 21:03:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871863 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 0A2B9374FF for ; Sat, 8 Mar 2025 21:06:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467990; cv=none; b=Ll/tKz0rkEtaISVzyo9DHq76XupVOT+Jbr+5jYwpwlvhATGxYfy4tiJHfKait7VhIMNkFw4PMetpZ9c+2H8jYQc4papVJeYUXewj/7S6UK1TUBC64QJsGAFHMk0yiuuk5gRpw36wOY8vAJV+jw3qsuj73sRHjXP2EGPL798/VMk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467990; c=relaxed/simple; bh=s94LcA9sw7TLrMkJh5mCQaXdgRMBn6WyiEpLoQBX5DI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LSlkIYw+lAe379Oi/rYH1N4rtyAYzoDeR2XtzGgESVXhzL43vBfC+JyV8UWbMAMzXvVSb838DS3xNruR/6YaVde6n9psS9lWWLy7L3dG3PloDSb799KZQPVORHNetIy9SzN2oLPllKpau8ktU608mXxYfBqyGel1XulpqfWIi7U= 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=mcD4WDiT; arc=none smtp.client-ip=198.175.65.21 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="mcD4WDiT" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741467989; x=1773003989; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=s94LcA9sw7TLrMkJh5mCQaXdgRMBn6WyiEpLoQBX5DI=; b=mcD4WDiTGfN1e2elFwFXe85d+mwm9wIq+Uwe6r91y7B3xRQYW4GbDnrn 4JrVfYGUsU1k8cRoh3Cw6lXvdpo/nYheIUWhD1W3etYesCj3oIonOhW46 Sb+N/r6k++1s1C+1U2t+MF7qOfKxVnnQOEIZXMdujWq5MdeCg2UGGS79F kmcPRyHNIIh87nV5eOKqV5EyJRRfr/xiwIUaKysjqYNONLZgVsP9oydbA 9GTaoeAD4BlZVKmY/lA8mnZRPyxv2IKf+y/7kMBronRKCn0sQyNirCKTw vCxb50mawi9UPknryLlrUqdEMS0rHhCRR4e/N1HmbTLbEMt6ZrmqtxFqm w==; X-CSE-ConnectionGUID: MJedEzBURdOrdwacfXk+tA== X-CSE-MsgGUID: d6+gzIf3RmC1oO1tpXakNg== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413059" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413059" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:01 -0800 X-CSE-ConnectionGUID: 4mPAFaCpRvWrouUF3vY/Gw== X-CSE-MsgGUID: HjXvuOtGT62HqGpY85eO3g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644369" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:00 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH RESEND wireless-next 05/15] wifi: mac80211: fix U-APSD check in ML reconfiguration Date: Sat, 8 Mar 2025 23:03:31 +0200 Message-Id: <20250308225541.b4674be12a38.I01959e448c6a2a3e8bc5d561bbae9e8d2cca616a@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871862 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 593C81A4E9D for ; Sat, 8 Mar 2025 21:06:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467998; cv=none; b=eYB/NqrQYE84BtildWL5O8J+h05BZ+xtQuNAjvHL3Fb2nXTPjRnRjG3f2hq2UPE20Mxu2mwd6ZfBX9hCeOv8RuES+fGDqKXykmvCKY//JA8pdnwUqz0HF6Ulw2XSqk5at8Ce5h/cc7bXEwtxLPrUVHzzb0Oi50/RB9U9DFzponA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741467998; c=relaxed/simple; bh=nNDNwW2ZN1Qp/TQmf5OAJQWk2mHc8zN7tz9Fxb4t+Q4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=U04mIPpvMbNojAEunGkWKVIh8TzGEJ00FmdZU4cFvdUmlge95k9K3eUCOuR5OJYehYODaPSpKWT26A4snKSTGv2UYdJ3Fm68RSDXJFdRrq40dTlvGgM+X/Zb+cjKKCqGTncP6nyBC/Be0H5W/VYTwj78yRmwsdKtyhmFoE5CfWc= 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=azE0hwlu; arc=none smtp.client-ip=198.175.65.21 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="azE0hwlu" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741467997; x=1773003997; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nNDNwW2ZN1Qp/TQmf5OAJQWk2mHc8zN7tz9Fxb4t+Q4=; b=azE0hwlu9oZJ4H4eJa6Eh+FGxW4fup04xDgikas/CtEAs0Llf5ncy7yf xx16jA/2qzILmzo2WrfQUkIouoWT5Tzr3bctWInNXsf76hZ/QycZLbqfw Z6Gua5C8Z7UGQqr2PEmIUBuf9rwyuZzZumxL7siKNvYdXt6WNVuEgZUE7 dZQvHFCW1PnG0dT1+Zx0JFbh1fTqUXVlqV6XCIGMYPUMMiVVi4Wk79+de GbkRzVt71AgD9+leutS6GfjSysxS/sWvfFXmXjTKJJEGyNKgJ5Gifd1z4 c8H3GI4bUZoKgGkdWyBe5yo4WUdSNImpANpNL11Ciu+qmXk09IJRAWAYg Q==; X-CSE-ConnectionGUID: SAH+7BpDTd+0UjnsyuSGVg== X-CSE-MsgGUID: AuzQ46sFSguZyW3JnoAgAg== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413065" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413065" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:03 -0800 X-CSE-ConnectionGUID: lMAH/DYNSBGQABUCVIxNog== X-CSE-MsgGUID: 1JqiwWZGRwaV0innl5nbmw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644375" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:02 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH RESEND wireless-next 06/15] wifi: cfg80211: improve supported_selector documentation Date: Sat, 8 Mar 2025 23:03:32 +0200 Message-Id: <20250308225541.ba402ff47314.I502b56111b62ea0be174ae76bd03684ae1d4aefb@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 0d423830a8ed..c61894c1265a 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -3148,10 +3148,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 95287289b3b4..a945ad223cfd 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 Std 802.11-2020 9.4.2.3 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 Sat Mar 8 21:03:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872151 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 CE8081EFF86 for ; Sat, 8 Mar 2025 21:06:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468001; cv=none; b=o7XIoYxo09nXNTqPr9Emv4QQmOHNLl5/bcjyu11MHXTh0Zvu38/oTPjuroTB1fr80hMctSW9B4rCuWXoatDEBaTPbInAodqSGIsdcj/0XR+jcSfT/58nxuz7QQTsn7NPBwh1R0UrxAlfXtPW2fNlDmCCIGXvYj77Dbw7ONOJcbk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468001; c=relaxed/simple; bh=DYcltVUMLF4xMeT3uxSDwG6lZLJOWpkDsyW4wL2ahME=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JetjeWXhay4qG5C4Ez8ZuyaghQF33EFxZnSeTDL3YPnO4/MSbzqRqGxejKIPRfpKXu4+xlYFd255gFtQWDlRhrv7sXHTJhEdFMHp45im527E8TzG3tP9zIdP9VwdkTcWl2+DJ8s9uhG3A5d6tddTNi2qq9jNiSOK0Q6bKrKLKoM= 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=RbQe99vk; arc=none smtp.client-ip=198.175.65.21 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="RbQe99vk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468000; x=1773004000; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DYcltVUMLF4xMeT3uxSDwG6lZLJOWpkDsyW4wL2ahME=; b=RbQe99vk+7GqqSRou1+PF3hfcunqGVs7BDbpOuuN7nPw4t4o/3hDev0v 00i5ewPk66fahJ6IUJCdufvXVouOJplIasCBOVK6pa4MvzpuhERmKLOCU kDnOg9V7tEqP8r7eqTWlZ/EgihVdehQ07Q/xYTxOqfqhDjxLUlxUL6PpN O1KKLdQMxN6z7g4/eRz3cVHbT7SFRxSfRrdfeCEDvt4zH+3HhTZparY9D o+KmKAnNAcD8A70q6xgtQGnjGQEn9lOf1gnYB1kQNtViajt21LlwLRQLA yqNd0ttNl/PWZQXPgsPLlhPxqUAS+RjRlm+DctmCZ56J40UvswQbVmwpC w==; X-CSE-ConnectionGUID: uflHtL+aQPKgKoJHJghwRw== X-CSE-MsgGUID: zZbTZG0eRqS2y0e/5cRgtw== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413067" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413067" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:05 -0800 X-CSE-ConnectionGUID: txid155XTOiNfAH0s6+ToQ== X-CSE-MsgGUID: rGjxDKDXRqGA55ShoOEMGA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644386" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:03 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Avraham Stern Subject: [PATCH RESEND wireless-next 07/15] wifi: mac80211: allow 320 MHz FTM measurements Date: Sat, 8 Mar 2025 23:03:33 +0200 Message-Id: <20250308225541.91f4cbe66817.I9205c585fca6a54a2c5a9e4db98c7781bd1fc4e1@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871861 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 197F5374FF for ; Sat, 8 Mar 2025 21:06:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468019; cv=none; b=QNgJ/ygDOexbTF8j43BVdsppAM5hJ7CFBhlaeJeNfqpWtA7krBrUyU+AZTBUodeeeu3acSrFHxkdHxsPcfmFkvyoA0ASIHyu5d4y63GCTGkD4mx8rz9L/9RkhvVdDkBFcxHYzn01qvvZeq+vnaVyMd9SyMTLnJUoVdSLhNXzbt0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468019; c=relaxed/simple; bh=z9YiSsuR8tZfAE1pEAoxKoDCaDTLLV85kifjv5K9shM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NKnFXzaZD5hzRy9nqRW07EUvgLEdNwLr5VzaZLqmQJOTHGGxMgpIZg7a/0ptSdxGB5YfVUsiEOXXq4Hc17be04wJnS8rzvH4+dZTVk1Te5J3cvvnB0sW1T3DZsCu3PlQXo1o8DMflFPI0XYpEMYdY9YIiuB8HMB27MSBuI0L7oA= 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=Hgot/jdG; arc=none smtp.client-ip=198.175.65.21 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="Hgot/jdG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468018; x=1773004018; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=z9YiSsuR8tZfAE1pEAoxKoDCaDTLLV85kifjv5K9shM=; b=Hgot/jdGAShcu1x9AWeta5VUpt5gf1/jMQlrcrG7uAD331944W9gPCzB FAMBSEr4BQMS6p5DYlPD+H+7u+79+ImWWQEmMrvlX0o6rAwU2ljPtRRTH anN0fcHpp1v0q0CdrlAeBKmoYv3LgADBsQNZT5nxKvr0RUqXkj1BeNtyP UIkJKWcTzf8pC+WA9FJcFJgEQCd6Ypot2coREGzT0MxZLHH5nxribHF1Q Vft4D7AMXdJyBvOGf/nnoHnlhTbmZtrNcy/dQLv5IEoYypbTN3Qd7OBLZ yBQMJ7HbJIt0X9sKLVPbVwQK5ZWngOl6jjUHFEyiZ/Z7+1mbG2qC+VbzV w==; X-CSE-ConnectionGUID: 7d7bLkoYSQ6e/c0rw7chCg== X-CSE-MsgGUID: lERw494SRwqSbwZv5xF5hQ== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413087" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413087" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:06 -0800 X-CSE-ConnectionGUID: jalRpvthR1iiCg2YKFp/hw== X-CSE-MsgGUID: WgzSLpHcRN+skm2W45s2xw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644391" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:05 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Ilan Peer Subject: [PATCH RESEND wireless-next 08/15] wifi: mac80211_hwsim: Fix MLD address translation Date: Sat, 8 Mar 2025 23:03:34 +0200 Message-Id: <20250308225541.1aa461270bb6.Ic21592e1b1634653f02b80628cb2152f6e9de367@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872150 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 AE2E71A5BBD for ; Sat, 8 Mar 2025 21:06:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468022; cv=none; b=YuTHlzh24Zw5L+sz5wSIXK2AwKzzftL8L3ICLsW3fBJYEViHy3+pH0/HCfJihBwJbd6glIlQ4bT/cQuBG07FjUjdxrizGEIn0CeGSueCg/FVIQEuc+UGxLZLnCIe5e+Ob6bqmp3wJVOuliQVtXk+4uIv0vzjsIqJ7gXKudkxmTI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468022; c=relaxed/simple; bh=sqxI0dgpV6+w2QdV7mpm91T6PuW4AuPZjwLURYkgsFg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=p7is2aTq5TuxCDA26ucI7SuAw00bAbC6chgXK91vXmuFXViqGOA58jCqXpcaXXnrrE1tL/1ZN4VoOvz8TuK/46ryCDYgcV4sK1qOUb4vyeH50qxoSNzmfyY6D8YRECRFYPYO8Xl8/S40iPpB2q2YHxToSuvGMpktIgcB8smiPvk= 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=dUQ1g3Bq; arc=none smtp.client-ip=198.175.65.21 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="dUQ1g3Bq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468021; x=1773004021; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sqxI0dgpV6+w2QdV7mpm91T6PuW4AuPZjwLURYkgsFg=; b=dUQ1g3Bqpd0TOODiqSzXPmhs8W3j+EMC+IeBP9pV/Q8gsgEuF1/IyBqM wRjB/X0DewJmztM+t4OPnT3gFog9x3gfWsHgP6EXNuhhmM+dBDcc2IVDE z08f8Ac3MnNA9qPf/udeNgjtWcrD7ejV21RwA55vRpr0kq+Cnjo8jjz4P LiWUSg3yoKDCB1M2lAdwDamCMeUBmwyyfEtbnfattK3Ok6gee5Ry7nAKM 4vMGlHnEQkOGv+UG+EhHDnIQF/4CVZ4MPWCv9VpsF3wkCE0ODnrb0Bxym S3LND6lnXNuWQUtLN9JqgBlcO61gex6sHYHdyibVdUG3yMzYXfGHiq1QL w==; X-CSE-ConnectionGUID: WDhPd9gRSwa4HQY3vkoZYg== X-CSE-MsgGUID: iF24ati7Q4a7Eiby5abPsg== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413089" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413089" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:08 -0800 X-CSE-ConnectionGUID: cdySxXwiTHa2FnVUpzE7kg== X-CSE-MsgGUID: POqNln0vQrWilake+CO0Eg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644400" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:06 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH RESEND wireless-next 09/15] wifi: mac80211: fix userspace_selectors corruption Date: Sat, 8 Mar 2025 23:03:35 +0200 Message-Id: <20250308225541.8f1bcf96a504.Ibeb8970c82a30c97279a4cc4e68faca5df1813a5@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871860 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 B147E19597F for ; Sat, 8 Mar 2025 21:07:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468027; cv=none; b=I1VTghIgfyqfZi8BkXq3JbQlsvfepIqbcQvczXpMJ+RHPB/481vuAPIzVvn2psDULjgcRJTJxJ0vIzUYLX+D1MwzOJZQPZYC6sTk7Xm3seoJhJq6jpKiTmTEkcPXt3/KFsRa4O08zTolnV8vmwpSIgsaXJoKQf2diXNtCohVDBI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468027; c=relaxed/simple; bh=qNu7cBgx21Jtj0k1YDhalz/PZF88UWia1kyMtsuxMy0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JmBbYo5TumWnZeTLLj+nxztWRgopEJQ8GEnJWvK1UYgUtYbkzf1q0MjkavBNAVbiFlApwaQwnfpWKJbd9qTQ7uvzpv/D8eyR7K63LAOSv3tB/iO5CpArg9dqfRWt68r1gcF8S3wgvOxCwl9N+CP3eHR+ZrRLu8nqXjSAqTMuA9k= 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=mHsG2yIX; arc=none smtp.client-ip=198.175.65.21 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="mHsG2yIX" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468026; x=1773004026; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qNu7cBgx21Jtj0k1YDhalz/PZF88UWia1kyMtsuxMy0=; b=mHsG2yIX9rAM0Li8Gaku0k6f2FmSD8cLFDBQyr5PjIGBa+s/wYxxDtHN gzptywmiijBnmW8/R8tQtEqjDJVviJlGl9j5BmEcREJfMUYd06GH05lXh O5wFc3C9E7jK5E/ULDJBeHDHN8YaOknoo5u6rhO2WALsEYdcnFkjNki+G 7F6WA3g45maA9jpFCYC9HGXwcSNMQnF/v1ERObrVkFSZrdG0EJX1wyIRZ WM7MDmfhBgrp6voYo9Ma67cw3MUZQ7gc6p5B10WTNUvu90Jerr1udTpt1 j6k5JxL01Zr5umloHoznU0TqUdAJEp7rdF+sjB/8GJzwlcb69VPubXj3S w==; X-CSE-ConnectionGUID: LBCeNhc/TrebL+hcTpJfPQ== X-CSE-MsgGUID: ptCPo7t3Ra+m2Y6R4o1QsQ== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413104" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413104" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:10 -0800 X-CSE-ConnectionGUID: IvjnFExGTr+wsHuZSfQbBA== X-CSE-MsgGUID: N2PEQ6+DRcizglbOOUlzzw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644406" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:08 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH RESEND wireless-next 10/15] wifi: mac80211: fix warning on disconnect during failed ML reconf Date: Sat, 8 Mar 2025 23:03:36 +0200 Message-Id: <20250308225541.699bd9cbabe5.I599d5ff69092a65e916e2acd25137ae9df8debe8@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872149 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 A11641A08B1 for ; Sat, 8 Mar 2025 21:07:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468028; cv=none; b=XhkaHVCgfzM70gCRTEXJlHN7/AgJ5VrwHJFa+GHryV/0dvh+7KGXlP+6W9tB/iSKBF/7C/NIbT+E2RPHUWc5C14wEX7bFIkC5BuhUwpW3Yoku/mDDeFpWWFSweNWNGH/YMKiIXYKVvlWtdZTDMIsZY9Oa7IyvSwivWu0JXewvaA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468028; c=relaxed/simple; bh=ArgH9JlAkzQ9woISgtCsFUGUTK0Fj6MEK5ZPoOI4TME=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Z/8SpLs1fQpSydbFTlZyo2SMih3KuMBNsyelq9wv+5NAC4v+Gh4O0D05PAbHyzeJZb0RGmSzelBs+RftZFeTdRSmX8goxUBmKe7dgfpbpv9Q7eETkdzZl2BBbXpo93tTDDAL1E4RIqTADJCAJGiooABY4mdsD8SnqHUB//DMJoM= 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=enEl3vB3; arc=none smtp.client-ip=198.175.65.21 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="enEl3vB3" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468027; x=1773004027; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ArgH9JlAkzQ9woISgtCsFUGUTK0Fj6MEK5ZPoOI4TME=; b=enEl3vB3vLBeW47nTJNJdZDAuptROL0gsCm1sebpql3fK+WwukOgOKge Flq6ZtbdyKuUVpC6l1Vaby8pMYk68SlZCMJ+QaRhfbDKVEWHAhkRrWE2j CWd6oHx5iED7yH5HsR3qJtaMqYE71F2V41ELdI0uVZZpwk+08XEv2+wvf hJbefO5oVpgRHwsrGIDGWsP71PDBLv13oiggryUAVXSL5sQStHkG5QU1S i0xJjsS3xm4VG4jNH1tIh3icFzRWnth2FEAA2bJBj91xqdsJ0JDQ/kgIl 2Vb1mln3lJzefCPCnykGbFDAr8e3P//2tGuuTC9vZmC+0dEUJWecwGJcM g==; X-CSE-ConnectionGUID: 1QPaGjP5R5i6vNlJ2kNtGA== X-CSE-MsgGUID: DNx9v1jtT+mvijsuWrn0DA== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413106" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413106" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:11 -0800 X-CSE-ConnectionGUID: D4q9Iq60RICSZN4vlX7Vqw== X-CSE-MsgGUID: 1foGsPJ1TLC8LKyBevNcIQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644415" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:10 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Ilan Peer Subject: [PATCH RESEND wireless-next 11/15] wifi: cfg80211: Update the link address when a link is added Date: Sat, 8 Mar 2025 23:03:37 +0200 Message-Id: <20250308225541.d694a9125aba.I79b010ea9aab47893e4f22c266362fde30b7f9ac@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 c61894c1265a..73f0e75cc814 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -9770,6 +9770,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 Sat Mar 8 21:03:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871859 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 9A4501A08B1 for ; Sat, 8 Mar 2025 21:07:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468033; cv=none; b=bWitSWj6LowIORODmMuTATM4TuHHlOiNjbTwyU5DGcMGKF/sg3+1pRxil0k4qwUuHkJhRrBN/bKHC5vGGsXTE6Se3f92j/8uCYXNdC0tPh673UT5HHrtQmEZzdyFNtwF/LEuLmQ6VTsXfV8KQ+UVGWimbUxMuvc0fckGbmuIpaE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468033; c=relaxed/simple; bh=gsIIy478v8/6nY9cvDyZuNEbjerd5nropVjWreVv+qI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=IvCF861IgbWxFQc6pdajz+W4OG6C0iNbBReKYxBCoePug38485GzH+uOKas5S4KuBqp3lMSh9P9X4QR9HeZEDQAXDhmDnzU94/JGzd3kH/HXO+3RIx7gRGKyR4bM/RuGuwoP6sMjqdnS3LlbvNF7gINbrNn/qx7/vHZFP0U8B54= 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=aEs21YWR; arc=none smtp.client-ip=198.175.65.21 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="aEs21YWR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468032; x=1773004032; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gsIIy478v8/6nY9cvDyZuNEbjerd5nropVjWreVv+qI=; b=aEs21YWRBawkUb7giKJTi7YAG9QBvWFB3WDDkZ/DUYwtWkc5fAyDDkSt IcWoBG+m+4hcQSMenqePU1DFkQx1mf/nqvwopArhKg13eotCdwEIHSv0D ohMAsP8NLrasJr4fOCPivhn6srGpv72oy20cFXv/R/qCbScou8idkYkzx o51fRI51WKb7Lobb2gutHfJBsHe1PC1Rm8YJjSs+6jM6lPVdfxBz+fymX aev/KYkyVMNCeZc+won+V/phCFfoPGaWVSoDNots7Z1hVMhzFk6Gu5yiq wfyeWE5SWxG4jrCCGozBPcD34oFrdUfPhRZwlvUZJoTeXAn1MswnEAFME A==; X-CSE-ConnectionGUID: Ydnx+3MoTraNK/lPazs5gw== X-CSE-MsgGUID: Q3fRz1MeTpS4Jkc3mfV0aA== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413108" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413108" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:12 -0800 X-CSE-ConnectionGUID: vK2Q9ioITga2ni6ZowUxlQ== X-CSE-MsgGUID: 3pOFwKtLTg28lpyhnTRNTg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644423" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:11 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Ilan Peer Subject: [PATCH RESEND wireless-next 12/15] wifi: mac80211: Notify cfg80211 about added link addresses Date: Sat, 8 Mar 2025 23:03:38 +0200 Message-Id: <20250308225541.0c6bf8b1bef3.I2aa16801f07321a580dd7dce4a074a3486f627f1@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872148 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 D07ED374FF for ; Sat, 8 Mar 2025 21:07:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468044; cv=none; b=EKUbmFrTzFverhtyDYqeDsbh/00DKEp5dQbcFD7mL7bDvyNGQKnm6fipFvJUykS9gm/jU32yHb6Ue6ypPPKG94C7mQskOoBHpJ1kGBMPRFKMTWG5jj1l62NIO8ehQFeeGtCk39dcGbXflAqenkrm8rez+11rhAnch1epCxbcghE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468044; c=relaxed/simple; bh=Mozn9GM8A5OO8wzQLG5biURyg82peQ/rG6dUuKHg38Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SXVCminjZn2nEql/IUmywCRm+pb7JpdPKaPpgPWlugVf1iCfc7V/f9pvh0I6WXApU+FXn1yM8MWiv98cACFeqAG7wgDGh9rNjj2j5LISmiT4Y8Y9/A09L1yTduFna0C+8xxkDfeLxp6shxPfd88+RdVu9u51SAGOp5m4C4LD3Yw= 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=Ze0BJONM; arc=none smtp.client-ip=198.175.65.21 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="Ze0BJONM" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468043; x=1773004043; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Mozn9GM8A5OO8wzQLG5biURyg82peQ/rG6dUuKHg38Q=; b=Ze0BJONMgjlvUeOZxZUadjobWf37EAqtSRubScaIvDGvs62UGHyJG9El V7hcWxaZSQEApG71xZrcEM1MMI9SOCgDdgf6S0jG0IpVtwdYwUuoKn03v Vk1ajKo/9fyyuzTDtjRDcAKSx0iH9nMRNiASVX/+LKImwmUVcEfcp4Z/y BKR0vdIqxcHR3LxXYyNJ085PTutE75oKkGhzR0YJMRtPOEw2h1ZpSGcKv bnYYBGDEi5uh87xlKpPeQlhWOboN5TpG1K4m6oLgug6AD4LVnL+rQ9SwP 8nTzF+V7obIR6fhD9VsNXpycV71xx5e5bfeMRfzu0j2PM3k1HbHJaBJuI Q==; X-CSE-ConnectionGUID: wqdIglpfRja2F5bH7uYb7g== X-CSE-MsgGUID: S4oFAFM6TM2cfq3TIYIzvg== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413123" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413123" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:14 -0800 X-CSE-ConnectionGUID: MYPuUkd3TeedNlN1dGPsFw== X-CSE-MsgGUID: SLtQxP2ARiy6XV1axwkGlw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644427" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:13 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH RESEND wireless-next 13/15] wifi: mac80211: fix ML reconf reset in disconnect Date: Sat, 8 Mar 2025 23:03:39 +0200 Message-Id: <20250308225541.abaea69cde42.I7e6b35731ded94fc2d68a2d4ecf81873712c268e@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 871858 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 A95EE19597F for ; Sat, 8 Mar 2025 21:07:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468051; cv=none; b=I0HonqQGmUCg9I0GhhDoR9hn2rkypHUKi33Au8vPU81jBc+z70r6NyPmzZDJBdNQ8rEOcSrcKrfM4DRr1mTf/FbN2dX+SLokjR39suEw3Rf/ts1IUSnqgFMGXfRG/tbZ+2VMJbDdI79V0fSkJc1KJEmyFbGDyatbGrU9OUKXl0M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468051; c=relaxed/simple; bh=APQUsvv8NJyGFNs7j/q6znNhdgDoGWngVOpacJWZix4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GFodTPbQ9dfDeP1tZAbiVawDur0vs5Y2aULRol8QcPaFuSFYBEOn1MwZ4ZXjNF/3HeGmq1q+VSTjBgth8DvFj6J+dVbLtkEydp64nss3Kv6jZvSgHOIK0VToPWmCL5+q+rBrXD6ZefLwNizGZz4wgEXAwU3fDW8agL2oXJFpOL0= 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=TErrsHw9; arc=none smtp.client-ip=198.175.65.21 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="TErrsHw9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468050; x=1773004050; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=APQUsvv8NJyGFNs7j/q6znNhdgDoGWngVOpacJWZix4=; b=TErrsHw911rXoomQPUus7kk+DPcuP6zg+/b4AgKKLnTZn85BPuT9aYbK 4G49YxovOg9m1xyjVrm/Wlaib8IsAg0PsBxoILyuGa3uXSxrAneXP7te4 bUEiNqD2yGVvAUEJNb0aOh1rmYXVTgwFQNLhdbDwjjKqYvRuzsEZOhtAy y0Ffk2TW3ueiBhmtJH45kSnccVwC1OekVktZrVtjwHd8SHg+vYCbwTVzy XnKIfoMfGhB8dTAqBF44H8lhA+WVFR7MXJY6xqIM9UR1+U9tDThOQLRaS P10V/VvDzJM2lB97kD75NDmViOB8TGsFJ/MLdJUsYby+o3mxAL7RJWbUD A==; X-CSE-ConnectionGUID: VfvFjGxuRB+sy5r+CKezfA== X-CSE-MsgGUID: ClKf+gXdS327kNHFC/XnPw== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413134" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413134" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:16 -0800 X-CSE-ConnectionGUID: obuwcf+MTAGeqxhMnjhgXw== X-CSE-MsgGUID: vHbMzwmxSIK3gPYkx78TXg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644466" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:14 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg , Ilan Peer Subject: [PATCH RESEND wireless-next 14/15] wifi: mac80211: don't include MLE in ML reconf per-STA profile Date: Sat, 8 Mar 2025 23:03:40 +0200 Message-Id: <20250308225541.8e5be244c70f.I3472cd5c347814ee3600869a88488997bcd43224@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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 Sat Mar 8 21:03:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miri Korenblit X-Patchwork-Id: 872147 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 E7AA519597F for ; Sat, 8 Mar 2025 21:07:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468055; cv=none; b=BIeViJa4JG+og26NHjEuPG4t/ffB7Ojcpanu8yBmcOm5XBxaPJfjRSVyc/RWN+KAWr9s5W1/Xtg8bqnjBOmnifR9tenaj8rklOjVO8Y+1qvG/xIAoVwQ7+L0AJgzGstBMsrjOgHsDK2R7/rkOkB7soVF3e0zuTIfc8AgiTcq0OA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741468055; c=relaxed/simple; bh=Ahn5E1O+YZWIExufykAoRH9acLYKWhB95qDTpXsUrl4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AgN+UOYDstlnXdrg8318Vq0iD3D6CVx+fc9NwXt3vO7SelkyesZICg4uLbr8/Xg8zwOdw5dxMDEXgpzwleu4wY49Fasb6aaUv+jW1qDVl78lwkcsiXPWulFftzr/tWDYXVpzTybU8tceCByfWOulSif+t7BfipO0mKs6HfxhXTA= 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=RUV8rbb5; arc=none smtp.client-ip=198.175.65.21 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="RUV8rbb5" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741468054; x=1773004054; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ahn5E1O+YZWIExufykAoRH9acLYKWhB95qDTpXsUrl4=; b=RUV8rbb5emOf7Ht/E+Jwxkt7jMRGtllfSaA//gTvEHxZpbPuFiv0EhaG hNyRm6qL4anwlWYWxFQVr/t4b/yBxDwoOPKmxrBAmf9QlvHDrY0f9a6EM sHecclIpzZ9Wn37q5H+o0qxfUUWwJxsQtW5JM2zwZnop3K7sAE3jzLEvc oUp9QTdAQRC+0PbNkCQjY7VrSX/X+dN9+NQPVPVkWjVN1BiAb2jNjMuET IjMSziDymaeTUt/iAl0af7ZA0ulFcS2J2qkzxy8rtGOxKdWMv09JRbuEg lbQZLsERWYa1QA4kJ3Ov0G0k+40uRLhnw2F3XAQkQVXxUV1fDzm5IiLox Q==; X-CSE-ConnectionGUID: rClbsEZKRDqfVeNUWT7fjA== X-CSE-MsgGUID: 4qH1RxoOQJOJ1cVmg1+cOg== X-IronPort-AV: E=McAfee;i="6700,10204,11367"; a="42413141" X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="42413141" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:17 -0800 X-CSE-ConnectionGUID: mtTiz4PVT7m/3b+k0DlFZw== X-CSE-MsgGUID: dVj7INEiSzSQFXD2DKsiHg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,233,1736841600"; d="scan'208";a="124644503" Received: from weis0040.iil.intel.com ([10.12.217.108]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2025 13:04:16 -0800 From: Miri Korenblit To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Johannes Berg Subject: [PATCH RESEND wireless-next 15/15] wifi: mac80211: set WMM in ML reconfiguration Date: Sat, 8 Mar 2025 23:03:41 +0200 Message-Id: <20250308225541.59902f783420.I362c3101d3f523a8db37c16cd7b5f573d76a36e6@changeid> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250308210341.2302222-1-miriam.rachel.korenblit@intel.com> References: <20250308210341.2302222-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. 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);