From: Tom Evans <tom_usenet@optusnet.com.au>
To: Andri Yngvason <andri.yngvason@marel.com>,
Viktor Babrian <babrian.viktor@renyi.mta.hu>
Cc: linux-can@vger.kernel.org
Subject: Re: c_can: (newbie) high system load when frame not acked?
Date: Thu, 15 Jan 2015 11:29:34 +1100 [thread overview]
Message-ID: <54B709EE.2040602@optusnet.com.au> (raw)
In-Reply-To: <20150114095504.16836.68273@shannon>
On 14/01/15 20:55, Andri Yngvason wrote:
> Quoting Tom Evans (2015-01-14 01:35:46)
>> On 14/01/15 02:32, Andri Yngvason wrote:
>>> Quoting Viktor Babrian (2015-01-13 15:10:29)
>>>
>>> Note: The FlexCAN driver does actually respect berr-reporting for i.MX6.
>>> However, it does not respect it for some older chips.
>>
>> The flexcan.c driver behaves differently depending on whether it has
>> "FLEXCAN_HAS_BROKEN_ERR_STATE" set (on for MX25, MX35, MX53 and off for MX28
>> and MX6). I don't think this distinction actually helps, or improves matters
>> enough to be worth the CPU loading this causes in these disconnected/solo CAN
>> states.
>>
> I agree.
>
>> ...
>> Does "FLEXCAN_HAS_BROKEN_ERR_STATE" do anything useful that I've missed? If
>> not then that code should be removed. I've done that in the old (Linux 3.4)
>> version of the driver I'm using.
>>
> The first step towards making that change is posting patches. ;)
Of course. But I'm working on a Linux 3.4 code base that was "frozen" about 15
linux versions ago. I can only generate AND TEST patches for that version.
There have been at least 19 mainstream releases/changes to that code since
that time.
I could generate an untested patch for a later version, but I'd rather not.
I'd rather someone who can test the code do this on the current codebase.
I would propose one of:
1 - Remove ".features = FLEXCAN_HAS_BROKEN_ERR_STATE," from all structures
referencing all chips, like "fsl_p1010_devtype_data". That would be misleading
though and would make the code more confusing than it is (and it is bad enough
at the moment).
2 - Leave "FLEXCAN_HAS_BROKEN_ERR_STATE" for the chips where the WARNING
interrupt doesn't work, but don't DO anything as a consequence. That means
changing the following to ONLY set the error mask on
"CAN_CTRLMODE_BERR_REPORTING" - removing the condition at line 942:
937 /*
938 * enable the "error interrupt" (FLEXCAN_CTRL_ERR_MSK),
939 * on most Flexcan cores, too. Otherwise we don't get
940 * any error warning or passive interrupts.
941 */
942 if (priv->devtype_data->features & FLEXCAN_HAS_BROKEN_ERR_STATE ||
943 priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING)
944 reg_ctrl |= FLEXCAN_CTRL_ERR_MSK;
945 else
946 reg_ctrl &= ~FLEXCAN_CTRL_ERR_MSK;
The comment in the above is very misleading. "Error Interrupts" have nothing
to do with "FLEXCAN_HAS_BROKEN_ERR_STATE". Neither does "passive" as no
FlexCAN cores can generate "passive interrupts". Some cores can generate
"warning", but that's a useless interrupt as it doesn't do anything useful.
It should only say the error interrupts are enabled for
CAN_CTRLMODE_BERR_REPORTING. For "historical interest" it could say that
"FLEXCAN_HAS_BROKEN_ERR_STATE" used to set the error interrupts, but it causes
interrupt flooding and can't fix the "state tracking" anyway.
Tom Evans
next prev parent reply other threads:[~2015-01-15 0:29 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-03 17:54 [PATCH v5 3/5] can: mscan: Consolidate and unify state change handling Andri Yngvason
2015-01-12 17:18 ` c_can: (newbie) high system load when frame not acked? Viktor Babrian
[not found] ` <1735533.0yOonAfCy1@heinz>
2015-01-12 18:50 ` Viktor Babrian
2015-01-13 1:19 ` Tom Evans
2015-01-13 15:10 ` Viktor Babrian
2015-01-13 15:16 ` Marc Kleine-Budde
2015-01-13 15:54 ` Viktor Babrian
2015-01-13 15:55 ` Marc Kleine-Budde
2015-01-13 15:32 ` Andri Yngvason
2015-01-14 1:35 ` Tom Evans
2015-01-14 9:55 ` Andri Yngvason
2015-01-15 0:29 ` Tom Evans [this message]
2015-01-18 18:30 ` [PATCH 3.19-rc3] c_can: SIE disabled when berr-reporting is off to reduce irq flood Viktor Babrian
2015-01-18 18:34 ` Marc Kleine-Budde
2015-01-18 18:52 ` Viktor Babrian
2015-01-18 18:56 ` Marc Kleine-Budde
2015-01-19 11:32 ` Viktor Babrian
2015-01-19 22:35 ` Tom Evans
2015-01-18 19:01 ` [PATCH 3.19-rc3] c_can: end transmission on network stop Viktor Babrian
2015-01-20 14:39 ` 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=54B709EE.2040602@optusnet.com.au \
--to=tom_usenet@optusnet.com.au \
--cc=andri.yngvason@marel.com \
--cc=babrian.viktor@renyi.mta.hu \
--cc=linux-can@vger.kernel.org \
/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).