summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorStefan Wahren <stefan.wahren@i2se.com>2015-12-04 16:29:10 +0100
committerDavid S. Miller <davem@davemloft.net>2015-12-06 18:02:24 +0100
commited7d42e24effbd3681e909711a7a2119a85e9217 (patch)
tree2b02654d73258d6284f3e0c67ce1a9849610681c /drivers/net
parentnet: cdc_mbim: add "NDP to end" quirk for Huawei E3372 (diff)
downloadlinux-ed7d42e24effbd3681e909711a7a2119a85e9217.tar.xz
linux-ed7d42e24effbd3681e909711a7a2119a85e9217.zip
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: 291ab06ecf67 ("net: qualcomm: new Ethernet over SPI driver for QCA7000") Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/qualcomm/qca_spi.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index ddb2c6c6ec94..689a4a5c8dcf 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -736,9 +736,8 @@ qcaspi_netdev_tx_timeout(struct net_device *dev)
netdev_info(qca->net_dev, "Transmit timeout at %ld, latency %ld\n",
jiffies, jiffies - dev->trans_start);
qca->net_dev->stats.tx_errors++;
- /* wake the queue if there is room */
- if (qcaspi_tx_ring_has_space(&qca->txr))
- netif_wake_queue(dev);
+ /* Trigger tx queue flush and QCA7000 reset */
+ qca->sync = QCASPI_SYNC_UNKNOWN;
}
static int