OpenCloudOS-Kernel/drivers/net/can
Anssi Hannula 91e9f2c0e7 can: xilinx_can: avoid non-requested bus error frames
Userspace can signal with CAN_CTRLMODE_BERR_REPORTING whether they need
reporting of bus errors (CAN_ERR_BUSERROR) or not.

However, xilinx_can driver currently always sends CAN_ERR_BUSERROR
frames to userspace on bus errors.

To improve performance on error conditions when bus error reporting is
not needed, avoid sending CAN_ERR_BUSERROR frames unless requested via
CAN_CTRLMODE_BERR_REPORTING.

The error interrupt is still kept enabled as there is no dedicated state
transition interrupt, but just disabling error frame submission still
yields a significant performance improvement. In a simple test with
continuous bus errors and no userspace programs reading/writing CAN I
saw system CPU load reduced by 1/3.

Tested on a ZynqMP board with CAN-FD v1.0.

Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2019-11-11 21:58:09 +01:00
..
c_can can: c_can: c_can_plaform: fix checkpatch warnings 2019-11-11 21:58:08 +01:00
cc770 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 495 2019-06-19 17:09:52 +02:00
ifi_canfd treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
m_can can: tcan4x5x: Remove checking the wake pin 2019-09-03 10:23:57 +02:00
mscan treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 344 2019-06-05 17:37:07 +02:00
peak_canfd can: peak_canfd: provide hw timestamps in rx skbs 2019-11-11 21:58:09 +01:00
rcar can: rcar_can: Remove unused platform data support 2019-08-20 13:41:25 +02:00
sja1000 can: peak_pci: Make structure peak_pciec_i2c_bit_ops constant 2019-08-20 13:41:25 +02:00
softing net/can: using dev_get_drvdata directly 2019-07-05 15:24:41 -07:00
spi can: mcp251x: only reset hardware as required 2019-11-11 21:57:28 +01:00
usb can: peak_usb: report bus recovery as well 2019-11-04 21:47:20 +01:00
Kconfig can: kvaser_pciefd: Add driver for Kvaser PCIEcan devices 2019-07-24 10:31:53 +02:00
Makefile can: kvaser_pciefd: Add driver for Kvaser PCIEcan devices 2019-07-24 10:31:53 +02:00
at91_can.c can: mark expected switch fall-throughs 2019-07-25 20:09:42 -05:00
dev.c can: dev: can_restart(): remove unused code 2019-11-11 21:57:28 +01:00
flexcan.c can: flexcan: increase error counters if skb enqueueing via can_rx_offload_queue_sorted() fails 2019-11-04 21:47:22 +01:00
grcan.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
janz-ican3.c net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
kvaser_pciefd.c can: kvaser_pciefd: the PWM generator is running at the bus frequency of the system. 2019-09-03 10:23:57 +02:00
led.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
pch_can.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 340 2019-06-05 17:37:07 +02:00
rx-offload.c can: rx-offload: can_rx_offload_irq_offload_fifo(): continue on error 2019-11-04 21:47:22 +01:00
slcan.c can: make use of preallocated can_ml_priv for per device struct can_dev_rcv_lists 2019-09-04 13:29:15 +02:00
sun4i_can.c net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
ti_hecc.c can: ti_hecc: add missing state changes 2019-11-04 21:47:23 +01:00
vcan.c can: make use of preallocated can_ml_priv for per device struct can_dev_rcv_lists 2019-09-04 13:29:15 +02:00
vxcan.c can: make use of preallocated can_ml_priv for per device struct can_dev_rcv_lists 2019-09-04 13:29:15 +02:00
xilinx_can.c can: xilinx_can: avoid non-requested bus error frames 2019-11-11 21:58:09 +01:00