Skip to content

Conversation

@pelwell
Copy link
Contributor

@pelwell pelwell commented Nov 13, 2024

…when switching CAN modes

commit eb9a839 upstream.

Since commit 50ea544 ("can: mcp251xfd: fix ring configuration when switching from CAN-CC to CAN-FD mode"), the current ring and coalescing configuration is passed to can_ram_get_layout(). That fixed the issue when switching between CAN-CC and CAN-FD mode with configured ring (rx, tx) and/or coalescing parameters (rx-frames-irq, tx-frames-irq).

However 50ea544 ("can: mcp251xfd: fix ring configuration when switching from CAN-CC to CAN-FD mode"), introduced a regression when switching CAN modes with disabled coalescing configuration: Even if the previous CAN mode has no coalescing configured, the new mode is configured with active coalescing. This leads to delayed receiving of CAN-FD frames.

This comes from the fact, that ethtool uses usecs = 0 and max_frames = 1 to disable coalescing, however the driver uses internally priv->{rx,tx}_obj_num_coalesce_irq = 0 to indicate disabled coalescing.

Fix the regression by assigning struct ethtool_coalesce ec->{rx,tx}_max_coalesced_frames_irq = 1 if coalescing is disabled in the driver as can_ram_get_layout() expects this.

Reported-by: https://github.com/vdh-robothania
Closes: #6407
Fixes: 50ea544 ("can: mcp251xfd: fix ring configuration when switching from CAN-CC to CAN-FD mode")
Cc: stable@vger.kernel.org
Reviewed-by: Simon Horman horms@kernel.org
Link: https://patch.msgid.link/20241025-mcp251xfd-fix-coalesing-v1-1-9d11416de1df@pengutronix.de

…when switching CAN modes

commit eb9a839 upstream.

Since commit 50ea544 ("can: mcp251xfd: fix ring configuration
when switching from CAN-CC to CAN-FD mode"), the current ring and
coalescing configuration is passed to can_ram_get_layout(). That fixed
the issue when switching between CAN-CC and CAN-FD mode with
configured ring (rx, tx) and/or coalescing parameters (rx-frames-irq,
tx-frames-irq).

However 50ea544 ("can: mcp251xfd: fix ring configuration when
switching from CAN-CC to CAN-FD mode"), introduced a regression when
switching CAN modes with disabled coalescing configuration: Even if
the previous CAN mode has no coalescing configured, the new mode is
configured with active coalescing. This leads to delayed receiving of
CAN-FD frames.

This comes from the fact, that ethtool uses usecs = 0 and max_frames =
1 to disable coalescing, however the driver uses internally
priv->{rx,tx}_obj_num_coalesce_irq = 0 to indicate disabled
coalescing.

Fix the regression by assigning struct ethtool_coalesce
ec->{rx,tx}_max_coalesced_frames_irq = 1 if coalescing is disabled in
the driver as can_ram_get_layout() expects this.

Reported-by: https://github.com/vdh-robothania
Closes: raspberrypi#6407
Fixes: 50ea544 ("can: mcp251xfd: fix ring configuration when switching from CAN-CC to CAN-FD mode")
Cc: stable@vger.kernel.org
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20241025-mcp251xfd-fix-coalesing-v1-1-9d11416de1df@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
@pelwell pelwell merged commit f8d59c3 into raspberrypi:rpi-6.6.y Nov 14, 2024
11 of 12 checks passed
popcornmix added a commit to raspberrypi/firmware that referenced this pull request Nov 18, 2024
kernel: fixup! misc: Add RP1 PIO driver
kernel: misc: rp1-pio: Add compat_ioctl method
See: raspberrypi/linux#6470

kernel: configs: enable driver for Vertexcom MSE102X
See: raspberrypi/linux#6474

kernel: Add GPS avoidance option to IMX477
See: raspberrypi/linux#6468

kernel: can: mcp251xfd: mcp251xfd_ring_alloc(): fix coalescing configuration
See: raspberrypi/linux#6466
popcornmix added a commit to raspberrypi/rpi-firmware that referenced this pull request Nov 18, 2024
kernel: fixup! misc: Add RP1 PIO driver
kernel: misc: rp1-pio: Add compat_ioctl method
See: raspberrypi/linux#6470

kernel: configs: enable driver for Vertexcom MSE102X
See: raspberrypi/linux#6474

kernel: Add GPS avoidance option to IMX477
See: raspberrypi/linux#6468

kernel: can: mcp251xfd: mcp251xfd_ring_alloc(): fix coalescing configuration
See: raspberrypi/linux#6466
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

mcp251xfd: candump not receiving messages immediately

2 participants