2011-04-15 07:22:21 +08:00
|
|
|
--- a/drivers/net/wireless/ath/ath9k/main.c
|
|
|
|
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
2012-05-30 09:01:06 +08:00
|
|
|
@@ -1443,15 +1443,6 @@ static int ath9k_add_interface(struct ie
|
2011-04-15 07:22:21 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-04-21 02:14:35 +08:00
|
|
|
- if ((ah->opmode == NL80211_IFTYPE_ADHOC) ||
|
|
|
|
- ((vif->type == NL80211_IFTYPE_ADHOC) &&
|
|
|
|
- sc->nvifs > 0)) {
|
2011-04-15 07:22:21 +08:00
|
|
|
- ath_err(common, "Cannot create ADHOC interface when other"
|
|
|
|
- " interfaces already exist.\n");
|
|
|
|
- ret = -EINVAL;
|
|
|
|
- goto out;
|
|
|
|
- }
|
|
|
|
-
|
2012-02-07 19:28:11 +08:00
|
|
|
ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
|
2011-04-15 07:22:21 +08:00
|
|
|
|
2012-02-07 19:28:11 +08:00
|
|
|
sc->nvifs++;
|
2012-05-30 09:01:06 +08:00
|
|
|
@@ -1476,15 +1467,6 @@ static int ath9k_change_interface(struct
|
2011-04-21 02:14:35 +08:00
|
|
|
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) {
|
2012-04-17 05:08:41 +08:00
|
|
|
--- a/drivers/net/wireless/ath/ath9k/init.c
|
|
|
|
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
2012-05-30 09:01:06 +08:00
|
|
|
@@ -656,6 +656,7 @@ static const struct ieee80211_iface_limi
|
2012-04-17 08:05:41 +08:00
|
|
|
#ifdef CONFIG_MAC80211_MESH
|
|
|
|
BIT(NL80211_IFTYPE_MESH_POINT) |
|
|
|
|
#endif
|
2012-04-17 05:08:41 +08:00
|
|
|
+ BIT(NL80211_IFTYPE_ADHOC) |
|
2012-04-17 08:05:41 +08:00
|
|
|
BIT(NL80211_IFTYPE_AP) |
|
|
|
|
BIT(NL80211_IFTYPE_P2P_GO) },
|
2012-04-17 05:08:41 +08:00
|
|
|
};
|