ath5k: remove stop/start calls from within suspend/resume
mac80211 now takes down interfaces automatically during suspend so doing it in the driver is unnecessary. Signed-off-by: Bob Copeland <me@bobcopeland.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
665af4fc89
commit
bb2becac91
1 changed files with 7 additions and 24 deletions
|
@ -347,9 +347,9 @@ static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Interrupt handling */
|
/* Interrupt handling */
|
||||||
static int ath5k_init(struct ath5k_softc *sc, bool is_resume);
|
static int ath5k_init(struct ath5k_softc *sc);
|
||||||
static int ath5k_stop_locked(struct ath5k_softc *sc);
|
static int ath5k_stop_locked(struct ath5k_softc *sc);
|
||||||
static int ath5k_stop_hw(struct ath5k_softc *sc, bool is_suspend);
|
static int ath5k_stop_hw(struct ath5k_softc *sc);
|
||||||
static irqreturn_t ath5k_intr(int irq, void *dev_id);
|
static irqreturn_t ath5k_intr(int irq, void *dev_id);
|
||||||
static void ath5k_tasklet_reset(unsigned long data);
|
static void ath5k_tasklet_reset(unsigned long data);
|
||||||
|
|
||||||
|
@ -653,8 +653,6 @@ ath5k_pci_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||||
|
|
||||||
ath5k_led_off(sc);
|
ath5k_led_off(sc);
|
||||||
|
|
||||||
ath5k_stop_hw(sc, true);
|
|
||||||
|
|
||||||
free_irq(pdev->irq, sc);
|
free_irq(pdev->irq, sc);
|
||||||
pci_save_state(pdev);
|
pci_save_state(pdev);
|
||||||
pci_disable_device(pdev);
|
pci_disable_device(pdev);
|
||||||
|
@ -689,14 +687,9 @@ ath5k_pci_resume(struct pci_dev *pdev)
|
||||||
goto err_no_irq;
|
goto err_no_irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ath5k_init(sc, true);
|
|
||||||
if (err)
|
|
||||||
goto err_irq;
|
|
||||||
ath5k_led_enable(sc);
|
ath5k_led_enable(sc);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
err_irq:
|
|
||||||
free_irq(pdev->irq, sc);
|
|
||||||
err_no_irq:
|
err_no_irq:
|
||||||
pci_disable_device(pdev);
|
pci_disable_device(pdev);
|
||||||
return err;
|
return err;
|
||||||
|
@ -2226,18 +2219,13 @@ ath5k_beacon_config(struct ath5k_softc *sc)
|
||||||
\********************/
|
\********************/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ath5k_init(struct ath5k_softc *sc, bool is_resume)
|
ath5k_init(struct ath5k_softc *sc)
|
||||||
{
|
{
|
||||||
struct ath5k_hw *ah = sc->ah;
|
struct ath5k_hw *ah = sc->ah;
|
||||||
int ret, i;
|
int ret, i;
|
||||||
|
|
||||||
mutex_lock(&sc->lock);
|
mutex_lock(&sc->lock);
|
||||||
|
|
||||||
if (is_resume && !test_bit(ATH_STAT_STARTED, sc->status))
|
|
||||||
goto out_ok;
|
|
||||||
|
|
||||||
__clear_bit(ATH_STAT_STARTED, sc->status);
|
|
||||||
|
|
||||||
ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "mode %d\n", sc->opmode);
|
ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "mode %d\n", sc->opmode);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2269,15 +2257,12 @@ ath5k_init(struct ath5k_softc *sc, bool is_resume)
|
||||||
for (i = 0; i < AR5K_KEYTABLE_SIZE; i++)
|
for (i = 0; i < AR5K_KEYTABLE_SIZE; i++)
|
||||||
ath5k_hw_reset_key(ah, i);
|
ath5k_hw_reset_key(ah, i);
|
||||||
|
|
||||||
__set_bit(ATH_STAT_STARTED, sc->status);
|
|
||||||
|
|
||||||
/* Set ack to be sent at low bit-rates */
|
/* Set ack to be sent at low bit-rates */
|
||||||
ath5k_hw_set_ack_bitrate_high(ah, false);
|
ath5k_hw_set_ack_bitrate_high(ah, false);
|
||||||
|
|
||||||
mod_timer(&sc->calib_tim, round_jiffies(jiffies +
|
mod_timer(&sc->calib_tim, round_jiffies(jiffies +
|
||||||
msecs_to_jiffies(ath5k_calinterval * 1000)));
|
msecs_to_jiffies(ath5k_calinterval * 1000)));
|
||||||
|
|
||||||
out_ok:
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
done:
|
done:
|
||||||
mmiowb();
|
mmiowb();
|
||||||
|
@ -2332,7 +2317,7 @@ ath5k_stop_locked(struct ath5k_softc *sc)
|
||||||
* stop is preempted).
|
* stop is preempted).
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
ath5k_stop_hw(struct ath5k_softc *sc, bool is_suspend)
|
ath5k_stop_hw(struct ath5k_softc *sc)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -2363,8 +2348,6 @@ ath5k_stop_hw(struct ath5k_softc *sc, bool is_suspend)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ath5k_txbuf_free(sc, sc->bbuf);
|
ath5k_txbuf_free(sc, sc->bbuf);
|
||||||
if (!is_suspend)
|
|
||||||
__clear_bit(ATH_STAT_STARTED, sc->status);
|
|
||||||
|
|
||||||
mmiowb();
|
mmiowb();
|
||||||
mutex_unlock(&sc->lock);
|
mutex_unlock(&sc->lock);
|
||||||
|
@ -2771,12 +2754,12 @@ ath5k_reset_wake(struct ath5k_softc *sc)
|
||||||
|
|
||||||
static int ath5k_start(struct ieee80211_hw *hw)
|
static int ath5k_start(struct ieee80211_hw *hw)
|
||||||
{
|
{
|
||||||
return ath5k_init(hw->priv, false);
|
return ath5k_init(hw->priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ath5k_stop(struct ieee80211_hw *hw)
|
static void ath5k_stop(struct ieee80211_hw *hw)
|
||||||
{
|
{
|
||||||
ath5k_stop_hw(hw->priv, false);
|
ath5k_stop_hw(hw->priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ath5k_add_interface(struct ieee80211_hw *hw,
|
static int ath5k_add_interface(struct ieee80211_hw *hw,
|
||||||
|
|
Loading…
Reference in a new issue