diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/main.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 4de4473776ac..dac1a2709e3c 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
| @@ -971,6 +971,15 @@ void ath_hw_pll_work(struct work_struct *work) | |||
| 971 | hw_pll_work.work); | 971 | hw_pll_work.work); |
| 972 | u32 pll_sqsum; | 972 | u32 pll_sqsum; |
| 973 | 973 | ||
| 974 | /* | ||
| 975 | * ensure that the PLL WAR is executed only | ||
| 976 | * after the STA is associated (or) if the | ||
| 977 | * beaconing had started in interfaces that | ||
| 978 | * uses beacons. | ||
| 979 | */ | ||
| 980 | if (!(sc->sc_flags & SC_OP_BEACONS)) | ||
| 981 | return; | ||
| 982 | |||
| 974 | if (AR_SREV_9485(sc->sc_ah)) { | 983 | if (AR_SREV_9485(sc->sc_ah)) { |
| 975 | 984 | ||
| 976 | ath9k_ps_wakeup(sc); | 985 | ath9k_ps_wakeup(sc); |
| @@ -1443,15 +1452,6 @@ static int ath9k_add_interface(struct ieee80211_hw *hw, | |||
| 1443 | } | 1452 | } |
| 1444 | } | 1453 | } |
| 1445 | 1454 | ||
| 1446 | if ((ah->opmode == NL80211_IFTYPE_ADHOC) || | ||
| 1447 | ((vif->type == NL80211_IFTYPE_ADHOC) && | ||
| 1448 | sc->nvifs > 0)) { | ||
| 1449 | ath_err(common, "Cannot create ADHOC interface when other" | ||
| 1450 | " interfaces already exist.\n"); | ||
| 1451 | ret = -EINVAL; | ||
| 1452 | goto out; | ||
| 1453 | } | ||
| 1454 | |||
| 1455 | ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type); | 1455 | ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type); |
| 1456 | 1456 | ||
| 1457 | sc->nvifs++; | 1457 | sc->nvifs++; |
| @@ -1476,15 +1476,6 @@ static int ath9k_change_interface(struct ieee80211_hw *hw, | |||
| 1476 | mutex_lock(&sc->mutex); | 1476 | mutex_lock(&sc->mutex); |
| 1477 | ath9k_ps_wakeup(sc); | 1477 | ath9k_ps_wakeup(sc); |
| 1478 | 1478 | ||
| 1479 | /* See if new interface type is valid. */ | ||
| 1480 | if ((new_type == NL80211_IFTYPE_ADHOC) && | ||
| 1481 | (sc->nvifs > 1)) { | ||
| 1482 | ath_err(common, "When using ADHOC, it must be the only" | ||
| 1483 | " interface.\n"); | ||
| 1484 | ret = -EINVAL; | ||
| 1485 | goto out; | ||
| 1486 | } | ||
| 1487 | |||
| 1488 | if (ath9k_uses_beacons(new_type) && | 1479 | if (ath9k_uses_beacons(new_type) && |
| 1489 | !ath9k_uses_beacons(vif->type)) { | 1480 | !ath9k_uses_beacons(vif->type)) { |
| 1490 | if (sc->nbcnvifs >= ATH_BCBUF) { | 1481 | if (sc->nbcnvifs >= ATH_BCBUF) { |
