--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
-@@ -83,13 +83,8 @@ ath5k_add_interface(struct ieee80211_hw
+@@ -88,13 +88,8 @@ ath5k_add_interface(struct ieee80211_hw
goto end;
}
goto end;
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
-@@ -1866,7 +1866,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
- ah->bmisscount = 0;
+@@ -1872,7 +1872,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
}
-- if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs > 1) ||
-+ if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs + ah->num_adhoc_vifs > 1) ||
+ if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs +
+- ah->num_mesh_vifs > 1) ||
++ ah->num_adhoc_vifs + ah->num_mesh_vifs > 1) ||
ah->opmode == NL80211_IFTYPE_MESH_POINT) {
u64 tsf = ath5k_hw_get_tsf64(ah);
u32 tsftu = TSF_TO_TU(tsf);
-@@ -1951,7 +1951,7 @@ ath5k_beacon_update_timers(struct ath5k_
- u64 hw_tsf;
+@@ -1958,7 +1958,7 @@ ath5k_beacon_update_timers(struct ath5k_
intval = ah->bintval & AR5K_BEACON_PERIOD;
-- if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs > 1) {
-+ if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs + ah->num_adhoc_vifs > 1) {
+ if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs
+- + ah->num_mesh_vifs > 1) {
++ + ah->num_adhoc_vifs + ah->num_mesh_vifs > 1) {
intval /= ATH_BCBUF; /* staggered multi-bss beacons */
if (intval < 15)
ATH5K_WARN(ah, "intval %u is too low, min 15\n",
+@@ -2423,6 +2423,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) },
+ };
+