Commit d4535b90 authored by Markus Schneider-Pargmann's avatar Markus Schneider-Pargmann Committed by Marc Kleine-Budde

can: m_can: Count TXE FIFO getidx in the driver

The getindex simply increases by one for every iteration. There is no
need to get the current getidx every time from a register. Instead we
can just count and wrap if necessary.
Signed-off-by: default avatarMarkus Schneider-Pargmann <msp@baylibre.com>
Link: https://lore.kernel.org/all/20221206115728.1056014-5-msp@baylibre.comSigned-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent fac52bf7
...@@ -1030,15 +1030,13 @@ static int m_can_echo_tx_event(struct net_device *dev) ...@@ -1030,15 +1030,13 @@ static int m_can_echo_tx_event(struct net_device *dev)
/* Get Tx Event fifo element count */ /* Get Tx Event fifo element count */
txe_count = FIELD_GET(TXEFS_EFFL_MASK, m_can_txefs); txe_count = FIELD_GET(TXEFS_EFFL_MASK, m_can_txefs);
fgi = FIELD_GET(TXEFS_EFGI_MASK, m_can_txefs);
/* Get and process all sent elements */ /* Get and process all sent elements */
for (i = 0; i < txe_count; i++) { for (i = 0; i < txe_count; i++) {
u32 txe, timestamp = 0; u32 txe, timestamp = 0;
int err; int err;
/* retrieve get index */
fgi = FIELD_GET(TXEFS_EFGI_MASK, m_can_read(cdev, M_CAN_TXEFS));
/* get message marker, timestamp */ /* get message marker, timestamp */
err = m_can_txe_fifo_read(cdev, fgi, 4, &txe); err = m_can_txe_fifo_read(cdev, fgi, 4, &txe);
if (err) { if (err) {
...@@ -1052,6 +1050,7 @@ static int m_can_echo_tx_event(struct net_device *dev) ...@@ -1052,6 +1050,7 @@ static int m_can_echo_tx_event(struct net_device *dev)
/* ack txe element */ /* ack txe element */
m_can_write(cdev, M_CAN_TXEFA, FIELD_PREP(TXEFA_EFAI_MASK, m_can_write(cdev, M_CAN_TXEFA, FIELD_PREP(TXEFA_EFAI_MASK,
fgi)); fgi));
fgi = (++fgi >= cdev->mcfg[MRAM_TXE].num ? 0 : fgi);
/* update stats */ /* update stats */
m_can_tx_update_stats(cdev, msg_mark, timestamp); m_can_tx_update_stats(cdev, msg_mark, timestamp);
......
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