Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c483817 authored by Sujith's avatar Sujith Committed by John W. Linville
Browse files

ath9k: Fix TX poll cancelling



In ath9k_stop(), tx_complete_work was being cancelled twice.
This patch fixes it. Also, locking sc->mutex should be done
at the beginning.

Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent bcd64e0c
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -2105,6 +2105,8 @@ static void ath9k_stop(struct ieee80211_hw *hw)
	struct ath_wiphy *aphy = hw->priv;
	struct ath_softc *sc = aphy->sc;

	mutex_lock(&sc->mutex);

	aphy->state = ATH_WIPHY_INACTIVE;

	cancel_delayed_work_sync(&sc->ath_led_blink_work);
@@ -2117,13 +2119,10 @@ static void ath9k_stop(struct ieee80211_hw *hw)

	if (sc->sc_flags & SC_OP_INVALID) {
		DPRINTF(sc, ATH_DBG_ANY, "Device not present\n");
		mutex_unlock(&sc->mutex);
		return;
	}

	mutex_lock(&sc->mutex);

	cancel_delayed_work_sync(&sc->tx_complete_work);

	if (ath9k_wiphy_started(sc)) {
		mutex_unlock(&sc->mutex);
		return; /* another wiphy still in use */