From: "Jonas Mark (ST-FIR/ENG1)" <Mark.Jonas@de.bosch.com>
To: Andri Yngvason <andri.yngvason@marel.com>,
"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>,
"mkl@pengutronix.de" <mkl@pengutronix.de>,
"wg@grandegger.com" <wg@grandegger.com>
Cc: "hs@denx.de" <hs@denx.de>,
"RUAN Tingquan (ST-FIR/ENG1-Zhu)" <Tingquan.Ruan@cn.bosch.com>,
"Jonas Mark (ST-FIR/ENG1)" <Mark.Jonas@de.bosch.com>,
"ZHU Yi (ST-FIR/ENG1-Zhu)" <Yi.Zhu5@cn.bosch.com>
Subject: AW: AW: flexcan missing error state transitions
Date: Tue, 22 Aug 2017 13:50:35 +0000 [thread overview]
Message-ID: <e54b0db7ec524bcca65e1975aaf13b2b@SI-MBX1030.de.bosch.com> (raw)
In-Reply-To: <150333966184.28484.15326759292718336833@maxwell>
Hello Andri,
> > Which polling interval do you think would be appropriate? It somehow has to be
> a reasonable trade-off between latency and CPU usage.
> That's a good question. I don't think that there is a really good answer to it.
> It would be nice to see intermittent state-transitions happening, so I would say as
> fast as possible without affecting CPU usage to a significant degree. The polling
> timer should not be a high resolution timer or anything that would preempt an rt
> task.
>
> This value could also depend on the bitrate as that will affect the rate at which the
> error-counter can change. E.g. on 125 k rate, you will receive at most one frame
> per 1 ms. This means that the error state will change at at least
> 64 ms intervals, so we would have to sample at 32 ms intervals to catch all the
> transitions. For 1 M this would be around 2 ms.
>
> Note that this is all somewhat speculative as I do not know exactly how fast the
> error counters are incremented/decremented.
We agree that there is a sensible lower boundary for the polling interval which depends on the bitrate. And there is a upper boundary which depends on the application.
We are currently thinking about whether it would be possible to do the polling only in case the controller is actually experiencing trouble.
For the i.MX6 there is an interrupt when the controller changes from Error Active to Error Warning. This shall enable the polling.
For the i.MX53 there is no Active -> Warning interrupt. But for all kinds of error events on the bus an Error interrupt will be created. So the polling shall be enabled then. This is a little bit less efficient compared to i.MX6 but the polling will be disabled during the next interrupt if the state is still Error Active (see below).
For both, the polling can be disabled when the status is read and it is Error Active. The polling shall be disabled as well when a Bus-Off interrupt occurs.
What we still need to resolve is the concurrency between the timer and the interrupt when accessing internal data structures and sending SocketCAN error frames. Once we have that sorted out we will send a patch. None the less, early feedback is welcome.
> > Would it make sense to make the polling interval configurable via device tree?
> Also a good questions. I tried compiling a C program that runs usleep(2000) in a
> loop for the i.MX6. It runs at around 1% CPU usage in top. I would call that
> significant. Perhaps it would run better in kernel space?
>
> If the polling interval can be configured, users who care about it can set it to a
> value that matches their bitrate. Others could set it to zero to turn it off.
We also think that the polling interval should be configurable. It strongly depends on the application which latency between state change and notification is acceptable and how much computing resources may be invested to achieve that.
> As the useful sampling frequency depends on the bitrate, perhaps it should even
> be a part of the netlink interface? This would also make it easier for the user to find
> a good sampling frequency based on trial and error.
Right now we are not convinced that adding to the netlink interface is justified to work around deficiencies of a single CAN peripheral.
Regards,
Mark
next prev parent reply other threads:[~2017-08-22 13:50 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-18 7:47 flexcan missing error state transitions ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-21 16:18 ` Andri Yngvason
2017-08-21 17:13 ` AW: " Jonas Mark (ST-FIR/ENG1)
2017-08-21 18:21 ` Andri Yngvason
2017-08-22 13:50 ` Jonas Mark (ST-FIR/ENG1) [this message]
2017-08-22 14:06 ` AW: " Marc Kleine-Budde
2017-08-22 19:03 ` AW: " Jonas Mark (ST-FIR/ENG1)
2017-08-24 9:40 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-25 17:16 ` Andri Yngvason
2017-08-27 10:57 ` Wolfgang Grandegger
2017-08-28 4:21 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-28 8:33 ` Wolfgang Grandegger
2017-08-29 8:49 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-29 9:38 ` Wolfgang Grandegger
2017-08-30 1:39 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-29 11:17 ` Wolfgang Grandegger
2017-08-30 4:22 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-30 6:25 ` Wolfgang Grandegger
2017-08-30 6:50 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-30 7:15 ` Wolfgang Grandegger
2017-08-30 9:05 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-30 10:59 ` Wolfgang Grandegger
2017-08-31 8:33 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-31 9:53 ` Wolfgang Grandegger
2017-09-01 8:24 ` ZHU Yi (ST-FIR/ENG1-Zhu)
2017-08-29 13:41 ` Andri Yngvason
2017-08-22 14:14 ` AW: AW: " Andri Yngvason
2017-08-27 12:55 ` 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=e54b0db7ec524bcca65e1975aaf13b2b@SI-MBX1030.de.bosch.com \
--to=mark.jonas@de.bosch.com \
--cc=Tingquan.Ruan@cn.bosch.com \
--cc=Yi.Zhu5@cn.bosch.com \
--cc=andri.yngvason@marel.com \
--cc=hs@denx.de \
--cc=linux-can@vger.kernel.org \
--cc=mkl@pengutronix.de \
--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