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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.