aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/subsys/250-mac80211-populate-debugfs-only-after-cfg80211-init.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/250-mac80211-populate-debugfs-only-after-cfg80211-init.patch')
-rw-r--r--package/kernel/mac80211/patches/subsys/250-mac80211-populate-debugfs-only-after-cfg80211-init.patch248
1 files changed, 0 insertions, 248 deletions
diff --git a/package/kernel/mac80211/patches/subsys/250-mac80211-populate-debugfs-only-after-cfg80211-init.patch b/package/kernel/mac80211/patches/subsys/250-mac80211-populate-debugfs-only-after-cfg80211-init.patch
deleted file mode 100644
index efe216c530..0000000000
--- a/package/kernel/mac80211/patches/subsys/250-mac80211-populate-debugfs-only-after-cfg80211-init.patch
+++ /dev/null
@@ -1,248 +0,0 @@
-From 6cb5f3ea4654faf8c28b901266e960b1a4787b26 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg@intel.com>
-Date: Thu, 23 Apr 2020 11:13:49 +0200
-Subject: [PATCH] mac80211: populate debugfs only after cfg80211 init
-
-When fixing the initialization race, we neglected to account for
-the fact that debugfs is initialized in wiphy_register(), and
-some debugfs things went missing (or rather were rerooted to the
-global debugfs root).
-
-Fix this by adding debugfs entries only after wiphy_register().
-This requires some changes in the rate control code since it
-currently adds debugfs at alloc time, which can no longer be
-done after the reordering.
-
-Reported-by: Jouni Malinen <j@w1.fi>
-Reported-by: kernel test robot <rong.a.chen@intel.com>
-Reported-by: Hauke Mehrtens <hauke@hauke-m.de>
-Reported-by: Felix Fietkau <nbd@nbd.name>
-Cc: stable@vger.kernel.org
-Fixes: 52e04b4ce5d0 ("mac80211: fix race in ieee80211_register_hw()")
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-Acked-by: Sumit Garg <sumit.garg@linaro.org>
-Link: https://lore.kernel.org/r/20200423111344.0e00d3346f12.Iadc76a03a55093d94391fc672e996a458702875d@changeid
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
- drivers/net/wireless/intel/iwlegacy/3945-rs.c | 2 +-
- drivers/net/wireless/intel/iwlegacy/4965-rs.c | 2 +-
- drivers/net/wireless/intel/iwlwifi/dvm/rs.c | 2 +-
- drivers/net/wireless/intel/iwlwifi/mvm/rs.c | 2 +-
- drivers/net/wireless/realtek/rtlwifi/rc.c | 2 +-
- include/net/mac80211.h | 4 +++-
- net/mac80211/main.c | 5 ++--
- net/mac80211/rate.c | 15 ++++--------
- net/mac80211/rate.h | 23 +++++++++++++++++++
- net/mac80211/rc80211_minstrel_ht.c | 19 ++++++++++-----
- 10 files changed, 51 insertions(+), 25 deletions(-)
-
---- a/drivers/net/wireless/intel/iwlegacy/3945-rs.c
-+++ b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
-@@ -374,7 +374,7 @@ out:
- }
-
- static void *
--il3945_rs_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir)
-+il3945_rs_alloc(struct ieee80211_hw *hw)
- {
- return hw->priv;
- }
---- a/drivers/net/wireless/intel/iwlegacy/4965-rs.c
-+++ b/drivers/net/wireless/intel/iwlegacy/4965-rs.c
-@@ -2474,7 +2474,7 @@ il4965_rs_fill_link_cmd(struct il_priv *
- }
-
- static void *
--il4965_rs_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir)
-+il4965_rs_alloc(struct ieee80211_hw *hw)
- {
- return hw->priv;
- }
---- a/drivers/net/wireless/intel/iwlwifi/dvm/rs.c
-+++ b/drivers/net/wireless/intel/iwlwifi/dvm/rs.c
-@@ -3019,7 +3019,7 @@ static void rs_fill_link_cmd(struct iwl_
- cpu_to_le16(priv->lib->bt_params->agg_time_limit);
- }
-
--static void *rs_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir)
-+static void *rs_alloc(struct ieee80211_hw *hw)
- {
- return hw->priv;
- }
---- a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
-+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
-@@ -3665,7 +3665,7 @@ static void rs_fill_lq_cmd(struct iwl_mv
- cpu_to_le16(iwl_mvm_coex_agg_time_limit(mvm, sta));
- }
-
--static void *rs_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir)
-+static void *rs_alloc(struct ieee80211_hw *hw)
- {
- return hw->priv;
- }
---- a/drivers/net/wireless/realtek/rtlwifi/rc.c
-+++ b/drivers/net/wireless/realtek/rtlwifi/rc.c
-@@ -261,7 +261,7 @@ static void rtl_rate_update(void *ppriv,
- {
- }
-
--static void *rtl_rate_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir)
-+static void *rtl_rate_alloc(struct ieee80211_hw *hw)
- {
- struct rtl_priv *rtlpriv = rtl_priv(hw);
- return rtlpriv;
---- a/include/net/mac80211.h
-+++ b/include/net/mac80211.h
-@@ -5969,7 +5969,9 @@ enum rate_control_capabilities {
- struct rate_control_ops {
- unsigned long capa;
- const char *name;
-- void *(*alloc)(struct ieee80211_hw *hw, struct dentry *debugfsdir);
-+ void *(*alloc)(struct ieee80211_hw *hw);
-+ void (*add_debugfs)(struct ieee80211_hw *hw, void *priv,
-+ struct dentry *debugfsdir);
- void (*free)(void *priv);
-
- void *(*alloc_sta)(void *priv, struct ieee80211_sta *sta, gfp_t gfp);
---- a/net/mac80211/main.c
-+++ b/net/mac80211/main.c
-@@ -1163,8 +1163,6 @@ int ieee80211_register_hw(struct ieee802
- local->tx_headroom = max_t(unsigned int , local->hw.extra_tx_headroom,
- IEEE80211_TX_STATUS_HEADROOM);
-
-- debugfs_hw_add(local);
--
- /*
- * if the driver doesn't specify a max listen interval we
- * use 5 which should be a safe default
-@@ -1256,6 +1254,9 @@ int ieee80211_register_hw(struct ieee802
- if (result < 0)
- goto fail_wiphy_register;
-
-+ debugfs_hw_add(local);
-+ rate_control_add_debugfs(local);
-+
- rtnl_lock();
-
- /* add one default STA interface if supported */
---- a/net/mac80211/rate.c
-+++ b/net/mac80211/rate.c
-@@ -214,17 +214,16 @@ static ssize_t rcname_read(struct file *
- ref->ops->name, len);
- }
-
--static const struct file_operations rcname_ops = {
-+const struct file_operations rcname_ops = {
- .read = rcname_read,
- .open = simple_open,
- .llseek = default_llseek,
- };
- #endif
-
--static struct rate_control_ref *rate_control_alloc(const char *name,
-- struct ieee80211_local *local)
-+static struct rate_control_ref *
-+rate_control_alloc(const char *name, struct ieee80211_local *local)
- {
-- struct dentry *debugfsdir = NULL;
- struct rate_control_ref *ref;
-
- ref = kmalloc(sizeof(struct rate_control_ref), GFP_KERNEL);
-@@ -234,13 +233,7 @@ static struct rate_control_ref *rate_con
- if (!ref->ops)
- goto free;
-
--#ifdef CPTCFG_MAC80211_DEBUGFS
-- debugfsdir = debugfs_create_dir("rc", local->hw.wiphy->debugfsdir);
-- local->debugfs.rcdir = debugfsdir;
-- debugfs_create_file("name", 0400, debugfsdir, ref, &rcname_ops);
--#endif
--
-- ref->priv = ref->ops->alloc(&local->hw, debugfsdir);
-+ ref->priv = ref->ops->alloc(&local->hw);
- if (!ref->priv)
- goto free;
- return ref;
---- a/net/mac80211/rate.h
-+++ b/net/mac80211/rate.h
-@@ -60,6 +60,29 @@ static inline void rate_control_add_sta_
- #endif
- }
-
-+extern const struct file_operations rcname_ops;
-+
-+static inline void rate_control_add_debugfs(struct ieee80211_local *local)
-+{
-+#ifdef CPTCFG_MAC80211_DEBUGFS
-+ struct dentry *debugfsdir;
-+
-+ if (!local->rate_ctrl)
-+ return;
-+
-+ if (!local->rate_ctrl->ops->add_debugfs)
-+ return;
-+
-+ debugfsdir = debugfs_create_dir("rc", local->hw.wiphy->debugfsdir);
-+ local->debugfs.rcdir = debugfsdir;
-+ debugfs_create_file("name", 0400, debugfsdir,
-+ local->rate_ctrl, &rcname_ops);
-+
-+ local->rate_ctrl->ops->add_debugfs(&local->hw, local->rate_ctrl->priv,
-+ debugfsdir);
-+#endif
-+}
-+
- void ieee80211_check_rate_mask(struct ieee80211_sub_if_data *sdata);
-
- /* Get a reference to the rate control algorithm. If `name' is NULL, get the
---- a/net/mac80211/rc80211_minstrel_ht.c
-+++ b/net/mac80211/rc80211_minstrel_ht.c
-@@ -1635,7 +1635,7 @@ minstrel_ht_init_cck_rates(struct minstr
- }
-
- static void *
--minstrel_ht_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir)
-+minstrel_ht_alloc(struct ieee80211_hw *hw)
- {
- struct minstrel_priv *mp;
-
-@@ -1673,7 +1673,17 @@ minstrel_ht_alloc(struct ieee80211_hw *h
- mp->update_interval = HZ / 10;
- mp->new_avg = true;
-
-+ minstrel_ht_init_cck_rates(mp);
-+
-+ return mp;
-+}
-+
- #ifdef CPTCFG_MAC80211_DEBUGFS
-+static void minstrel_ht_add_debugfs(struct ieee80211_hw *hw, void *priv,
-+ struct dentry *debugfsdir)
-+{
-+ struct minstrel_priv *mp = priv;
-+
- mp->fixed_rate_idx = (u32) -1;
- debugfs_create_u32("fixed_rate_idx", S_IRUGO | S_IWUGO, debugfsdir,
- &mp->fixed_rate_idx);
-@@ -1681,12 +1691,8 @@ minstrel_ht_alloc(struct ieee80211_hw *h
- &mp->sample_switch);
- debugfs_create_bool("new_avg", S_IRUGO | S_IWUSR, debugfsdir,
- &mp->new_avg);
--#endif
--
-- minstrel_ht_init_cck_rates(mp);
--
-- return mp;
- }
-+#endif
-
- static void
- minstrel_ht_free(void *priv)
-@@ -1725,6 +1731,7 @@ static const struct rate_control_ops mac
- .alloc = minstrel_ht_alloc,
- .free = minstrel_ht_free,
- #ifdef CPTCFG_MAC80211_DEBUGFS
-+ .add_debugfs = minstrel_ht_add_debugfs,
- .add_sta_debugfs = minstrel_ht_add_sta_debugfs,
- #endif
- .get_expected_throughput = minstrel_ht_get_expected_throughput,