From: Marc Kleine-Budde <mkl@pengutronix.de>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, kuba@kernel.org, linux-can@vger.kernel.org,
kernel@pengutronix.de, Vivek Yadav <vivek.2311@samsung.com>,
Chandrasekar Ramakrishnan <rcsekar@samsung.com>,
Marc Kleine-Budde <mkl@pengutronix.de>
Subject: [PATCH net-next 07/29] can: m_can: m_can_handle_bus_errors(): add support for handling DLEC error on CAN-FD frames
Date: Wed, 26 Oct 2022 10:39:45 +0200 [thread overview]
Message-ID: <20221026084007.1583333-8-mkl@pengutronix.de> (raw)
In-Reply-To: <20221026084007.1583333-1-mkl@pengutronix.de>
From: Vivek Yadav <vivek.2311@samsung.com>
When a frame in CAN FD format has reached the data phase, the next CAN
event (error or valid frame) will be shown in DLEC.
Utilize the dedicated flag (Data Phase Last Error Code: DLEC flag) to
determine the type of last error that occurred in the data phase of a
CAN-FD frame and handle the bus errors.
Signed-off-by: Vivek Yadav <vivek.2311@samsung.com>
Link: https://lore.kernel.org/all/20221018081934.1336690-1-mkl@pengutronix.de
Reviewed-by: Chandrasekar Ramakrishnan <rcsekar@samsung.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
drivers/net/can/m_can/m_can.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index ebdd3c164d7b..34c76ee87c6e 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -156,6 +156,7 @@ enum m_can_reg {
#define PSR_EW BIT(6)
#define PSR_EP BIT(5)
#define PSR_LEC_MASK GENMASK(2, 0)
+#define PSR_DLEC_MASK GENMASK(10, 8)
/* Interrupt Register (IR) */
#define IR_ALL_INT 0xffffffff
@@ -875,9 +876,17 @@ static int m_can_handle_bus_errors(struct net_device *dev, u32 irqstatus,
/* handle lec errors on the bus */
if (cdev->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING) {
u8 lec = FIELD_GET(PSR_LEC_MASK, psr);
+ u8 dlec = FIELD_GET(PSR_DLEC_MASK, psr);
- if (is_lec_err(lec))
+ if (is_lec_err(lec)) {
+ netdev_dbg(dev, "Arbitration phase error detected\n");
work_done += m_can_handle_lec_err(dev, lec);
+ }
+
+ if (is_lec_err(dlec)) {
+ netdev_dbg(dev, "Data phase error detected\n");
+ work_done += m_can_handle_lec_err(dev, dlec);
+ }
}
/* handle protocol errors in arbitration phase */
--
2.35.1
next prev parent reply other threads:[~2022-10-26 8:40 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-26 8:39 [PATCH net-next 0/29] pull-request: can-next 2022-10-26 Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 01/29] can: add termination resistor documentation Marc Kleine-Budde
2022-10-26 13:00 ` patchwork-bot+netdevbpf
2022-10-26 8:39 ` [PATCH net-next 02/29] can: j1939: j1939_session_tx_eoma(): fix debug info Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 03/29] can: remove obsolete PCH CAN driver Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 04/29] can: ucan: Replace zero-length array with DECLARE_FLEX_ARRAY() helper Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 05/29] can: kvaser_usb: Remove -Warray-bounds exception Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 06/29] can: m_can: is_lec_err(): clean up LEC error handling Marc Kleine-Budde
2022-10-26 8:39 ` Marc Kleine-Budde [this message]
2022-10-26 8:39 ` [PATCH net-next 08/29] can: gs_usb: mention candleLight as supported device Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 09/29] can: gs_usb: gs_make_candev(): set netdev->dev_id Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 10/29] can: gs_usb: gs_can_open(): allow loopback and listen only at the same time Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 11/29] can: gs_usb: gs_can_open(): sort checks for ctrlmode Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 12/29] can: gs_usb: gs_can_open(): merge setting of timestamp flags and init Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 13/29] can: gs_usb: document GS_CAN_FEATURE_BERR_REPORTING Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 14/29] can: gs_usb: add ability to enable / disable berr reporting Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 15/29] can: gs_usb: document GS_CAN_FEATURE_GET_STATE Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 16/29] can: gs_usb: add support for reading error counters Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 17/29] can: kvaser_usb: kvaser_usb_leaf: Get capabilities from device Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 18/29] can: kvaser_usb: kvaser_usb_leaf: Rename {leaf,usbcan}_cmd_error_event to {leaf,usbcan}_cmd_can_error_event Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 19/29] can: kvaser_usb: kvaser_usb_leaf: Handle CMD_ERROR_EVENT Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 20/29] can: kvaser_usb_leaf: Set Warning state even without bus errors Marc Kleine-Budde
2022-10-26 8:39 ` [PATCH net-next 21/29] can: kvaser_usb_leaf: Fix improved state not being reported Marc Kleine-Budde
2022-10-26 8:40 ` [PATCH net-next 22/29] can: kvaser_usb_leaf: Fix wrong CAN state after stopping Marc Kleine-Budde
2022-10-26 8:40 ` [PATCH net-next 23/29] can: kvaser_usb_leaf: Ignore stale bus-off after start Marc Kleine-Budde
2022-10-26 8:40 ` [PATCH net-next 24/29] can: kvaser_usb_leaf: Fix bogus restart events Marc Kleine-Budde
2022-10-26 8:40 ` [PATCH net-next 25/29] can: kvaser_usb: Add struct kvaser_usb_busparams Marc Kleine-Budde
2022-10-26 8:40 ` [PATCH net-next 26/29] can: kvaser_usb: Compare requested bittiming parameters with actual parameters in do_set_{,data}_bittiming Marc Kleine-Budde
2022-10-26 8:40 ` [PATCH net-next 27/29] can: m_can: use consistent indention Marc Kleine-Budde
2022-10-26 8:40 ` [PATCH net-next 28/29] can: ucan: ucan_disconnect(): change unregister_netdev() to unregister_candev() Marc Kleine-Budde
2022-10-26 8:40 ` [PATCH net-next 29/29] can: rcar_canfd: Use devm_reset_control_get_optional_exclusive Marc Kleine-Budde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221026084007.1583333-8-mkl@pengutronix.de \
--to=mkl@pengutronix.de \
--cc=davem@davemloft.net \
--cc=kernel@pengutronix.de \
--cc=kuba@kernel.org \
--cc=linux-can@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rcsekar@samsung.com \
--cc=vivek.2311@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox