wifi: rtw88: 8822c: add iface combination
authorPo-Hao Huang <phhuang@realtek.com>
Fri, 14 Apr 2023 12:13:31 +0000 (20:13 +0800)
committerKalle Valo <kvalo@kernel.org>
Thu, 20 Apr 2023 12:33:48 +0000 (15:33 +0300)
Allow 8822c to operate two interface concurrently, only 1 AP mode plus
1 station mode under same frequency is supported. Combination of other
types will not be added until requested.

Signed-off-by: Po-Hao Huang <phhuang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230414121331.18062-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw88/main.c

index c3a91be..0ba81b8 100644 (file)
@@ -103,6 +103,26 @@ static struct ieee80211_rate rtw_ratetable[] = {
        {.bitrate = 540, .hw_value = 0x0b,},
 };
 
+static const struct ieee80211_iface_limit rtw_iface_limits[] = {
+       {
+               .max = 1,
+               .types = BIT(NL80211_IFTYPE_STATION),
+       },
+       {
+               .max = 1,
+               .types = BIT(NL80211_IFTYPE_AP),
+       }
+};
+
+static const struct ieee80211_iface_combination rtw_iface_combs[] = {
+       {
+               .limits = rtw_iface_limits,
+               .n_limits = ARRAY_SIZE(rtw_iface_limits),
+               .max_interfaces = 2,
+               .num_different_channels = 1,
+       }
+};
+
 u16 rtw_desc_to_bitrate(u8 desc_rate)
 {
        struct ieee80211_rate rate;
@@ -2205,6 +2225,11 @@ int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw)
        hw->wiphy->max_scan_ssids = RTW_SCAN_MAX_SSIDS;
        hw->wiphy->max_scan_ie_len = rtw_get_max_scan_ie_len(rtwdev);
 
+       if (rtwdev->chip->id == RTW_CHIP_TYPE_8822C) {
+               hw->wiphy->iface_combinations = rtw_iface_combs;
+               hw->wiphy->n_iface_combinations = ARRAY_SIZE(rtw_iface_combs);
+       }
+
        wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CAN_REPLACE_PTK0);
        wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_SCAN_RANDOM_SN);
        wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_SET_SCAN_DWELL);