|
@@ -694,6 +694,20 @@ err_hw:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+static const struct ieee80211_iface_limit if_limits[] = {
|
|
|
+ { .max = 2, .types = BIT(NL80211_IFTYPE_STATION) |
|
|
|
+ BIT(NL80211_IFTYPE_P2P_CLIENT) },
|
|
|
+ { .max = 2, .types = BIT(NL80211_IFTYPE_AP) |
|
|
|
+ BIT(NL80211_IFTYPE_P2P_GO) },
|
|
|
+};
|
|
|
+
|
|
|
+static const struct ieee80211_iface_combination if_comb = {
|
|
|
+ .limits = if_limits,
|
|
|
+ .n_limits = ARRAY_SIZE(if_limits),
|
|
|
+ .max_interfaces = 2,
|
|
|
+ .num_different_channels = 1,
|
|
|
+};
|
|
|
+
|
|
|
static void ath9k_set_hw_capab(struct ath9k_htc_priv *priv,
|
|
|
struct ieee80211_hw *hw)
|
|
|
{
|
|
@@ -716,6 +730,9 @@ static void ath9k_set_hw_capab(struct ath9k_htc_priv *priv,
|
|
|
BIT(NL80211_IFTYPE_P2P_GO) |
|
|
|
BIT(NL80211_IFTYPE_P2P_CLIENT);
|
|
|
|
|
|
+ hw->wiphy->iface_combinations = &if_comb;
|
|
|
+ hw->wiphy->n_iface_combinations = 1;
|
|
|
+
|
|
|
hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
|
|
|
|
|
|
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN |
|