net: qca_spi: fix transmit queue timeout handling

In case of a tx queue timeout every transmit is blocked until the
QCA7000 resets himself and triggers a sync which makes the driver
flushs the tx ring. So avoid this blocking situation by triggering
the sync immediately after the timeout. Waking the queue doesn't
make sense in this situation.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Fixes: 291ab06ecf ("net: qualcomm: new Ethernet over SPI driver for QCA7000")
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Stefan Wahren 2015-12-04 16:29:10 +01:00 committed by David S. Miller
parent f8c0cfa5ec
commit ed7d42e24e

View File

@ -736,9 +736,8 @@ qcaspi_netdev_tx_timeout(struct net_device *dev)
netdev_info(qca->net_dev, "Transmit timeout at %ld, latency %ld\n", netdev_info(qca->net_dev, "Transmit timeout at %ld, latency %ld\n",
jiffies, jiffies - dev->trans_start); jiffies, jiffies - dev->trans_start);
qca->net_dev->stats.tx_errors++; qca->net_dev->stats.tx_errors++;
/* wake the queue if there is room */ /* Trigger tx queue flush and QCA7000 reset */
if (qcaspi_tx_ring_has_space(&qca->txr)) qca->sync = QCASPI_SYNC_UNKNOWN;
netif_wake_queue(dev);
} }
static int static int