|
@@ -6620,6 +6620,33 @@ static struct ieee80211_iface_combination ath10k_tlv_qcs_if_comb[] = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+static const struct ieee80211_iface_limit ath10k_10_4_if_limits[] = {
|
|
|
+ {
|
|
|
+ .max = 1,
|
|
|
+ .types = BIT(NL80211_IFTYPE_STATION),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .max = 16,
|
|
|
+ .types = BIT(NL80211_IFTYPE_AP)
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static const struct ieee80211_iface_combination ath10k_10_4_if_comb[] = {
|
|
|
+ {
|
|
|
+ .limits = ath10k_10_4_if_limits,
|
|
|
+ .n_limits = ARRAY_SIZE(ath10k_10_4_if_limits),
|
|
|
+ .max_interfaces = 16,
|
|
|
+ .num_different_channels = 1,
|
|
|
+ .beacon_int_infra_match = true,
|
|
|
+#ifdef CONFIG_ATH10K_DFS_CERTIFIED
|
|
|
+ .radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
|
|
|
+ BIT(NL80211_CHAN_WIDTH_20) |
|
|
|
+ BIT(NL80211_CHAN_WIDTH_40) |
|
|
|
+ BIT(NL80211_CHAN_WIDTH_80),
|
|
|
+#endif
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
static struct ieee80211_sta_vht_cap ath10k_create_vht_cap(struct ath10k *ar)
|
|
|
{
|
|
|
struct ieee80211_sta_vht_cap vht_cap = {0};
|
|
@@ -6944,6 +6971,9 @@ int ath10k_mac_register(struct ath10k *ar)
|
|
|
ARRAY_SIZE(ath10k_10x_if_comb);
|
|
|
break;
|
|
|
case ATH10K_FW_WMI_OP_VERSION_10_4:
|
|
|
+ ar->hw->wiphy->iface_combinations = ath10k_10_4_if_comb;
|
|
|
+ ar->hw->wiphy->n_iface_combinations =
|
|
|
+ ARRAY_SIZE(ath10k_10_4_if_comb);
|
|
|
break;
|
|
|
case ATH10K_FW_WMI_OP_VERSION_UNSET:
|
|
|
case ATH10K_FW_WMI_OP_VERSION_MAX:
|