Re: [PATCH v3] can: grcan: Add device driver for GRCAN and GRHCAN cores
From: Andreas Larsson <andreas@gaisler.com>
Date: 2012-11-07 12:55:26
Also in:
linux-devicetree
On 11/07/2012 12:15 PM, Wolfgang Grandegger wrote:
On 11/07/2012 08:32 AM, Andreas Larsson wrote:quoted
On 11/05/2012 10:28 AM, Wolfgang Grandegger wrote:...quoted
quoted
This looks good now. Just the automatic restart is missing as described above.When doing the bus_off handling as in at91_can, on a short-circuited bus with restart-ms != 0, the result of a cansend is an endless and frequent stream of can0 20000004 [8] 00 20 00 00 00 00 88 00 ERRORFRAME controller-problem{tx-error-passive} error-counter-tx-rx{{136}{0}} can0 20000040 [8] 00 00 00 00 00 00 80 00 ERRORFRAME bus-off error-counter-tx-rx{{128}{0}} can0 20000104 [8] 00 00 00 00 00 00 10 00 ERRORFRAME controller-problem{} restarted-after-bus-off error-counter-tx-rx{{16}{0}} can0 20000004 [8] 00 10 00 00 00 00 57 80 ERRORFRAME controller-problem{rx-error-passive} error-counter-tx-rx{{87}{128}} can0 20000040 [8] 00 00 00 00 00 00 80 00 ERRORFRAME bus-off error-counter-tx-rx{{128}{0}} can0 20000104 [8] 00 00 00 00 00 00 08 00 ERRORFRAME controller-problem{} restarted-after-bus-off error-counter-tx-rx{{8}{0}} can0 20000004 [8] 00 10 00 00 00 00 57 80 ERRORFRAME controller-problem{rx-error-passive} error-counter-tx-rx{{87}{128}} can0 20000040 [8] 00 00 00 00 00 00 80 00 ERRORFRAME bus-off error-counter-tx-rx{{128}{0}} can0 20000104 [8] 00 00 00 00 00 00 08 00 ERRORFRAME controller-problem{} restarted-after-bus-off error-counter-tx-rx{{8}{0}} [...] as the grcan core continues to try to resend the frame when it comes back again. To mimic the sja1000 behavior as closely as possible, I guess that the driver also would need to make sure that the tx and rx buffers are cleaned out so that this resending does not happen, right?No, what you see is the normal behavior for automatic restart by the hardware. A bus-off recovery is *not* the same than a controller restart.
OK, if these automatic restarts are an OK behavior when restart_ms is non-zero I am happy with taking the at91_can approach to things. Cheers, Andreas