|
@@ -1028,6 +1028,8 @@ ath5k_setup_bands(struct ieee80211_hw *hw)
|
|
|
* it's done by reseting the chip. To accomplish this we must
|
|
|
* first cleanup any pending DMA, then restart stuff after a la
|
|
|
* ath5k_init.
|
|
|
+ *
|
|
|
+ * Called with sc->lock.
|
|
|
*/
|
|
|
static int
|
|
|
ath5k_chan_set(struct ath5k_softc *sc, struct ieee80211_channel *chan)
|
|
@@ -2814,11 +2816,17 @@ ath5k_config(struct ieee80211_hw *hw, u32 changed)
|
|
|
{
|
|
|
struct ath5k_softc *sc = hw->priv;
|
|
|
struct ieee80211_conf *conf = &hw->conf;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ mutex_lock(&sc->lock);
|
|
|
|
|
|
sc->bintval = conf->beacon_int;
|
|
|
sc->power_level = conf->power_level;
|
|
|
|
|
|
- return ath5k_chan_set(sc, conf->channel);
|
|
|
+ ret = ath5k_chan_set(sc, conf->channel);
|
|
|
+
|
|
|
+ mutex_unlock(&sc->lock);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int
|