From d4ca631269f4042835bb9cab60ea5c0b433a449d Mon Sep 17 00:00:00 2001 From: norly Date: Sat, 12 Mar 2022 21:49:49 +0100 Subject: [PATCH] Rework elm327_hw_failure() Using es58x as a rough template --- module/elmcan.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/module/elmcan.c b/module/elmcan.c index 01ff896..198ef51 100644 --- a/module/elmcan.c +++ b/module/elmcan.c @@ -319,20 +319,21 @@ static inline void elm327_hw_failure(struct elmcan *elm) struct can_frame *frame; struct sk_buff *skb; + elm->hw_failure = true; + + elm->can.can_stats.bus_off++; + netif_stop_queue(elm->dev); + elm->can.state = CAN_STATE_BUS_OFF; + can_bus_off(elm->dev); + + netdev_err(elm->dev, "ELM327 misbehaved. Blocking further communication.\n"); + skb = alloc_can_err_skb(elm->dev, &frame); if (!skb) return; - frame->data[5] = 'R'; - frame->data[6] = 'I'; - frame->data[7] = 'P'; - + frame->can_id |= CAN_ERR_BUSOFF; elm327_feed_frame_to_netdev(elm, skb); - - netdev_err(elm->dev, "ELM327 misbehaved. Blocking further communication.\n"); - - elm->hw_failure = true; - can_bus_off(elm->dev); } /* Compare a buffer to a fixed string */ -- 2.30.2