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

Commit 415f738e authored by Sujith's avatar Sujith Committed by John W. Linville
Browse files

ath9k: Initialize ANI timers



The various ANI timers have to be initialized properly when
starting the calibration timer.

Cc: stable@kernel.org
Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent a451aa66
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -407,6 +407,18 @@ static void ath_ani_calibrate(unsigned long data)
	mod_timer(&sc->ani.timer, jiffies + msecs_to_jiffies(cal_interval));
}

static void ath_start_ani(struct ath_softc *sc)
{
	unsigned long timestamp = jiffies_to_msecs(jiffies);

	sc->ani.longcal_timer = timestamp;
	sc->ani.shortcal_timer = timestamp;
	sc->ani.checkani_timer = timestamp;

	mod_timer(&sc->ani.timer,
		  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
}

/*
 * Update tx/rx chainmask. For legacy association,
 * hard code chainmask to 1x1, for 11n association, use
@@ -911,9 +923,7 @@ static void ath9k_bss_assoc_info(struct ath_softc *sc,
		sc->nodestats.ns_avgtxrssi = ATH_RSSI_DUMMY_MARKER;
		sc->nodestats.ns_avgtxrate = ATH_RATE_DUMMY_MARKER;

		/* Start ANI */
		mod_timer(&sc->ani.timer,
			  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
		ath_start_ani(sc);
	} else {
		DPRINTF(sc, ATH_DBG_CONFIG, "Bss Info DISASSOC\n");
		sc->curaid = 0;
@@ -2239,12 +2249,8 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,

	ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);

	if (conf->type == NL80211_IFTYPE_AP) {
		/* TODO: is this a suitable place to start ANI for AP mode? */
		/* Start ANI */
		mod_timer(&sc->ani.timer,
			  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
	}
	if (conf->type == NL80211_IFTYPE_AP)
		ath_start_ani(sc);

out:
	mutex_unlock(&sc->mutex);