]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: replace RF mutex with wiphy lock assertion
authorZong-Zhe Yang <kevin_yang@realtek.com>
Tue, 10 Mar 2026 08:01:43 +0000 (16:01 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 16 Mar 2026 06:19:37 +0000 (14:19 +0800)
Now, stack has introduced wiphy lock. And, the normal paths calling
RF read/write should be under wiphy lock. So, replace RF mutex with
wiphy lock assertion. Besides, in dbgfs paths, add the corresponding
lock option.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260310080146.31113-11-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.c
drivers/net/wireless/realtek/rtw89/core.h
drivers/net/wireless/realtek/rtw89/debug.c

index 6ab99a3577f32d99fe0b23c42eb1cdf803da0eee..18dbf3664f0a1e193ea1c4821a65d214089d488d 100644 (file)
@@ -6147,7 +6147,6 @@ int rtw89_core_init(struct rtw89_dev *rtwdev)
                return -ENOMEM;
        spin_lock_init(&rtwdev->ba_lock);
        spin_lock_init(&rtwdev->rpwm_lock);
-       mutex_init(&rtwdev->rf_mutex);
        rtwdev->total_sta_assoc = 0;
 
        rtw89_init_wait(&rtwdev->mcc.wait);
@@ -6206,7 +6205,6 @@ void rtw89_core_deinit(struct rtw89_dev *rtwdev)
        __rtw89_fw_free_all_early_h2c(rtwdev);
 
        destroy_workqueue(rtwdev->txq_wq);
-       mutex_destroy(&rtwdev->rf_mutex);
 }
 EXPORT_SYMBOL(rtw89_core_deinit);
 
index 01573150ab3c31d3f83ccb6ed39ea8ed50d2ce05..ce04ecaa3a5e5ea57da82d3298f0b930fbe86c7c 100644 (file)
@@ -6182,8 +6182,6 @@ struct rtw89_dev {
        refcount_t refcount_ap_info;
 
        struct list_head rtwvifs_list;
-       /* used to protect rf read write */
-       struct mutex rf_mutex;
        struct workqueue_struct *txq_wq;
        struct work_struct txq_work;
        struct delayed_work txq_reinvoke_work;
@@ -6808,22 +6806,18 @@ static inline u32
 rtw89_read_rf(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
              u32 addr, u32 mask)
 {
-       u32 val;
-
-       mutex_lock(&rtwdev->rf_mutex);
-       val = rtwdev->chip->ops->read_rf(rtwdev, rf_path, addr, mask);
-       mutex_unlock(&rtwdev->rf_mutex);
+       lockdep_assert_wiphy(rtwdev->hw->wiphy);
 
-       return val;
+       return rtwdev->chip->ops->read_rf(rtwdev, rf_path, addr, mask);
 }
 
 static inline void
 rtw89_write_rf(struct rtw89_dev *rtwdev, enum rtw89_rf_path rf_path,
               u32 addr, u32 mask, u32 data)
 {
-       mutex_lock(&rtwdev->rf_mutex);
+       lockdep_assert_wiphy(rtwdev->hw->wiphy);
+
        rtwdev->chip->ops->write_rf(rtwdev, rf_path, addr, mask, data);
-       mutex_unlock(&rtwdev->rf_mutex);
 }
 
 static inline u32 rtw89_read32_pci_cfg(struct rtw89_dev *rtwdev, u32 addr)
index aee0f25e036a261f348f64566e1fe40fd6d4e29d..d461ffc6dc9e89bcb5e42679d1c4d3615bc5f86e 100644 (file)
@@ -4859,9 +4859,9 @@ rtw89_debug_priv_beacon_info_get(struct rtw89_dev *rtwdev,
 static const struct rtw89_debugfs rtw89_debugfs_templ = {
        .read_reg = rtw89_debug_priv_select_and_get(read_reg),
        .write_reg = rtw89_debug_priv_set(write_reg),
-       .read_rf = rtw89_debug_priv_select_and_get(read_rf),
-       .write_rf = rtw89_debug_priv_set(write_rf),
-       .rf_reg_dump = rtw89_debug_priv_get(rf_reg_dump, RSIZE_8K),
+       .read_rf = rtw89_debug_priv_select_and_get(read_rf, RLOCK),
+       .write_rf = rtw89_debug_priv_set(write_rf, WLOCK),
+       .rf_reg_dump = rtw89_debug_priv_get(rf_reg_dump, RSIZE_8K, RLOCK),
        .txpwr_table = rtw89_debug_priv_get(txpwr_table, RSIZE_20K, RLOCK),
        .mac_reg_dump = rtw89_debug_priv_select_and_get(mac_reg_dump, RSIZE_128K),
        .mac_mem_dump = rtw89_debug_priv_select_and_get(mac_mem_dump, RSIZE_16K, RLOCK),