From: Andreas Larsson <andreas@gaisler.com>
To: Wolfgang Grandegger <wg@grandegger.com>
Cc: linux-can@vger.kernel.org, Marc Kleine-Budde <mkl@pengutronix.de>,
devicetree-discuss@lists.ozlabs.org, software@gaisler.com
Subject: Re: [PATCH v3] can: grcan: Add device driver for GRCAN and GRHCAN cores
Date: Tue, 30 Oct 2012 17:24:48 +0100 [thread overview]
Message-ID: <508FFF50.8050900@gaisler.com> (raw)
In-Reply-To: <508FA6D3.9000809@grandegger.com>
On 10/30/2012 11:07 AM, Wolfgang Grandegger wrote:
>> + /* AHB bus error interrupts (not CAN bus errors) - shut down the
>> + * device.
>> + */
>> + if (sources & (GRCAN_IRQ_TXAHBERR | GRCAN_IRQ_RXAHBERR)) {
>> + if (sources & GRCAN_IRQ_TXAHBERR) {
>> + netdev_err(dev, "got AHB bus error on tx\n");
>> + stats->tx_errors++;
>> + } else {
>> + netdev_err(dev, "got AHB bus error on rx\n");
>> + stats->rx_errors++;
>> + }
>> + netdev_err(dev, "halting device\n");
>> +
>> + /* Prevent anything to be enabled again and halt device */
>> + SPIN_LOCK(&priv->lock);
>> + priv->closing = true;
>> + netif_stop_queue(dev);
>> + grcan_stop(dev);
>> + SPIN_UNLOCK(&priv->lock);
>
> Hm, does that really happen? How can the user/app realized the problem
> and recover?
My understanding of it is that if you get amba bus errors something is seriously
wrong and nothing can be done at driver level to recover. Shutting down the
device is to prevent the driver from spamming console messages. I used to have a
sysfs indication of such errors. Now dmesg is the way to find out about the
problem. The user can always bring the interface down and up again and try again
after such an error.
> Furthermore, why is a spin_clock enough here? THe interrupt may run a
> thread.
It should be enough because the function is only called
directly from the interrupt handler, right? Or did I miss something?
>> + priv->can.ctrlmode_supported =
>> + CAN_CTRLMODE_LISTENONLY | CAN_CTRLMODE_ONE_SHOT;
>
> What about triple-sampling?
That is not supported by the hardware.
> I curious how the device behaves on bus errors and state changes. Could
> you please show the output of "candump -e any,0:0,#FFFFFFFF" while
> sending a CAN message with no other node on the bus (not connected) and
> with going bus off (by short-circuiting CAN high and low).
Here is the output (with long sequences of similar error frames
where only one counter is increasing cut out) from the the upcoming v4. let me
know if you see any problems with this.
can0 20000006 [8] 00 00 00 00 00 00 10 00 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{}
error-counter-tx-rx{{16}{0}}
can0 20000004 [8] 00 20 00 00 00 00 88 00 ERRORFRAME
controller-problem{tx-error-passive}
error-counter-tx-rx{{136}{0}}
can0 20000006 [8] 00 20 00 00 00 00 90 00 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{tx-error-passive}
error-counter-tx-rx{{144}{0}}
[...]
can0 20000006 [8] 00 20 00 00 00 00 F0 00 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{tx-error-passive}
error-counter-tx-rx{{240}{0}}
can0 20000006 [8] 00 20 00 00 00 00 F8 00 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{tx-error-passive}
error-counter-tx-rx{{248}{0}}
can0 20000042 [8] 00 00 00 00 00 00 80 00 ERRORFRAME
lost-arbitration{at bit 0}
bus-off
error-counter-tx-rx{{128}{0}}
can0 20000006 [8] 00 00 00 00 00 00 18 00 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{}
error-counter-tx-rx{{24}{0}}
can0 20000004 [8] 00 10 00 00 00 00 4F 80 ERRORFRAME
controller-problem{rx-error-passive}
error-counter-tx-rx{{79}{128}}
[...]
can0 20000006 [8] 00 10 00 00 00 00 77 80 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{rx-error-passive}
error-counter-tx-rx{{119}{128}}
can0 20000006 [8] 00 30 00 00 00 00 7F 80 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{rx-error-passive,tx-error-passive}
error-counter-tx-rx{{127}{128}}
can0 20000006 [8] 00 30 00 00 00 00 87 80 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{rx-error-passive,tx-error-passive}
error-counter-tx-rx{{135}{128}}
[...]
can0 20000006 [8] 00 30 00 00 00 00 F7 80 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{rx-error-passive,tx-error-passive}
error-counter-tx-rx{{247}{128}}
can0 20000006 [8] 00 30 00 00 00 00 FF 80 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{rx-error-passive,tx-error-passive}
error-counter-tx-rx{{255}{128}}
can0 20000042 [8] 00 00 00 00 00 00 80 00 ERRORFRAME
lost-arbitration{at bit 0}
bus-off
error-counter-tx-rx{{128}{0}}
can0 20000006 [8] 00 00 00 00 00 00 18 00 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{}
error-counter-tx-rx{{24}{0}}
can0 20000004 [8] 00 10 00 00 00 00 4F 80 ERRORFRAME
controller-problem{rx-error-passive}
error-counter-tx-rx{{79}{128}}
can0 20000006 [8] 00 10 00 00 00 00 57 80 ERRORFRAME
lost-arbitration{at bit 0}
controller-problem{rx-error-passive}
error-counter-tx-rx{{87}{128}}
[...]
Thanks a lot for all the feedback!
I'll send in v4 tomorrow.
Cheers,
Andreas
next prev parent reply other threads:[~2012-10-30 16:24 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <5076999F.6070302@pengutronix.de>
2012-10-23 9:57 ` [PATCH v2] can: grcan: Add device driver for GRCAN and GRHCAN cores Andreas Larsson
2012-10-23 16:26 ` Wolfgang Grandegger
2012-10-24 13:31 ` Andreas Larsson
2012-10-30 9:06 ` [PATCH v3] " Andreas Larsson
2012-10-30 10:07 ` Wolfgang Grandegger
2012-10-30 16:24 ` Andreas Larsson [this message]
2012-10-31 12:51 ` Wolfgang Grandegger
2012-10-31 16:33 ` Andreas Larsson
2012-10-31 16:39 ` [PATCH v4] " Andreas Larsson
2012-10-31 20:21 ` [PATCH v3] " Wolfgang Grandegger
2012-11-01 16:08 ` Andreas Larsson
2012-11-02 14:23 ` [PATCH v5] " Andreas Larsson
2012-11-05 9:28 ` [PATCH v3] " Wolfgang Grandegger
2012-11-07 7:32 ` Andreas Larsson
2012-11-07 11:15 ` Wolfgang Grandegger
2012-11-07 12:55 ` Andreas Larsson
2012-11-07 15:20 ` [PATCH v6] " Andreas Larsson
2012-11-08 8:29 ` Wolfgang Grandegger
2012-11-08 9:27 ` Marc Kleine-Budde
2012-11-08 10:37 ` Andreas Larsson
[not found] ` <509B7B1E.5040509-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-08 13:10 ` [PATCH v7] " Andreas Larsson
2012-11-09 0:01 ` Marc Kleine-Budde
2012-11-12 14:57 ` [PATCH v8] " Andreas Larsson
2012-11-13 21:15 ` Marc Kleine-Budde
2012-11-14 7:50 ` Andreas Larsson
2012-11-14 8:43 ` Marc Kleine-Budde
2012-11-14 11:02 ` Andreas Larsson
2012-11-14 11:22 ` Marc Kleine-Budde
2012-11-14 15:07 ` Andreas Larsson
2012-11-14 15:12 ` Marc Kleine-Budde
2012-11-15 7:47 ` [PATCH v9] " Andreas Larsson
2012-11-15 20:32 ` Marc Kleine-Budde
2012-11-16 6:17 ` Andreas Larsson
2012-11-08 10:33 ` [PATCH v6] " Andreas Larsson
2012-10-30 9:29 ` [PATCH v2] " Wolfgang Grandegger
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=508FFF50.8050900@gaisler.com \
--to=andreas@gaisler.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=linux-can@vger.kernel.org \
--cc=mkl@pengutronix.de \
--cc=software@gaisler.com \
--cc=wg@grandegger.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;
as well as URLs for NNTP newsgroup(s).