Commit c649c41d authored by Julian Wiedmann's avatar Julian Wiedmann Committed by David S. Miller
Browse files

s390/qeth: fix cancelling of TX timer on dev_close()



With the introduction of TX coalescing, .ndo_start_xmit now potentially
starts the TX completion timer. So only kill the timer _after_ TX has
been disabled.

Fixes: ee1e52d1 ("s390/qeth: add TX IRQ coalescing support for IQD devices")
Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d975cb7e
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -6717,17 +6717,17 @@ int qeth_stop(struct net_device *dev)
		unsigned int i;

		/* Quiesce the NAPI instances: */
		qeth_for_each_output_queue(card, queue, i) {
		qeth_for_each_output_queue(card, queue, i)
			napi_disable(&queue->napi);
			del_timer_sync(&queue->timer);
		}

		/* Stop .ndo_start_xmit, might still access queue->napi. */
		netif_tx_disable(dev);

		/* Queues may get re-allocated, so remove the NAPIs here. */
		qeth_for_each_output_queue(card, queue, i)
		qeth_for_each_output_queue(card, queue, i) {
			del_timer_sync(&queue->timer);
			/* Queues may get re-allocated, so remove the NAPIs. */
			netif_napi_del(&queue->napi);
		}
	} else {
		netif_tx_disable(dev);
	}