All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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.