Commit f498e1e1 authored by Stefan Wahren's avatar Stefan Wahren Committed by Kamal Mostafa

net: qca_spi: fix transmit queue timeout handling

[ Upstream commit ed7d42e2 ]

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: default avatarStefan Wahren <stefan.wahren@i2se.com>
Fixes: 291ab06e ("net: qualcomm: new Ethernet over SPI driver for QCA7000")
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
parent 01af608d
...@@ -736,9 +736,8 @@ qcaspi_netdev_tx_timeout(struct net_device *dev) ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment