mac80211: Update to version 6.1.116-1

This updates mac80211 to version 6.1.116-1. This code is based on Linux
6.1.116 and contains all fixes included in the upstream wireless
subsystem from that kernel version. This includes many bugfixes and also
some security fixes.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2024-11-16 00:08:28 +01:00
parent a281c02288
commit 28bf86e3e5
27 changed files with 102 additions and 271 deletions

View File

@ -10,13 +10,13 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211
PKG_VERSION:=6.1.110-1
PKG_VERSION:=6.1.116-test1
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v6.1.110/
PKG_HASH:=2415bc529ca25be0aa597f9638d8b6fc4138080bbaea96881a38101896df6703
PKG_SOURCE_URL:=https://www.hauke-m.de/files/backports-test/
PKG_HASH:=050cc57cbbb584ef5219da3b179fbb2b941b7ab57679fe551613ec02bb6948ee
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)

View File

@ -456,7 +456,7 @@ v13:
{
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -4598,6 +4598,8 @@ static const struct wmi_ops wmi_tlv_ops
@@ -4603,6 +4603,8 @@ static const struct wmi_ops wmi_tlv_ops
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
@ -467,7 +467,7 @@ v13:
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -7492,6 +7492,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
@@ -7493,6 +7493,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
return skb;
}
@ -517,7 +517,7 @@ v13:
static struct sk_buff *
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
enum wmi_sta_ps_mode psmode)
@@ -9180,6 +9223,9 @@ static const struct wmi_ops wmi_ops = {
@@ -9181,6 +9224,9 @@ static const struct wmi_ops wmi_ops = {
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@ -527,7 +527,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -9250,6 +9296,8 @@ static const struct wmi_ops wmi_10_1_ops
@@ -9251,6 +9297,8 @@ static const struct wmi_ops wmi_10_1_ops
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
.gen_echo = ath10k_wmi_op_gen_echo,
@ -536,7 +536,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -9322,6 +9370,8 @@ static const struct wmi_ops wmi_10_2_ops
@@ -9323,6 +9371,8 @@ static const struct wmi_ops wmi_10_2_ops
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
@ -545,7 +545,7 @@ v13:
/* .gen_pdev_enable_adaptive_cca not implemented */
};
@@ -9393,6 +9443,8 @@ static const struct wmi_ops wmi_10_2_4_o
@@ -9394,6 +9444,8 @@ static const struct wmi_ops wmi_10_2_4_o
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
.gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing,
@ -554,7 +554,7 @@ v13:
/* .gen_bcn_tmpl not implemented */
/* .gen_prb_tmpl not implemented */
/* .gen_p2p_go_bcn_ie not implemented */
@@ -9474,6 +9526,8 @@ static const struct wmi_ops wmi_10_4_ops
@@ -9475,6 +9527,8 @@ static const struct wmi_ops wmi_10_4_ops
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
.gen_echo = ath10k_wmi_op_gen_echo,
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,

View File

@ -55,7 +55,7 @@
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -1432,6 +1480,8 @@ int ath9k_init_debug(struct ath_hw *ah)
@@ -1430,6 +1478,8 @@ int ath9k_init_debug(struct ath_hw *ah)
ath9k_tx99_init_debug(sc);
ath9k_cmn_spectral_init_debug(&sc->spec_priv, sc->debug.debugfs_phy);

View File

@ -53,7 +53,7 @@
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -1482,6 +1528,8 @@ int ath9k_init_debug(struct ath_hw *ah)
@@ -1480,6 +1526,8 @@ int ath9k_init_debug(struct ath_hw *ah)
debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
&fops_eeprom);

View File

@ -254,7 +254,7 @@
int ath9k_init_debug(struct ath_hw *ah)
{
@@ -1530,6 +1585,10 @@ int ath9k_init_debug(struct ath_hw *ah)
@@ -1528,6 +1583,10 @@ int ath9k_init_debug(struct ath_hw *ah)
&fops_eeprom);
debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
sc, &fops_chanbw);

View File

@ -51,7 +51,7 @@
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -1589,6 +1633,8 @@ int ath9k_init_debug(struct ath_hw *ah)
@@ -1587,6 +1631,8 @@ int ath9k_init_debug(struct ath_hw *ah)
debugfs_create_file("gpio_led", S_IWUSR,
sc->debug.debugfs_phy, sc, &fops_gpio_led);
#endif

View File

@ -1,169 +0,0 @@
From e0f83d268974dab0361d11904dfc9acec53f96a6 Mon Sep 17 00:00:00 2001
From: Eric Dumazet <edumazet@google.com>
Date: Fri, 11 Oct 2024 17:12:17 +0000
Subject: [PATCH] genetlink: hold RCU in genlmsg_mcast()
[ Upstream commit 56440d7ec28d60f8da3bfa09062b3368ff9b16db ]
While running net selftests with CONFIG_PROVE_RCU_LIST=y I saw
one lockdep splat [1].
genlmsg_mcast() uses for_each_net_rcu(), and must therefore hold RCU.
Instead of letting all callers guard genlmsg_multicast_allns()
with a rcu_read_lock()/rcu_read_unlock() pair, do it in genlmsg_mcast().
This also means the @flags parameter is useless, we need to always use
GFP_ATOMIC.
[1]
[10882.424136] =============================
[10882.424166] WARNING: suspicious RCU usage
[10882.424309] 6.12.0-rc2-virtme #1156 Not tainted
[10882.424400] -----------------------------
[10882.424423] net/netlink/genetlink.c:1940 RCU-list traversed in non-reader section!!
[10882.424469]
other info that might help us debug this:
[10882.424500]
rcu_scheduler_active = 2, debug_locks = 1
[10882.424744] 2 locks held by ip/15677:
[10882.424791] #0: ffffffffb6b491b0 (cb_lock){++++}-{3:3}, at: genl_rcv (net/netlink/genetlink.c:1219)
[10882.426334] #1: ffffffffb6b49248 (genl_mutex){+.+.}-{3:3}, at: genl_rcv_msg (net/netlink/genetlink.c:61 net/netlink/genetlink.c:57 net/netlink/genetlink.c:1209)
[10882.426465]
stack backtrace:
[10882.426805] CPU: 14 UID: 0 PID: 15677 Comm: ip Not tainted 6.12.0-rc2-virtme #1156
[10882.426919] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[10882.427046] Call Trace:
[10882.427131] <TASK>
[10882.427244] dump_stack_lvl (lib/dump_stack.c:123)
[10882.427335] lockdep_rcu_suspicious (kernel/locking/lockdep.c:6822)
[10882.427387] genlmsg_multicast_allns (net/netlink/genetlink.c:1940 (discriminator 7) net/netlink/genetlink.c:1977 (discriminator 7))
[10882.427436] l2tp_tunnel_notify.constprop.0 (net/l2tp/l2tp_netlink.c:119) l2tp_netlink
[10882.427683] l2tp_nl_cmd_tunnel_create (net/l2tp/l2tp_netlink.c:253) l2tp_netlink
[10882.427748] genl_family_rcv_msg_doit (net/netlink/genetlink.c:1115)
[10882.427834] genl_rcv_msg (net/netlink/genetlink.c:1195 net/netlink/genetlink.c:1210)
[10882.427877] ? __pfx_l2tp_nl_cmd_tunnel_create (net/l2tp/l2tp_netlink.c:186) l2tp_netlink
[10882.427927] ? __pfx_genl_rcv_msg (net/netlink/genetlink.c:1201)
[10882.427959] netlink_rcv_skb (net/netlink/af_netlink.c:2551)
[10882.428069] genl_rcv (net/netlink/genetlink.c:1220)
[10882.428095] netlink_unicast (net/netlink/af_netlink.c:1332 net/netlink/af_netlink.c:1357)
[10882.428140] netlink_sendmsg (net/netlink/af_netlink.c:1901)
[10882.428210] ____sys_sendmsg (net/socket.c:729 (discriminator 1) net/socket.c:744 (discriminator 1) net/socket.c:2607 (discriminator 1))
Fixes: 33f72e6f0c67 ("l2tp : multicast notification to the registered listeners")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: James Chapman <jchapman@katalix.com>
Cc: Tom Parkin <tparkin@katalix.com>
Cc: Johannes Berg <johannes.berg@intel.com>
Link: https://patch.msgid.link/20241011171217.3166614-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/target/target_core_user.c | 2 +-
include/net/genetlink.h | 3 +--
net/l2tp/l2tp_netlink.c | 4 ++--
net/netlink/genetlink.c | 28 ++++++++++++++--------------
net/wireless/nl80211.c | 8 ++------
5 files changed, 20 insertions(+), 25 deletions(-)
--- a/backport-include/net/genetlink.h
+++ b/backport-include/net/genetlink.h
@@ -150,7 +150,7 @@ int genlmsg_multicast(const struct genl_
#define genlmsg_multicast_allns LINUX_BACKPORT(genlmsg_multicast_allns)
int backport_genlmsg_multicast_allns(const struct genl_family *family,
struct sk_buff *skb, u32 portid,
- unsigned int group, gfp_t flags);
+ unsigned int group);
#define genl_family_attrbuf LINUX_BACKPORT(genl_family_attrbuf)
static inline struct nlattr **genl_family_attrbuf(struct genl_family *family)
--- a/compat/backport-genetlink.c
+++ b/compat/backport-genetlink.c
@@ -198,23 +198,23 @@ int genlmsg_multicast(const struct genl_
}
EXPORT_SYMBOL_GPL(genlmsg_multicast);
-static int genlmsg_mcast(struct sk_buff *skb, u32 portid, unsigned long group,
- gfp_t flags)
+static int genlmsg_mcast(struct sk_buff *skb, u32 portid, unsigned long group)
{
struct sk_buff *tmp;
struct net *net, *prev = NULL;
bool delivered = false;
int err;
+ rcu_read_lock();
for_each_net_rcu(net) {
if (prev) {
- tmp = skb_clone(skb, flags);
+ tmp = skb_clone(skb, GFP_ATOMIC);
if (!tmp) {
err = -ENOMEM;
goto error;
}
err = nlmsg_multicast(prev->genl_sock, tmp,
- portid, group, flags);
+ portid, group, GFP_ATOMIC);
if (!err)
delivered = true;
else if (err != -ESRCH)
@@ -223,25 +223,29 @@ static int genlmsg_mcast(struct sk_buff
prev = net;
}
+ err = nlmsg_multicast(prev->genl_sock, skb, portid, group, GFP_ATOMIC);
+
+ rcu_read_unlock();
- err = nlmsg_multicast(prev->genl_sock, skb, portid, group, flags);
if (!err)
delivered = true;
else if (err != -ESRCH)
return err;
return delivered ? 0 : -ESRCH;
error:
+ rcu_read_unlock();
+
kfree_skb(skb);
return err;
}
int backport_genlmsg_multicast_allns(const struct genl_family *family,
struct sk_buff *skb, u32 portid,
- unsigned int group, gfp_t flags)
+ unsigned int group)
{
group = __backport_genl_group(family, group);
if (group == INVALID_GROUP)
return -EINVAL;
- return genlmsg_mcast(skb, portid, group, flags);
+ return genlmsg_mcast(skb, portid, group);
}
EXPORT_SYMBOL_GPL(backport_genlmsg_multicast_allns);
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -17627,10 +17627,8 @@ void nl80211_common_reg_change_event(enu
genlmsg_end(msg, hdr);
- rcu_read_lock();
genlmsg_multicast_allns(&nl80211_fam, msg, 0,
- NL80211_MCGRP_REGULATORY, GFP_ATOMIC);
- rcu_read_unlock();
+ NL80211_MCGRP_REGULATORY);
return;
@@ -18248,10 +18246,8 @@ void nl80211_send_beacon_hint_event(stru
genlmsg_end(msg, hdr);
- rcu_read_lock();
genlmsg_multicast_allns(&nl80211_fam, msg, 0,
- NL80211_MCGRP_REGULATORY, GFP_ATOMIC);
- rcu_read_unlock();
+ NL80211_MCGRP_REGULATORY);
return;

View File

@ -51,7 +51,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
*
* Drivers can optionally delegate responsibility for scheduling queues to
* mac80211, to take advantage of airtime fairness accounting. In this case, to
@@ -2257,8 +2258,8 @@ struct ieee80211_link_sta {
@@ -2258,8 +2259,8 @@ struct ieee80211_link_sta {
* For non MLO STA it will point to the deflink data. For MLO STA
* ieee80211_sta_recalc_aggregates() must be called to update it.
* @support_p2p_ps: indicates whether the STA supports P2P PS mechanism or not.
@ -62,7 +62,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
* @deflink: This holds the default link STA information, for non MLO STA all link
* specific STA information is accessed through @deflink or through
* link[0] which points to address of @deflink. For MLO Link STA
@@ -5700,7 +5701,7 @@ void ieee80211_key_replay(struct ieee802
@@ -5701,7 +5702,7 @@ void ieee80211_key_replay(struct ieee802
* @hw: pointer as obtained from ieee80211_alloc_hw().
* @queue: queue number (counted from zero).
*
@ -71,7 +71,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
*/
void ieee80211_wake_queue(struct ieee80211_hw *hw, int queue);
@@ -5709,7 +5710,7 @@ void ieee80211_wake_queue(struct ieee802
@@ -5710,7 +5711,7 @@ void ieee80211_wake_queue(struct ieee802
* @hw: pointer as obtained from ieee80211_alloc_hw().
* @queue: queue number (counted from zero).
*
@ -80,7 +80,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
*/
void ieee80211_stop_queue(struct ieee80211_hw *hw, int queue);
@@ -5718,7 +5719,7 @@ void ieee80211_stop_queue(struct ieee802
@@ -5719,7 +5720,7 @@ void ieee80211_stop_queue(struct ieee802
* @hw: pointer as obtained from ieee80211_alloc_hw().
* @queue: queue number (counted from zero).
*
@ -89,7 +89,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
*
* Return: %true if the queue is stopped. %false otherwise.
*/
@@ -5729,7 +5730,7 @@ int ieee80211_queue_stopped(struct ieee8
@@ -5730,7 +5731,7 @@ int ieee80211_queue_stopped(struct ieee8
* ieee80211_stop_queues - stop all queues
* @hw: pointer as obtained from ieee80211_alloc_hw().
*
@ -98,7 +98,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
*/
void ieee80211_stop_queues(struct ieee80211_hw *hw);
@@ -5737,7 +5738,7 @@ void ieee80211_stop_queues(struct ieee80
@@ -5738,7 +5739,7 @@ void ieee80211_stop_queues(struct ieee80
* ieee80211_wake_queues - wake all queues
* @hw: pointer as obtained from ieee80211_alloc_hw().
*
@ -107,7 +107,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
*/
void ieee80211_wake_queues(struct ieee80211_hw *hw);
@@ -6960,6 +6961,18 @@ static inline struct sk_buff *ieee80211_
@@ -6961,6 +6962,18 @@ static inline struct sk_buff *ieee80211_
}
/**

View File

@ -11,7 +11,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -4359,9 +4359,6 @@ static int ieee80211_get_txq_stats(struc
@@ -4360,9 +4360,6 @@ static int ieee80211_get_txq_stats(struc
struct ieee80211_sub_if_data *sdata;
int ret = 0;
@ -73,7 +73,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
void ieee80211_add_pending_skbs(struct ieee80211_local *local,
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -481,12 +481,6 @@ static void ieee80211_do_stop(struct iee
@@ -482,12 +482,6 @@ static void ieee80211_do_stop(struct iee
if (cancel_scan)
ieee80211_scan_cancel(local);
@ -86,7 +86,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
ieee80211_roc_purge(local, sdata);
switch (sdata->vif.type) {
@@ -834,25 +828,6 @@ static void ieee80211_uninit(struct net_
@@ -849,25 +843,6 @@ static void ieee80211_uninit(struct net_
ieee80211_teardown_sdata(IEEE80211_DEV_TO_SUB_IF(dev));
}
@ -112,7 +112,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
static void
ieee80211_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
{
@@ -866,7 +841,6 @@ static const struct net_device_ops ieee8
@@ -881,7 +856,6 @@ static const struct net_device_ops ieee8
.ndo_start_xmit = ieee80211_subif_start_xmit,
.ndo_set_rx_mode = ieee80211_set_multicast_list,
.ndo_set_mac_address = ieee80211_change_mac,
@ -120,7 +120,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
.ndo_get_stats64 = ieee80211_get_stats64,
};
@@ -988,7 +962,6 @@ static const struct net_device_ops ieee8
@@ -1003,7 +977,6 @@ static const struct net_device_ops ieee8
.ndo_start_xmit = ieee80211_subif_start_xmit_8023,
.ndo_set_rx_mode = ieee80211_set_multicast_list,
.ndo_set_mac_address = ieee80211_change_mac,
@ -128,7 +128,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
.ndo_get_stats64 = ieee80211_get_stats64,
#if LINUX_VERSION_IS_GEQ(5,13,0)
.ndo_fill_forward_path = ieee80211_netdev_fill_forward_path,
@@ -1492,35 +1465,6 @@ int ieee80211_do_open(struct wireless_de
@@ -1507,35 +1480,6 @@ int ieee80211_do_open(struct wireless_de
ieee80211_recalc_ps(local);
@ -164,7 +164,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
set_bit(SDATA_STATE_RUNNING, &sdata->state);
return 0;
@@ -1550,17 +1494,12 @@ static void ieee80211_if_setup(struct ne
@@ -1565,17 +1509,12 @@ static void ieee80211_if_setup(struct ne
{
ether_setup(dev);
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
@ -183,7 +183,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
static void ieee80211_iface_process_skb(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata,
struct sk_buff *skb)
@@ -2145,9 +2084,7 @@ int ieee80211_if_add(struct ieee80211_lo
@@ -2160,9 +2099,7 @@ int ieee80211_if_add(struct ieee80211_lo
struct net_device *ndev = NULL;
struct ieee80211_sub_if_data *sdata = NULL;
struct txq_info *txqi;
@ -193,7 +193,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
ASSERT_RTNL();
@@ -2170,30 +2107,18 @@ int ieee80211_if_add(struct ieee80211_lo
@@ -2185,30 +2122,18 @@ int ieee80211_if_add(struct ieee80211_lo
sizeof(void *));
int txq_size = 0;
@ -466,7 +466,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
}
spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);
@@ -5970,10 +5951,9 @@ int ieee80211_tx_control_port(struct wip
@@ -5972,10 +5953,9 @@ int ieee80211_tx_control_port(struct wip
}
if (!IS_ERR(sta)) {

View File

@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
flow = fq_find_fattest_flow(fq);
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1816,6 +1816,10 @@ struct ieee80211_vif_cfg {
@@ -1817,6 +1817,10 @@ struct ieee80211_vif_cfg {
* @addr: address of this interface
* @p2p: indicates whether this AP or STA interface is a p2p
* interface, i.e. a GO or p2p-sta respectively
@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
* @driver_flags: flags/capabilities the driver has for this interface,
* these need to be set (or cleared) when the interface is added
* or, if supported by the driver, the interface type is changed
@@ -1855,6 +1859,7 @@ struct ieee80211_vif {
@@ -1856,6 +1860,7 @@ struct ieee80211_vif {
struct ieee80211_txq *txq;
@ -80,7 +80,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -2218,6 +2218,7 @@ int ieee80211_if_add(struct ieee80211_lo
@@ -2233,6 +2233,7 @@ int ieee80211_if_add(struct ieee80211_lo
ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
ndev->hw_features |= ndev->features &
MAC80211_SUPPORTED_FEATURES_TX;

View File

@ -13,7 +13,7 @@ Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -5977,6 +5977,18 @@ void ieee80211_queue_delayed_work(struct
@@ -5978,6 +5978,18 @@ void ieee80211_queue_delayed_work(struct
unsigned long delay);
/**

View File

@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -4201,6 +4201,10 @@ struct ieee80211_prep_tx_info {
@@ -4202,6 +4202,10 @@ struct ieee80211_prep_tx_info {
* Note that a sta can also be inserted or removed with valid links,
* i.e. passed to @sta_add/@sta_state with sta->valid_links not zero.
* In fact, cannot change from having valid_links and not having them.
@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
*/
struct ieee80211_ops {
void (*tx)(struct ieee80211_hw *hw,
@@ -4556,6 +4560,11 @@ struct ieee80211_ops {
@@ -4557,6 +4561,11 @@ struct ieee80211_ops {
struct ieee80211_vif *vif,
struct ieee80211_sta *sta,
u16 old_links, u16 new_links);
@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
MAC80211_SUPPORTED_FEATURES_RX)
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -834,6 +834,21 @@ ieee80211_get_stats64(struct net_device
@@ -849,6 +849,21 @@ ieee80211_get_stats64(struct net_device
dev_fetch_sw_netstats(stats, dev->tstats);
}
@ -97,7 +97,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static const struct net_device_ops ieee80211_dataif_ops = {
.ndo_open = ieee80211_open,
.ndo_stop = ieee80211_stop,
@@ -842,6 +857,7 @@ static const struct net_device_ops ieee8
@@ -857,6 +872,7 @@ static const struct net_device_ops ieee8
.ndo_set_rx_mode = ieee80211_set_multicast_list,
.ndo_set_mac_address = ieee80211_change_mac,
.ndo_get_stats64 = ieee80211_get_stats64,
@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
};
#if LINUX_VERSION_IS_GEQ(5,2,0)
@@ -966,6 +982,7 @@ static const struct net_device_ops ieee8
@@ -981,6 +997,7 @@ static const struct net_device_ops ieee8
#if LINUX_VERSION_IS_GEQ(5,13,0)
.ndo_fill_forward_path = ieee80211_netdev_fill_forward_path,
#endif

View File

@ -12,7 +12,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
@@ -4844,9 +4844,6 @@ static void iwl_mvm_mac_flush(struct iee
@@ -4848,9 +4848,6 @@ static void iwl_mvm_mac_flush(struct iee
return;
}
@ -22,7 +22,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
/* Make sure we're done with the deferred traffic before flushing */
flush_work(&mvm->add_stream_wk);
@@ -4864,9 +4861,6 @@ static void iwl_mvm_mac_flush(struct iee
@@ -4868,9 +4865,6 @@ static void iwl_mvm_mac_flush(struct iee
if (mvmsta->vif != vif)
continue;

View File

@ -12,7 +12,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -3927,6 +3927,10 @@ struct ieee80211_prep_tx_info {
@@ -3928,6 +3928,10 @@ struct ieee80211_prep_tx_info {
* Note that vif can be NULL.
* The callback can sleep.
*
@ -23,7 +23,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
* @channel_switch: Drivers that need (or want) to offload the channel
* switch operation for CSAs received from the AP may implement this
* callback. They must then call ieee80211_chswitch_done() to indicate
@@ -4381,6 +4385,8 @@ struct ieee80211_ops {
@@ -4382,6 +4386,8 @@ struct ieee80211_ops {
#endif
void (*flush)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
u32 queues, bool drop);

View File

@ -11,7 +11,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
@@ -4880,6 +4880,31 @@ static void iwl_mvm_mac_flush(struct iee
@@ -4887,6 +4887,31 @@ static void iwl_mvm_mac_flush(struct iee
iwl_trans_wait_tx_queues_empty(mvm->trans, msk);
}
@ -43,7 +43,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
static int iwl_mvm_mac_get_survey(struct ieee80211_hw *hw, int idx,
struct survey_info *survey)
{
@@ -5407,6 +5432,7 @@ const struct ieee80211_ops iwl_mvm_hw_op
@@ -5414,6 +5439,7 @@ const struct ieee80211_ops iwl_mvm_hw_op
.mgd_complete_tx = iwl_mvm_mac_mgd_complete_tx,
.mgd_protect_tdls_discover = iwl_mvm_mac_mgd_protect_tdls_discover,
.flush = iwl_mvm_mac_flush,

View File

@ -38,7 +38,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -5265,6 +5265,74 @@ ieee80211_beacon_get_template(struct iee
@@ -5266,6 +5266,74 @@ ieee80211_beacon_get_template(struct iee
unsigned int link_id);
/**
@ -129,7 +129,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
}
new = kzalloc(size, GFP_KERNEL);
@@ -3396,8 +3396,11 @@ cfg80211_beacon_dup(struct cfg80211_beac
@@ -3397,8 +3397,11 @@ cfg80211_beacon_dup(struct cfg80211_beac
len = beacon->head_len + beacon->tail_len + beacon->beacon_ies_len +
beacon->proberesp_ies_len + beacon->assocresp_ies_len +
@ -222,7 +222,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
offs->mbssid_off = skb->len - mbssid_len;
}
@@ -5288,12 +5298,51 @@ ieee80211_beacon_get_ap(struct ieee80211
@@ -5290,12 +5300,51 @@ ieee80211_beacon_get_ap(struct ieee80211
return skb;
}
@ -275,7 +275,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
{
struct ieee80211_local *local = hw_to_local(hw);
struct beacon_data *beacon = NULL;
@@ -5322,8 +5371,29 @@ __ieee80211_beacon_get(struct ieee80211_
@@ -5324,8 +5373,29 @@ __ieee80211_beacon_get(struct ieee80211_
if (!beacon)
goto out;
@ -307,7 +307,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
} else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
struct ieee80211_hdr *hdr;
@@ -5411,10 +5481,50 @@ ieee80211_beacon_get_template(struct iee
@@ -5413,10 +5483,50 @@ ieee80211_beacon_get_template(struct iee
struct ieee80211_mutable_offsets *offs,
unsigned int link_id)
{
@ -359,7 +359,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
struct sk_buff *ieee80211_beacon_get_tim(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
u16 *tim_offset, u16 *tim_length,
@@ -5422,7 +5532,9 @@ struct sk_buff *ieee80211_beacon_get_tim
@@ -5424,7 +5534,9 @@ struct sk_buff *ieee80211_beacon_get_tim
{
struct ieee80211_mutable_offsets offs = {};
struct sk_buff *bcn = __ieee80211_beacon_get(hw, vif, &offs, false,

View File

@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
{
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -497,6 +497,8 @@ void cfg80211_set_dfs_state(struct wiphy
@@ -491,6 +491,8 @@ void cfg80211_set_dfs_state(struct wiphy
enum nl80211_dfs_state dfs_state);
void cfg80211_dfs_channels_update_work(struct work_struct *work);

View File

@ -76,7 +76,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -283,6 +283,8 @@ struct cfg80211_event {
@@ -277,6 +277,8 @@ struct cfg80211_event {
} ij;
struct {
u8 bssid[ETH_ALEN];
@ -85,7 +85,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
} pa;
};
};
@@ -427,7 +429,8 @@ int cfg80211_disconnect(struct cfg80211_
@@ -421,7 +423,8 @@ int cfg80211_disconnect(struct cfg80211_
bool wextev);
void __cfg80211_roamed(struct wireless_dev *wdev,
struct cfg80211_roam_info *info);
@ -97,7 +97,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
void cfg80211_autodisconnect_wk(struct work_struct *work);
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -18022,7 +18022,8 @@ void nl80211_send_roamed(struct cfg80211
@@ -18036,7 +18036,8 @@ void nl80211_send_roamed(struct cfg80211
}
void nl80211_send_port_authorized(struct cfg80211_registered_device *rdev,
@ -107,7 +107,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
{
struct sk_buff *msg;
void *hdr;
@@ -18042,6 +18043,11 @@ void nl80211_send_port_authorized(struct
@@ -18056,6 +18057,11 @@ void nl80211_send_port_authorized(struct
nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, bssid))
goto nla_put_failure;
@ -133,7 +133,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
const u8 *ie, size_t ie_len, bool from_ap);
--- a/net/wireless/sme.c
+++ b/net/wireless/sme.c
@@ -1266,7 +1266,8 @@ out:
@@ -1267,7 +1267,8 @@ out:
}
EXPORT_SYMBOL(cfg80211_roamed);
@ -143,7 +143,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
{
ASSERT_WDEV_LOCK(wdev);
@@ -1279,11 +1280,11 @@ void __cfg80211_port_authorized(struct w
@@ -1280,11 +1281,11 @@ void __cfg80211_port_authorized(struct w
return;
nl80211_send_port_authorized(wiphy_to_rdev(wdev->wiphy), wdev->netdev,
@ -157,7 +157,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
{
struct wireless_dev *wdev = dev->ieee80211_ptr;
struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
@@ -1293,12 +1294,15 @@ void cfg80211_port_authorized(struct net
@@ -1294,12 +1295,15 @@ void cfg80211_port_authorized(struct net
if (WARN_ON(!bssid))
return;

View File

@ -18,7 +18,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1477,6 +1477,7 @@ enum mac80211_rx_encoding {
@@ -1478,6 +1478,7 @@ enum mac80211_rx_encoding {
RX_ENC_HT,
RX_ENC_VHT,
RX_ENC_HE,
@ -26,7 +26,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
};
/**
@@ -1510,7 +1511,7 @@ enum mac80211_rx_encoding {
@@ -1511,7 +1512,7 @@ enum mac80211_rx_encoding {
* @antenna: antenna used
* @rate_idx: index of data rate into band's supported rates or MCS index if
* HT or VHT is used (%RX_FLAG_HT/%RX_FLAG_VHT)
@ -35,7 +35,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
* @flag: %RX_FLAG_\*
* @encoding: &enum mac80211_rx_encoding
* @bw: &enum rate_info_bw
@@ -1518,6 +1519,8 @@ enum mac80211_rx_encoding {
@@ -1519,6 +1520,8 @@ enum mac80211_rx_encoding {
* @he_ru: HE RU, from &enum nl80211_he_ru_alloc
* @he_gi: HE GI, from &enum nl80211_he_gi
* @he_dcm: HE DCM value
@ -44,7 +44,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
* @rx_flags: internal RX flags for mac80211
* @ampdu_reference: A-MPDU reference number, must be a different value for
* each A-MPDU but the same for each subframe within one A-MPDU
@@ -1539,8 +1542,18 @@ struct ieee80211_rx_status {
@@ -1540,8 +1543,18 @@ struct ieee80211_rx_status {
u32 flag;
u16 freq: 13, freq_offset: 1;
u8 enc_flags;
@ -157,7 +157,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
return STA_STATS_RATE_INVALID;
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -3902,6 +3902,19 @@ u64 ieee80211_calculate_rx_timestamp(str
@@ -3904,6 +3904,19 @@ u64 ieee80211_calculate_rx_timestamp(str
/* Fill cfg80211 rate info */
switch (status->encoding) {

View File

@ -62,7 +62,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
bool mu_mimo_owner;
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -4197,7 +4197,7 @@ static int ieee80211_set_ap_chanwidth(st
@@ -4198,7 +4198,7 @@ static int ieee80211_set_ap_chanwidth(st
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
struct ieee80211_link_data *link;
int ret;
@ -73,7 +73,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/net/mac80211/chan.c
+++ b/net/mac80211/chan.c
@@ -1935,7 +1935,7 @@ int ieee80211_link_use_reserved_context(
@@ -1937,7 +1937,7 @@ int ieee80211_link_use_reserved_context(
int ieee80211_link_change_bandwidth(struct ieee80211_link_data *link,
const struct cfg80211_chan_def *chandef,

View File

@ -152,7 +152,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
if (!cfg80211_reg_can_beacon_relax(&rdev->wiphy, &params->chandef,
wdev->iftype)) {
err = -EINVAL;
@@ -10107,6 +10131,14 @@ skip_beacons:
@@ -10121,6 +10145,14 @@ skip_beacons:
if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX])
params.block_tx = true;

View File

@ -91,7 +91,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
* ieee80211_operating_class_to_band - convert operating class to band
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -3612,7 +3612,8 @@ static int __ieee80211_csa_finalize(stru
@@ -3613,7 +3613,8 @@ static int __ieee80211_csa_finalize(stru
if (err)
return err;
@ -101,7 +101,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
return 0;
}
@@ -3884,7 +3885,7 @@ __ieee80211_channel_switch(struct wiphy
@@ -3885,7 +3886,7 @@ __ieee80211_channel_switch(struct wiphy
cfg80211_ch_switch_started_notify(sdata->dev,
&sdata->deflink.csa_chandef, 0,
@ -132,7 +132,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
/* use driver's channel switch callback */
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -19081,7 +19081,7 @@ static void nl80211_ch_switch_notify(str
@@ -19095,7 +19095,7 @@ static void nl80211_ch_switch_notify(str
struct cfg80211_chan_def *chandef,
gfp_t gfp,
enum nl80211_commands notif,
@ -141,7 +141,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
{
struct wireless_dev *wdev = netdev->ieee80211_ptr;
struct sk_buff *msg;
@@ -19115,6 +19115,9 @@ static void nl80211_ch_switch_notify(str
@@ -19129,6 +19129,9 @@ static void nl80211_ch_switch_notify(str
goto nla_put_failure;
}
@ -151,7 +151,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
genlmsg_end(msg, hdr);
genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
@@ -19127,7 +19130,7 @@ static void nl80211_ch_switch_notify(str
@@ -19141,7 +19144,7 @@ static void nl80211_ch_switch_notify(str
void cfg80211_ch_switch_notify(struct net_device *dev,
struct cfg80211_chan_def *chandef,
@ -160,7 +160,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
{
struct wireless_dev *wdev = dev->ieee80211_ptr;
struct wiphy *wiphy = wdev->wiphy;
@@ -19136,7 +19139,7 @@ void cfg80211_ch_switch_notify(struct ne
@@ -19150,7 +19153,7 @@ void cfg80211_ch_switch_notify(struct ne
ASSERT_WDEV_LOCK(wdev);
WARN_INVALID_LINK_ID(wdev, link_id);
@ -169,7 +169,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
switch (wdev->iftype) {
case NL80211_IFTYPE_STATION:
@@ -19164,14 +19167,15 @@ void cfg80211_ch_switch_notify(struct ne
@@ -19178,14 +19181,15 @@ void cfg80211_ch_switch_notify(struct ne
cfg80211_sched_dfs_chan_update(rdev);
nl80211_ch_switch_notify(rdev, dev, link_id, chandef, GFP_KERNEL,
@ -187,7 +187,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
{
struct wireless_dev *wdev = dev->ieee80211_ptr;
struct wiphy *wiphy = wdev->wiphy;
@@ -19180,11 +19184,13 @@ void cfg80211_ch_switch_started_notify(s
@@ -19194,11 +19198,13 @@ void cfg80211_ch_switch_started_notify(s
ASSERT_WDEV_LOCK(wdev);
WARN_INVALID_LINK_ID(wdev, link_id);

View File

@ -59,7 +59,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
if (sdata->vif.type == NL80211_IFTYPE_AP &&
params->mbssid_config.tx_wdev) {
err = ieee80211_set_ap_mbssid_options(sdata,
@@ -3571,6 +3576,12 @@ static int __ieee80211_csa_finalize(stru
@@ -3572,6 +3577,12 @@ static int __ieee80211_csa_finalize(stru
lockdep_assert_held(&local->mtx);
lockdep_assert_held(&local->chanctx_mtx);
@ -72,7 +72,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
/*
* using reservation isn't immediate as it may be deferred until later
* with multi-vif. once reservation is complete it will re-schedule the
@@ -3613,7 +3624,7 @@ static int __ieee80211_csa_finalize(stru
@@ -3614,7 +3625,7 @@ static int __ieee80211_csa_finalize(stru
return err;
cfg80211_ch_switch_notify(sdata->dev, &sdata->deflink.csa_chandef, 0,
@ -81,7 +81,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
return 0;
}
@@ -3875,9 +3886,13 @@ __ieee80211_channel_switch(struct wiphy
@@ -3876,9 +3887,13 @@ __ieee80211_channel_switch(struct wiphy
goto out;
}
@ -95,7 +95,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
if (sdata->deflink.csa_block_tx)
ieee80211_stop_vif_queues(local, sdata,
@@ -3885,7 +3900,8 @@ __ieee80211_channel_switch(struct wiphy
@@ -3886,7 +3901,8 @@ __ieee80211_channel_switch(struct wiphy
cfg80211_ch_switch_started_notify(sdata->dev,
&sdata->deflink.csa_chandef, 0,

View File

@ -17,7 +17,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -2497,21 +2497,55 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2499,21 +2499,55 @@ int ieee80211_reconfig(struct ieee80211_
/* Finally also reconfigure all the BSS information */
list_for_each_entry(sdata, &local->interfaces, list) {
@ -77,7 +77,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
}
switch (sdata->vif.type) {
@@ -2531,42 +2565,42 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2533,42 +2567,42 @@ int ieee80211_reconfig(struct ieee80211_
&sdata->deflink.tx_conf[i]);
break;
}
@ -150,7 +150,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
break;
case NL80211_IFTYPE_OCB:
changed |= BSS_CHANGED_OCB;
@@ -2601,6 +2635,7 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2603,6 +2637,7 @@ int ieee80211_reconfig(struct ieee80211_
case NL80211_IFTYPE_NAN:
res = ieee80211_reconfig_nan(sdata);
if (res < 0) {
@ -158,7 +158,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
ieee80211_handle_reconfig_failure(local);
return res;
}
@@ -2618,6 +2653,10 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2620,6 +2655,10 @@ int ieee80211_reconfig(struct ieee80211_
WARN_ON(1);
break;
}

View File

@ -17,7 +17,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -2348,6 +2348,35 @@ static int ieee80211_reconfig_nan(struct
@@ -2350,6 +2350,35 @@ static int ieee80211_reconfig_nan(struct
return 0;
}
@ -53,7 +53,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
int ieee80211_reconfig(struct ieee80211_local *local)
{
struct ieee80211_hw *hw = &local->hw;
@@ -2610,7 +2639,13 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2612,7 +2641,13 @@ int ieee80211_reconfig(struct ieee80211_
changed |= BSS_CHANGED_IBSS;
fallthrough;
case NL80211_IFTYPE_AP:
@ -68,7 +68,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
if (sdata->vif.bss_conf.ftm_responder == 1 &&
wiphy_ext_feature_isset(sdata->local->hw.wiphy,
@@ -2620,6 +2655,13 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2622,6 +2657,13 @@ int ieee80211_reconfig(struct ieee80211_
if (sdata->vif.type == NL80211_IFTYPE_AP) {
changed |= BSS_CHANGED_AP_PROBE_RESP;

View File

@ -33,7 +33,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1936,6 +1936,27 @@ struct ieee80211_vif {
@@ -1937,6 +1937,27 @@ struct ieee80211_vif {
u8 drv_priv[] __aligned(sizeof(void *));
};
@ -132,7 +132,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
chanctx_conf = rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -542,7 +542,7 @@ static void ieee80211_do_stop(struct iee
@@ -543,7 +543,7 @@ static void ieee80211_do_stop(struct iee
cancel_work_sync(&sdata->recalc_smps);
sdata_lock(sdata);
@ -141,7 +141,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
"destroying interface with valid links 0x%04x\n",
sdata->vif.valid_links);
@@ -1855,7 +1855,7 @@ static int ieee80211_runtime_change_ifty
@@ -1870,7 +1870,7 @@ static int ieee80211_runtime_change_ifty
return -EBUSY;
/* for now, don't support changing while links exist */
@ -456,7 +456,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
chanctx_conf =
rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
if (unlikely(!chanctx_conf)) {
@@ -6008,7 +6008,7 @@ void __ieee80211_tx_skb_tid_band(struct
@@ -6010,7 +6010,7 @@ void __ieee80211_tx_skb_tid_band(struct
BUILD_BUG_ON(!FIELD_FIT(IEEE80211_TX_CTRL_MLO_LINK,
IEEE80211_LINK_UNSPECIFIED));
@ -465,7 +465,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
link = 0;
} else if (link_id >= 0) {
link = link_id;
@@ -6054,7 +6054,7 @@ void ieee80211_tx_skb_tid(struct ieee802
@@ -6056,7 +6056,7 @@ void ieee80211_tx_skb_tid(struct ieee802
enum nl80211_band band;
rcu_read_lock();
@ -476,7 +476,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1701,7 +1701,7 @@ void ieee80211_send_auth(struct ieee8021
@@ -1703,7 +1703,7 @@ void ieee80211_send_auth(struct ieee8021
struct ieee80211_local *local = sdata->local;
struct sk_buff *skb;
struct ieee80211_mgmt *mgmt;
@ -485,7 +485,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
struct {
u8 id;
u8 len;
@@ -2546,7 +2546,7 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2548,7 +2548,7 @@ int ieee80211_reconfig(struct ieee80211_
continue;
sdata_lock(sdata);
@ -494,7 +494,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
struct ieee80211_bss_conf *old[IEEE80211_MLD_MAX_NUM_LINKS] = {
[0] = &sdata->vif.bss_conf,
};
@@ -2566,7 +2566,7 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2568,7 +2568,7 @@ int ieee80211_reconfig(struct ieee80211_
for (link_id = 0;
link_id < ARRAY_SIZE(sdata->vif.link_conf);
link_id++) {
@ -503,7 +503,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
!(sdata->vif.active_links & BIT(link_id)))
continue;
@@ -2598,12 +2598,12 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2600,12 +2600,12 @@ int ieee80211_reconfig(struct ieee80211_
if (sdata->vif.bss_conf.mu_mimo_owner)
changed |= BSS_CHANGED_MU_GROUPS;
@ -518,7 +518,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
changed |= BSS_CHANGED_ASSOC |
BSS_CHANGED_ARP_FILTER |
BSS_CHANGED_PS;
@@ -2641,7 +2641,7 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2643,7 +2643,7 @@ int ieee80211_reconfig(struct ieee80211_
case NL80211_IFTYPE_AP:
changed |= BSS_CHANGED_P2P_PS;
@ -527,7 +527,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
ieee80211_vif_cfg_change_notify(sdata,
BSS_CHANGED_SSID);
else
@@ -2655,7 +2655,7 @@ int ieee80211_reconfig(struct ieee80211_
@@ -2657,7 +2657,7 @@ int ieee80211_reconfig(struct ieee80211_
if (sdata->vif.type == NL80211_IFTYPE_AP) {
changed |= BSS_CHANGED_AP_PROBE_RESP;

View File

@ -18,7 +18,7 @@
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1714,6 +1714,7 @@ enum ieee80211_smps_mode {
@@ -1715,6 +1715,7 @@ enum ieee80211_smps_mode {
*
* @power_level: requested transmit power (in dBm), backward compatibility
* value only that is set to the minimum of all interfaces
@ -26,7 +26,7 @@
*
* @chandef: the channel definition to tune to
* @radar_enabled: whether radar detection is enabled
@@ -1734,6 +1735,7 @@ enum ieee80211_smps_mode {
@@ -1735,6 +1736,7 @@ enum ieee80211_smps_mode {
struct ieee80211_conf {
u32 flags;
int power_level, dynamic_ps_timeout;
@ -56,7 +56,7 @@
__NL80211_ATTR_AFTER_LAST,
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -3079,6 +3079,19 @@ static int ieee80211_get_tx_power(struct
@@ -3080,6 +3080,19 @@ static int ieee80211_get_tx_power(struct
return 0;
}
@ -76,7 +76,7 @@
static void ieee80211_rfkill_poll(struct wiphy *wiphy)
{
struct ieee80211_local *local = wiphy_priv(wiphy);
@@ -5009,6 +5022,7 @@ const struct cfg80211_ops mac80211_confi
@@ -5010,6 +5023,7 @@ const struct cfg80211_ops mac80211_confi
.set_wiphy_params = ieee80211_set_wiphy_params,
.set_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power,