]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw89: add chip_ops::update_beacon to abstract update beacon operation
authorPing-Ke Shih <pkshih@realtek.com>
Mon, 8 Jan 2024 09:13:59 +0000 (17:13 +0800)
committerKalle Valo <kvalo@kernel.org>
Fri, 12 Jan 2024 17:10:53 +0000 (19:10 +0200)
Since coming WiFi 7 and existing chips use different update_beacon()
format, add to abstract selection of H2C command.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://msgid.link/20240108091359.67636-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/chan.c
drivers/net/wireless/realtek/rtw89/core.c
drivers/net/wireless/realtek/rtw89/core.h
drivers/net/wireless/realtek/rtw89/fw.c
drivers/net/wireless/realtek/rtw89/fw.h
drivers/net/wireless/realtek/rtw89/mac80211.c
drivers/net/wireless/realtek/rtw89/rtw8851b.c
drivers/net/wireless/realtek/rtw89/rtw8852a.c
drivers/net/wireless/realtek/rtw89/rtw8852b.c
drivers/net/wireless/realtek/rtw89/rtw8852c.c
drivers/net/wireless/realtek/rtw89/rtw8922a.c

index cbf6821af6b8ae2ccca8a51e159e473a5c5d5804..21449cb9b069a232a616ec76fccab890f5f5fce7 100644 (file)
@@ -1494,7 +1494,7 @@ static void rtw89_mcc_handle_beacon_noa(struct rtw89_dev *rtwdev, bool enable)
        if (!rtwvif_go->chanctx_assigned)
                return;
 
-       rtw89_fw_h2c_update_beacon(rtwdev, rtwvif_go);
+       rtw89_chip_h2c_update_beacon(rtwdev, rtwvif_go);
 }
 
 static void rtw89_mcc_start_beacon_noa(struct rtw89_dev *rtwdev)
index fd527a249996416c61004fc832efb7bc021eb78b..ac7ae19429f9dc0dc2cddb215290239c8dfbe3a2 100644 (file)
@@ -3879,7 +3879,7 @@ void rtw89_core_update_beacon_work(struct work_struct *work)
 
        rtwdev = rtwvif->rtwdev;
        mutex_lock(&rtwdev->mutex);
-       rtw89_fw_h2c_update_beacon(rtwdev, rtwvif);
+       rtw89_chip_h2c_update_beacon(rtwdev, rtwvif);
        mutex_unlock(&rtwdev->mutex);
 }
 
index 0c6d83c4c047755b6d6a9d369f0af104695b8058..73694aca1108dd2224bf66707f337b1eb669c2db 100644 (file)
@@ -3197,6 +3197,8 @@ struct rtw89_chip_ops {
        int (*h2c_dctl_sec_cam)(struct rtw89_dev *rtwdev,
                                struct rtw89_vif *rtwvif,
                                struct rtw89_sta *rtwsta);
+       int (*h2c_update_beacon)(struct rtw89_dev *rtwdev,
+                                struct rtw89_vif *rtwvif);
        int (*h2c_ba_cam)(struct rtw89_dev *rtwdev, struct rtw89_sta *rtwsta,
                          bool valid, struct ieee80211_ampdu_params *params);
 
index 42214af0e15a1577079f53a35e963581764bc8cd..55a9f4eb47bee97b7920ac32b5f1a744445753ed 100644 (file)
@@ -2355,6 +2355,7 @@ int rtw89_fw_h2c_update_beacon(struct rtw89_dev *rtwdev,
 
        return 0;
 }
+EXPORT_SYMBOL(rtw89_fw_h2c_update_beacon);
 
 int rtw89_fw_h2c_update_beacon_be(struct rtw89_dev *rtwdev,
                                  struct rtw89_vif *rtwvif)
@@ -2437,6 +2438,7 @@ fail:
 
        return ret;
 }
+EXPORT_SYMBOL(rtw89_fw_h2c_update_beacon_be);
 
 #define H2C_ROLE_MAINTAIN_LEN 4
 int rtw89_fw_h2c_role_maintain(struct rtw89_dev *rtwdev,
index dc1c805f1500e5258a1316319b918cd9c31e69d2..7fa7cd11c49516f344de3fc14d7fc9b20977abbc 100644 (file)
@@ -3946,6 +3946,14 @@ static inline void rtw89_fw_h2c_init_ba_cam(struct rtw89_dev *rtwdev)
                rtw89_fw_h2c_init_dynamic_ba_cam_v0_ext(rtwdev);
 }
 
+static inline int rtw89_chip_h2c_update_beacon(struct rtw89_dev *rtwdev,
+                                              struct rtw89_vif *rtwvif)
+{
+       const struct rtw89_chip_info *chip = rtwdev->chip;
+
+       return chip->ops->h2c_update_beacon(rtwdev, rtwvif);
+}
+
 static inline
 int rtw89_chip_h2c_ba_cam(struct rtw89_dev *rtwdev, struct rtw89_sta *rtwsta,
                          bool valid, struct ieee80211_ampdu_params *params)
index 915bd82586fc761a8bb155db0e9a33a630f4a91d..c023c182be6ac958cff21348241458386fccbfd9 100644 (file)
@@ -452,7 +452,7 @@ static void rtw89_ops_bss_info_changed(struct ieee80211_hw *hw,
        }
 
        if (changed & BSS_CHANGED_BEACON)
-               rtw89_fw_h2c_update_beacon(rtwdev, rtwvif);
+               rtw89_chip_h2c_update_beacon(rtwdev, rtwvif);
 
        if (changed & BSS_CHANGED_ERP_SLOT)
                rtw89_conf_tx(rtwdev, rtwvif);
index 73700c4ccf570aacee855029493bc6ce3853ef5b..558ab6c2c24ada2ac05981e98c0c71060ede38d9 100644 (file)
@@ -2334,6 +2334,7 @@ static const struct rtw89_chip_ops rtw8851b_chip_ops = {
        .stop_sch_tx            = rtw89_mac_stop_sch_tx,
        .resume_sch_tx          = rtw89_mac_resume_sch_tx,
        .h2c_dctl_sec_cam       = NULL,
+       .h2c_update_beacon      = rtw89_fw_h2c_update_beacon,
        .h2c_ba_cam             = rtw89_fw_h2c_ba_cam,
 
        .btc_set_rfe            = rtw8851b_btc_set_rfe,
index 481c1f59fda07c38fc952475d8abe07ef8cfc3c6..3349397e3af16da8bf7455ec987af888ab6e39cf 100644 (file)
@@ -2078,6 +2078,7 @@ static const struct rtw89_chip_ops rtw8852a_chip_ops = {
        .stop_sch_tx            = rtw89_mac_stop_sch_tx,
        .resume_sch_tx          = rtw89_mac_resume_sch_tx,
        .h2c_dctl_sec_cam       = NULL,
+       .h2c_update_beacon      = rtw89_fw_h2c_update_beacon,
        .h2c_ba_cam             = rtw89_fw_h2c_ba_cam,
 
        .btc_set_rfe            = rtw8852a_btc_set_rfe,
index 86663659fa71c02292f0b178d660816eed69704a..43e803cb06f2e3801482bd163f917f35b2da9e5a 100644 (file)
@@ -2503,6 +2503,7 @@ static const struct rtw89_chip_ops rtw8852b_chip_ops = {
        .stop_sch_tx            = rtw89_mac_stop_sch_tx,
        .resume_sch_tx          = rtw89_mac_resume_sch_tx,
        .h2c_dctl_sec_cam       = NULL,
+       .h2c_update_beacon      = rtw89_fw_h2c_update_beacon,
        .h2c_ba_cam             = rtw89_fw_h2c_ba_cam,
 
        .btc_set_rfe            = rtw8852b_btc_set_rfe,
index 6727c9f7305322cf523ab0ed734bdedb44c514b7..e2393e62175582103bcfd4bd458add598edc1d5f 100644 (file)
@@ -2848,6 +2848,7 @@ static const struct rtw89_chip_ops rtw8852c_chip_ops = {
        .stop_sch_tx            = rtw89_mac_stop_sch_tx_v1,
        .resume_sch_tx          = rtw89_mac_resume_sch_tx_v1,
        .h2c_dctl_sec_cam       = rtw89_fw_h2c_dctl_sec_cam_v1,
+       .h2c_update_beacon      = rtw89_fw_h2c_update_beacon,
        .h2c_ba_cam             = rtw89_fw_h2c_ba_cam,
 
        .btc_set_rfe            = rtw8852c_btc_set_rfe,
index 752f48821028e65874f5c5c7c07a9b02325bcd49..7f6dde384223d09c664d83dc2181db0fe0ee09e3 100644 (file)
@@ -822,6 +822,7 @@ static const struct rtw89_chip_ops rtw8922a_chip_ops = {
        .read_phycap            = rtw8922a_read_phycap,
        .pwr_on_func            = rtw8922a_pwr_on_func,
        .pwr_off_func           = rtw8922a_pwr_off_func,
+       .h2c_update_beacon      = rtw89_fw_h2c_update_beacon_be,
        .h2c_ba_cam             = rtw89_fw_h2c_ba_cam_v1,
 };