Commit dde655c9 authored by Johannes Berg's avatar Johannes Berg Committed by Herbert Xu
Browse files

[SUNGEM]: Fix NAPI regression with reset work



sungem's gem_reset_task() will unconditionally try to disable NAPI even
when it's called while the interface is not operating and hence the NAPI
struct isn't enabled. Make napi_disable() depend on gp->running.

Also removes a superfluous test of gp->running in the same function.

Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 5dba4797
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -2281,14 +2281,12 @@ static void gem_reset_task(struct work_struct *work)

	mutex_lock(&gp->pm_mutex);

	if (gp->opened)
		napi_disable(&gp->napi);

	spin_lock_irq(&gp->lock);
	spin_lock(&gp->tx_lock);

	if (gp->running == 0)
		goto not_running;

	if (gp->running) {
		netif_stop_queue(gp->dev);

@@ -2298,12 +2296,13 @@ static void gem_reset_task(struct work_struct *work)
			gem_set_link_modes(gp);
		netif_wake_queue(gp->dev);
	}
 not_running:

	gp->reset_task_pending = 0;

	spin_unlock(&gp->tx_lock);
	spin_unlock_irq(&gp->lock);

	if (gp->opened)
		napi_enable(&gp->napi);

	mutex_unlock(&gp->pm_mutex);