| From 1a92e5a9109963e2491eec111b84b35b4e2adc8f Mon Sep 17 00:00:00 2001 |
| From: Marc Kleine-Budde <mkl@pengutronix.de> |
| Date: Wed, 9 Oct 2019 15:15:37 +0200 |
| Subject: [PATCH] can: flexcan: flexcan_irq_state(): only read timestamp if |
| needed |
| |
| The function flexcan_irq_state() checks the controller for CAN state |
| changes and pushes a skb with the new state and a timestamp into the |
| rx-offload framework. |
| |
| This patch optimizes the function by only reading the timestamp, if a |
| state change is detected. |
| |
| Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> |
| --- |
| drivers/net/can/flexcan.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/net/can/flexcan.c |
| +++ b/drivers/net/can/flexcan.c |
| @@ -751,8 +751,6 @@ static void flexcan_irq_state(struct net |
| u32 timestamp; |
| int err; |
| |
| - timestamp = priv->read(®s->timer) << 16; |
| - |
| flt = reg_esr & FLEXCAN_ESR_FLT_CONF_MASK; |
| if (likely(flt == FLEXCAN_ESR_FLT_CONF_ACTIVE)) { |
| tx_state = unlikely(reg_esr & FLEXCAN_ESR_TX_WRN) ? |
| @@ -772,6 +770,8 @@ static void flexcan_irq_state(struct net |
| if (likely(new_state == priv->can.state)) |
| return; |
| |
| + timestamp = priv->read(®s->timer) << 16; |
| + |
| skb = alloc_can_err_skb(dev, &cf); |
| if (unlikely(!skb)) |
| return; |