aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2025-03-08 23:03:27 +0200
committerJohannes Berg <johannes.berg@intel.com>2025-03-11 10:51:58 +0100
commita096a8602f4fee42a18b7537a7467a28c44728af (patch)
tree21db4e8c8f18b0aa5eb1043dba56554f05a355a7 /net/wireless
parentwifi: wfx: allow to enable WoWLAN using NL80211 (diff)
downloadlinux-rng-a096a8602f4fee42a18b7537a7467a28c44728af.tar.xz
linux-rng-a096a8602f4fee42a18b7537a7467a28c44728af.zip
wifi: cfg80211: move link reconfig parameters into a struct
Add a new struct cfg80211_ml_reconf_req to collect the link reconfiguration parameters. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20250308225541.0cf299c1fdd0.Id1a3b1092dc52d0d3731a8798522fdf2e052bf0b@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless')
-rw-r--r--net/wireless/core.h6
-rw-r--r--net/wireless/mlme.c13
-rw-r--r--net/wireless/nl80211.c24
-rw-r--r--net/wireless/rdev-ops.h10
-rw-r--r--net/wireless/trace.h13
5 files changed, 30 insertions, 36 deletions
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 <johannes@sipsolutions.net>
- * 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 <j@w1.fi>
* Copyright (c) 2015 Intel Deutschland GmbH
- * Copyright (C) 2019-2020, 2022-2024 Intel Corporation
+ * Copyright (C) 2019-2020, 2022-2025 Intel Corporation
*/
#include <linux/kernel.h>
@@ -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 <johannes@sipsolutions.net>
* 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 <linux/if.h>
@@ -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",