linux-uconsole/drivers/net/can
Oliver Hartkopp 24bf50bc89 can: fix handling of unmodifiable configuration options
commit bb208f144c upstream.

As described in 'can: m_can: tag current CAN FD controllers as non-ISO'
(6cfda7fbeb) it is possible to define fixed configuration options by
setting the according bit in 'ctrlmode' and clear it in 'ctrlmode_supported'.
This leads to the incovenience that the fixed configuration bits can not be
passed by netlink even when they have the correct values (e.g. non-ISO, FD).

This patch fixes that issue and not only allows fixed set bit values to be set
again but now requires(!) to provide these fixed values at configuration time.
A valid CAN FD configuration consists of a nominal/arbitration bittiming, a
data bittiming and a control mode with CAN_CTRLMODE_FD set - which is now
enforced by a new can_validate() function. This fix additionally removed the
inconsistency that was prohibiting the support of 'CANFD-only' controller
drivers, like the RCar CAN FD.

For this reason a new helper can_set_static_ctrlmode() has been introduced to
provide a proper interface to handle static enabled CAN controller options.

Reported-by: Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
Reviewed-by: Ramesh Shanmugasundaram  <ramesh.shanmugasundaram@bp.renesas.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-06-01 12:15:50 -07:00
..
c_can can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
cc770 can: fix assignment of error location in CAN error messages 2015-11-23 09:37:34 +01:00
m_can can: fix handling of unmodifiable configuration options 2016-06-01 12:15:50 -07:00
mscan can: constify of_device_id array 2015-03-17 15:00:23 -04:00
sja1000 can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
softing can: move can_stats.bus_off++ from can_bus_off into can_change_state 2015-01-20 13:56:53 +01:00
spi spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
usb can: gs_usb: fixed disconnect bug by removing erroneous use of kfree() 2016-03-16 08:42:59 -07:00
at91_can.c can: at91: remove at91_can_data 2015-10-13 17:42:35 +02:00
bfin_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
dev.c can: fix handling of unmodifiable configuration options 2016-06-01 12:15:50 -07:00
flexcan.c can: fix assignment of error location in CAN error messages 2015-11-23 09:37:34 +01:00
grcan.c can: grcan: don't touch skb after netif_rx() 2015-07-15 09:04:27 +02:00
janz-ican3.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
Kconfig can: Allwinner A10/A20 CAN Controller support - Kernel module 2015-09-17 22:39:08 +02:00
led.c can: add combined rx/tx LED trigger support 2015-03-22 23:50:11 +01:00
Makefile can: Allwinner A10/A20 CAN Controller support - Kernel module 2015-09-17 22:39:08 +02:00
pch_can.c can: fix assignment of error location in CAN error messages 2015-11-23 09:37:34 +01:00
rcar_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
slcan.c can: slcan: don't touch skb after netif_rx_ni() 2015-07-15 09:04:27 +02:00
sun4i_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
ti_hecc.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
vcan.c can: replace timestamp as unique skb attribute 2015-07-12 21:13:22 +02:00
xilinx_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00