Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcf17666 authored by Stefan Wahren's avatar Stefan Wahren Committed by Greg Kroah-Hartman
Browse files

qca_spi: Fix reset behavior



[ Upstream commit 1057812d146dd658c9a9a96d869c2551150207b5 ]

In case of a reset triggered by the QCA7000 itself, the behavior of the
qca_spi driver was not quite correct:
- in case of a pending RX frame decoding the drop counter must be
  incremented and decoding state machine reseted
- also the reset counter must always be incremented regardless of sync
  state

Fixes: 291ab06e ("net: qualcomm: new Ethernet over SPI driver for QCA7000")
Signed-off-by: default avatarStefan Wahren <wahrenst@gmx.net>
Link: https://lore.kernel.org/r/20231206141222.52029-4-wahrenst@gmx.net


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 51ad9c19
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -613,11 +613,17 @@ qcaspi_spi_thread(void *data)
			if (intr_cause & SPI_INT_CPU_ON) {
				qcaspi_qca7k_sync(qca, QCASPI_EVENT_CPUON);

				/* Frame decoding in progress */
				if (qca->frm_handle.state != qca->frm_handle.init)
					qca->net_dev->stats.rx_dropped++;

				qcafrm_fsm_init_spi(&qca->frm_handle);
				qca->stats.device_reset++;

				/* not synced. */
				if (qca->sync != QCASPI_SYNC_READY)
					continue;

				qca->stats.device_reset++;
				netif_wake_queue(qca->net_dev);
				netif_carrier_on(qca->net_dev);
			}