Skip to content

Commit d4535b9

Browse files
scosumarckleinebudde
authored andcommitted
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: Markus Schneider-Pargmann <[email protected]> Link: https://lore.kernel.org/all/[email protected] Signed-off-by: Marc Kleine-Budde <[email protected]>
1 parent fac52bf commit d4535b9

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

drivers/net/can/m_can/m_can.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,15 +1030,13 @@ static int m_can_echo_tx_event(struct net_device *dev)
10301030

10311031
/* Get Tx Event fifo element count */
10321032
txe_count = FIELD_GET(TXEFS_EFFL_MASK, m_can_txefs);
1033+
fgi = FIELD_GET(TXEFS_EFGI_MASK, m_can_txefs);
10331034

10341035
/* Get and process all sent elements */
10351036
for (i = 0; i < txe_count; i++) {
10361037
u32 txe, timestamp = 0;
10371038
int err;
10381039

1039-
/* retrieve get index */
1040-
fgi = FIELD_GET(TXEFS_EFGI_MASK, m_can_read(cdev, M_CAN_TXEFS));
1041-
10421040
/* get message marker, timestamp */
10431041
err = m_can_txe_fifo_read(cdev, fgi, 4, &txe);
10441042
if (err) {
@@ -1052,6 +1050,7 @@ static int m_can_echo_tx_event(struct net_device *dev)
10521050
/* ack txe element */
10531051
m_can_write(cdev, M_CAN_TXEFA, FIELD_PREP(TXEFA_EFAI_MASK,
10541052
fgi));
1053+
fgi = (++fgi >= cdev->mcfg[MRAM_TXE].num ? 0 : fgi);
10551054

10561055
/* update stats */
10571056
m_can_tx_update_stats(cdev, msg_mark, timestamp);

0 commit comments

Comments
 (0)