wifi: rtw89: pass rtwvif to RFK channel
authorZong-Zhe Yang <kevin_yang@realtek.com>
Sat, 27 Jul 2024 08:06:47 +0000 (16:06 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Fri, 2 Aug 2024 01:35:39 +0000 (09:35 +0800)
For chips supporting multiple channels, they need to get target info
from rtwvif, e.g. PHY index and Chanctx index.

So, change rfk_channel prototype and pass rtwvif ahead.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20240727080650.12195-5-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.c
drivers/net/wireless/realtek/rtw89/core.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/rtw8852bt.c
drivers/net/wireless/realtek/rtw89/rtw8852c.c
drivers/net/wireless/realtek/rtw89/rtw8922a.c

index fbe94c68b17161bc8c7f65d3beb6b1a65c4f8aba..b502bacd429bf1f2b2c313832383f711e27f1f16 100644 (file)
@@ -3414,7 +3414,7 @@ int rtw89_core_sta_add(struct rtw89_dev *rtwdev,
 
                rtw89_btc_ntfy_role_info(rtwdev, rtwvif, rtwsta,
                                         BTC_ROLE_MSTS_STA_CONN_START);
-               rtw89_chip_rfk_channel(rtwdev);
+               rtw89_chip_rfk_channel(rtwdev, rtwvif);
        } else if (vif->type == NL80211_IFTYPE_AP || sta->tdls) {
                rtwsta->mac_id = rtw89_acquire_mac_id(rtwdev);
                if (rtwsta->mac_id == RTW89_MAX_MAC_ID_NUM)
index d43a30ae318131ec4cf71f48f7f10fa31cc51dd2..9fe3762951a836aa15c93b79e50bcdcb2ddea1bd 100644 (file)
@@ -3540,7 +3540,7 @@ struct rtw89_chip_ops {
        void (*rfk_hw_init)(struct rtw89_dev *rtwdev);
        void (*rfk_init)(struct rtw89_dev *rtwdev);
        void (*rfk_init_late)(struct rtw89_dev *rtwdev);
-       void (*rfk_channel)(struct rtw89_dev *rtwdev);
+       void (*rfk_channel)(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif);
        void (*rfk_band_changed)(struct rtw89_dev *rtwdev,
                                 enum rtw89_phy_idx phy_idx);
        void (*rfk_scan)(struct rtw89_dev *rtwdev, bool start);
@@ -6151,12 +6151,13 @@ static inline void rtw89_chip_rfk_init_late(struct rtw89_dev *rtwdev)
                chip->ops->rfk_init_late(rtwdev);
 }
 
-static inline void rtw89_chip_rfk_channel(struct rtw89_dev *rtwdev)
+static inline void rtw89_chip_rfk_channel(struct rtw89_dev *rtwdev,
+                                         struct rtw89_vif *rtwvif)
 {
        const struct rtw89_chip_info *chip = rtwdev->chip;
 
        if (chip->ops->rfk_channel)
-               chip->ops->rfk_channel(rtwdev);
+               chip->ops->rfk_channel(rtwdev, rtwvif);
 }
 
 static inline void rtw89_chip_rfk_band_changed(struct rtw89_dev *rtwdev,
index 95cff2a8a3373ad0b1ebdd105c4cfea77b9780d0..ed7990a2827b8f40396643313da057102b92560a 100644 (file)
@@ -519,7 +519,7 @@ static int rtw89_ops_start_ap(struct ieee80211_hw *hw,
        rtw89_fw_h2c_role_maintain(rtwdev, rtwvif, NULL, RTW89_ROLE_TYPE_CHANGE);
        rtw89_fw_h2c_join_info(rtwdev, rtwvif, NULL, true);
        rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, NULL);
-       rtw89_chip_rfk_channel(rtwdev);
+       rtw89_chip_rfk_channel(rtwdev, rtwvif);
 
        rtw89_queue_chanctx_work(rtwdev);
        mutex_unlock(&rtwdev->mutex);
index 1cbf6f8ad817f9abb413e9551e50598e889827dd..8cbbe10cb095a44bf2d84570c27f50999d2c3218 100644 (file)
@@ -1590,9 +1590,9 @@ static void rtw8851b_rfk_init(struct rtw89_dev *rtwdev)
        rtw8851b_rx_dck(rtwdev, RTW89_PHY_0);
 }
 
-static void rtw8851b_rfk_channel(struct rtw89_dev *rtwdev)
+static void rtw8851b_rfk_channel(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
 {
-       enum rtw89_phy_idx phy_idx = RTW89_PHY_0;
+       enum rtw89_phy_idx phy_idx = rtwvif->phy_idx;
 
        rtw8851b_rx_dck(rtwdev, phy_idx);
        rtw8851b_iqk(rtwdev, phy_idx);
index e7750004532767cb3a2cffd181ed9d815d8a07de..5405a883d74a9ec780ec990bcec2eb5eb2b87b32 100644 (file)
@@ -1345,9 +1345,9 @@ static void rtw8852a_rfk_init(struct rtw89_dev *rtwdev)
        rtw8852a_rx_dck(rtwdev, RTW89_PHY_0, true);
 }
 
-static void rtw8852a_rfk_channel(struct rtw89_dev *rtwdev)
+static void rtw8852a_rfk_channel(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
 {
-       enum rtw89_phy_idx phy_idx = RTW89_PHY_0;
+       enum rtw89_phy_idx phy_idx = rtwvif->phy_idx;
 
        rtw8852a_rx_dck(rtwdev, phy_idx, true);
        rtw8852a_iqk(rtwdev, phy_idx);
index ef888545d9888541107cb84de22a039508ffc4a3..ec74afad32dae38f197ee9024d9e77671fc70cc3 100644 (file)
@@ -562,9 +562,9 @@ static void rtw8852b_rfk_init(struct rtw89_dev *rtwdev)
        rtw8852b_rx_dck(rtwdev, RTW89_PHY_0);
 }
 
-static void rtw8852b_rfk_channel(struct rtw89_dev *rtwdev)
+static void rtw8852b_rfk_channel(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
 {
-       enum rtw89_phy_idx phy_idx = RTW89_PHY_0;
+       enum rtw89_phy_idx phy_idx = rtwvif->phy_idx;
 
        rtw8852b_rx_dck(rtwdev, phy_idx);
        rtw8852b_iqk(rtwdev, phy_idx);
index 8173063bcc8e27185d81eccb04ab8d500da58600..733876d4bb59d512dad0e992da663b77551a748e 100644 (file)
@@ -535,9 +535,9 @@ static void rtw8852bt_rfk_init(struct rtw89_dev *rtwdev)
        rtw8852bt_rx_dck(rtwdev, RTW89_PHY_0);
 }
 
-static void rtw8852bt_rfk_channel(struct rtw89_dev *rtwdev)
+static void rtw8852bt_rfk_channel(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
 {
-       enum rtw89_phy_idx phy_idx = RTW89_PHY_0;
+       enum rtw89_phy_idx phy_idx = rtwvif->phy_idx;
 
        rtw8852bt_rx_dck(rtwdev, phy_idx);
        rtw8852bt_iqk(rtwdev, phy_idx);
index 2b3921f1297e681143000744a252479aa607776a..f14e320feac024c24694a8cbdadac23c8ee83913 100644 (file)
@@ -1846,9 +1846,9 @@ static void rtw8852c_rfk_init(struct rtw89_dev *rtwdev)
        rtw8852c_rx_dck(rtwdev, RTW89_PHY_0, false);
 }
 
-static void rtw8852c_rfk_channel(struct rtw89_dev *rtwdev)
+static void rtw8852c_rfk_channel(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
 {
-       enum rtw89_phy_idx phy_idx = RTW89_PHY_0;
+       enum rtw89_phy_idx phy_idx = rtwvif->phy_idx;
 
        rtw8852c_mcc_get_ch_info(rtwdev, phy_idx);
        rtw8852c_rx_dck(rtwdev, phy_idx, false);
index 807cc88543ce2f9c80d21656408f031ce2167555..9b9a1dd11d4f20961ea5187913ba97a08f48c4a3 100644 (file)
@@ -1962,9 +1962,9 @@ static void _wait_rx_mode(struct rtw89_dev *rtwdev, u8 kpath)
        }
 }
 
-static void rtw8922a_rfk_channel(struct rtw89_dev *rtwdev)
+static void rtw8922a_rfk_channel(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
 {
-       enum rtw89_phy_idx phy_idx = RTW89_PHY_0;
+       enum rtw89_phy_idx phy_idx = rtwvif->phy_idx;
        u8 phy_map = rtw89_btc_phymap(rtwdev, phy_idx, RF_AB);
        u32 tx_en;