---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1454,15 +1454,6 @@ static int ath9k_add_interface(struct ie
- }
- }
-
-- if ((ah->opmode == NL80211_IFTYPE_ADHOC) ||
-- ((vif->type == NL80211_IFTYPE_ADHOC) &&
-- sc->nvifs > 0)) {
-- ath_err(common, "Cannot create ADHOC interface when other"
-- " interfaces already exist.\n");
-- ret = -EINVAL;
-- goto out;
-- }
--
- ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
-
- sc->nvifs++;
-@@ -1487,15 +1478,6 @@ static int ath9k_change_interface(struct
- mutex_lock(&sc->mutex);
- ath9k_ps_wakeup(sc);
-
-- /* See if new interface type is valid. */
-- if ((new_type == NL80211_IFTYPE_ADHOC) &&
-- (sc->nvifs > 1)) {
-- ath_err(common, "When using ADHOC, it must be the only"
-- " interface.\n");
-- ret = -EINVAL;
-- goto out;
-- }
--
- if (ath9k_uses_beacons(new_type) &&
- !ath9k_uses_beacons(vif->type)) {
- if (sc->nbcnvifs >= ATH_BCBUF) {
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -667,6 +667,7 @@ static const struct ieee80211_iface_limi
+ #ifdef CONFIG_MAC80211_MESH
+ BIT(NL80211_IFTYPE_MESH_POINT) |
+ #endif
++ BIT(NL80211_IFTYPE_ADHOC) |
+ BIT(NL80211_IFTYPE_AP) |
+ BIT(NL80211_IFTYPE_P2P_GO) },
+ };