summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorZHU Yi (ST-FIR/ENG1-Zhu) <Yi.Zhu5@cn.bosch.com>2017-09-15 07:03:58 +0000
committerMarc Kleine-Budde <mkl@pengutronix.de>2017-10-19 13:05:53 +0200
commitda49a8075c00b4d98ef069a0ee201177a8b79ead (patch)
tree62047d085ffc459c637b01bf9c2ccc0a780ff265 /lib
parent2f8639b24b4f4f9dd6cf7c1f2aea90e2fcbcc451 (diff)
downloadlinux-da49a8075c00b4d98ef069a0ee201177a8b79ead.tar.bz2
can: flexcan: implement error passive state quirk
Add FLEXCAN_QUIRK_BROKEN_PERR_STATE for better description of the missing error passive interrupt quirk. Error interrupt flooding may happen if the broken error state quirk fix is enabled. For example, in case there is singled out node on the bus and the node sends a frame, then error interrupt flooding happens and will not stop because the node cannot go to bus off. The flooding will stop after another node connected to the bus again. If high bitrate configured on the low end system, then the flooding may causes performance issue, hence, this patch mitigates this by: 1. disable error interrupt upon error passive state transition 2. re-enable error interrupt upon error warning state transition 3. disable/enable error interrupt upon error active state transition depends on FLEXCAN_QUIRK_BROKEN_WERR_STATE In this way, the driver is still able to report correct state transitions without additional latency. When there are bus problems, flooding of error interrupts is limited to the number of frames required to change state from error warning to error passive if the core has [TR]WRN_INT connected (FLEXCAN_QUIRK_BROKEN_WERR_STATE is not enabled), otherwise, the flooding is limited to the number of frames required to change state from error active to error passive. Signed-off-by: Zhu Yi <yi.zhu5@cn.bosch.com> Signed-off-by: Mark Jonas <mark.jonas@de.bosch.com> Acked-by: Wolfgang Grandegger <wg@grandegger.com> Cc: linux-stable <stable@vger.kernel.org> # >= v4.11 Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions