[ath9k-devel] [RFC 1/2] ath9k: work around AR_CFG 0xdeadbeef chip hang

Valo, Kalle <[email protected]> Wed, 16 Nov 2016 16:16:42 +0000
Newsgroups org.ath9k.lists.ath9k-devel,org.kernel.vger.linux-wireless
Message-ID <[email protected]>
Sven Eckelmann <[email protected]> writes:

> From: Simon Wunderlich <[email protected]>
>
> QCA 802.11n chips (especially AR9330/AR9340) sometimes end up in a state in
> which a read of AR_CFG always returns 0xdeadbeef. This should not happen
> when when the power_mode of the device is ATH9K_PM_AWAKE.
>
> This problem is not yet detected by any other workaround in ath9k. No way
> is known to reproduce the problem easily.
>
> Signed-off-by: Simon Wunderlich <[email protected]>
> [sven.eckelmann at open-mesh.com: port to recent ath9k, add commit message]
> Signed-off-by: Sven Eckelmann <[email protected]>

[...]

> +void ath_hw_hang_work(struct work_struct *work)
> +{
> +	struct ath_softc *sc = container_of(work, struct ath_softc,
> +					    hw_hang_work.work);
> +
> +	if (ath_hw_hang_deadbeef(sc))
> +		goto requeue_worker;
> +
> +requeue_worker:
> +	ieee80211_queue_delayed_work(sc->hw, &sc->hw_hang_work,
> +				     msecs_to_jiffies(ATH_HANG_WORK_INTERVAL));
> +}

The goto doesn't make any sense, either me or the function is missing
something :)

-- 
Kalle Valo