From: Marc Kleine-Budde <mkl@pengutronix.de> Date: 2021-01-07 10:35:38
Hello Jakub, hello David,
this is a pull request of 6 patches for net/master.
The first patch is by me for the m_can driver and removes an erroneous
m_can_clk_stop() from the driver's unregister function.
The second patch targets the tcan4x5x driver, is by me, and fixes the bit
timing constant parameters.
The next two patches are by me, target the mcp251xfd driver, and fix a race
condition in the optimized TEF path (which was added in net-next for v5.11).
The similar code in the RX path is changed to look the same, although it
doesn't suffer from the race condition.
A patch by Lad Prabhakar updates the description and help text for the rcar CAN
driver to reflect all supported SoCs.
In the last patch Sriram Dash transfers the maintainership of the m_can driver
to Pankaj Sharma.
regards,
Marc
---
The following changes since commit 1f685e6adbbe3c7b1bd9053be771b898d9efa655:
ptp: ptp_ines: prevent build when HAS_IOMEM is not set (2021-01-06 16:17:23 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git tags/linux-can-fixes-for-5.11-20210107
for you to fetch changes up to 6ee49118f87cf02b36f68812bc49855b7b627a2b:
MAINTAINERS: Update MCAN MMIO device driver maintainer (2021-01-07 11:02:10 +0100)
----------------------------------------------------------------
linux-can-fixes-for-5.11-20210107
----------------------------------------------------------------
Lad Prabhakar (1):
can: rcar: Kconfig: update help description for CAN_RCAR config
Marc Kleine-Budde (4):
can: m_can: m_can_class_unregister(): remove erroneous m_can_clk_stop()
can: tcan4x5x: fix bittiming const, use common bittiming from m_can driver
can: mcp251xfd: mcp251xfd_handle_tefif(): fix TEF vs. TX race condition
can: mcp251xfd: mcp251xfd_handle_rxif_ring(): first increment RX tail pointer in HW, then in driver
Sriram Dash (1):
MAINTAINERS: Update MCAN MMIO device driver maintainer
MAINTAINERS | 2 +-
drivers/net/can/m_can/m_can.c | 2 --
drivers/net/can/m_can/tcan4x5x.c | 26 --------------------------
drivers/net/can/rcar/Kconfig | 4 ++--
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 17 ++++++++---------
5 files changed, 11 insertions(+), 40 deletions(-)
From: Marc Kleine-Budde <mkl@pengutronix.de> Date: 2021-01-07 10:35:41
The mcp251xfd driver uses a TX FIFO for sending CAN frames and a TX Event FIFO
(TEF) for completed TX-requests.
The TEF event handling in the mcp251xfd_handle_tefif() function has a race
condition. It first increments the tx-ring's tail counter to signal that
there's room in the TX and TEF FIFO, then it increments the TEF FIFO in
hardware.
A running mcp251xfd_start_xmit() on a different CPU might not stop the txqueue
(as the tx-ring still shows free space). The next mcp251xfd_start_xmit() will
push a message into the chip and the TX complete event might overflow the TEF
FIFO.
This patch changes the order to fix the problem.
Fixes: 68c0c1c7f966 ("can: mcp251xfd: tef-path: reduce number of SPI core requests to set UINC bit")
Link: https://lore.kernel.org/r/20210105214138.3150886-2-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
From: Marc Kleine-Budde <mkl@pengutronix.de> Date: 2021-01-07 10:35:44
According to the TCAN4550 datasheet "SLLSF91 - DECEMBER 2018" the tcan4x5x has
the same bittiming constants as a m_can revision 3.2.x/3.3.0.
The tcan4x5x chip I'm using identifies itself as m_can revision 3.2.1, so
remove the tcan4x5x specific bittiming values and rely on the values in the
m_can driver, which are selected according to core revision.
Fixes: 5443c226ba91 ("can: tcan4x5x: Add tcan4x5x driver to the kernel")
Cc: Dan Murphy <redacted>
Reviewed-by: Sean Nyekjaer <redacted>
Link: https://lore.kernel.org/r/20201215103238.524029-3-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
drivers/net/can/m_can/tcan4x5x.c | 26 --------------------------
1 file changed, 26 deletions(-)
From: Marc Kleine-Budde <mkl@pengutronix.de> Date: 2021-01-07 10:36:19
In m_can_class_register() the clock is started, but stopped on exit. When
calling m_can_class_unregister(), the clock is stopped a second time.
This patch removes the erroneous m_can_clk_stop() in m_can_class_unregister().
Fixes: f524f829b75a ("can: m_can: Create a m_can platform framework")
Cc: Dan Murphy <redacted>
Cc: Sriram Dash <redacted>
Reviewed-by: Sean Nyekjaer <redacted>
Link: https://lore.kernel.org/r/20201215103238.524029-2-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
drivers/net/can/m_can/m_can.c | 2 --
1 file changed, 2 deletions(-)
@@ -1,10 +1,10 @@# SPDX-License-Identifier: GPL-2.0configCAN_RCAR-tristate"Renesas R-Car CAN controller"+tristate"Renesas R-Car and RZ/G CAN controller"depends onARCH_RENESAS||ARMhelpSayYhereifyouwanttouseCANcontrollerfoundonRenesasR-Car-SoCs.+orRZ/GSoCs.Tocompilethisdriverasamodule,chooseMhere:themodulewillbecalledrcar_can.
From: Marc Kleine-Budde <mkl@pengutronix.de> Date: 2021-01-07 10:36:27
From: Sriram Dash <redacted>
Update Pankaj Sharma as maintainer for mcan mmio device driver as I
will be moving to a different role.
Signed-off-by: Sriram Dash <redacted>
Acked-by: Pankaj Sharma <redacted>
Link: https://lore.kernel.org/r/20210104123134.16930-1-sriram.dash@samsung.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
MAINTAINERS | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
From: Marc Kleine-Budde <mkl@pengutronix.de> Date: 2021-01-07 10:36:29
The previous patch fixes a TEF vs. TX race condition, by first updating the TEF
tail pointer in hardware, and then updating the driver internal pointer.
The same pattern exists in the RX-path, too. This should be no problem, as the
driver accesses the RX-FIFO from the interrupt handler only, thus the access is
properly serialized. Fix the order here, too, so that the TEF- and RX-path look
similar.
Fixes: 1f652bb6bae7 ("can: mcp25xxfd: rx-path: reduce number of SPI core requests to set UINC bit")
Link: https://lore.kernel.org/r/20210105214138.3150886-3-mkl@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
From: Jakub Kicinski <kuba@kernel.org> Date: 2021-01-07 19:12:31
On Thu, 7 Jan 2021 11:34:45 +0100 Marc Kleine-Budde wrote:
Hello Jakub, hello David,
this is a pull request of 6 patches for net/master.
The first patch is by me for the m_can driver and removes an erroneous
m_can_clk_stop() from the driver's unregister function.
The second patch targets the tcan4x5x driver, is by me, and fixes the bit
timing constant parameters.
The next two patches are by me, target the mcp251xfd driver, and fix a race
condition in the optimized TEF path (which was added in net-next for v5.11).
The similar code in the RX path is changed to look the same, although it
doesn't suffer from the race condition.
A patch by Lad Prabhakar updates the description and help text for the rcar CAN
driver to reflect all supported SoCs.
In the last patch Sriram Dash transfers the maintainership of the m_can driver
to Pankaj Sharma.