Thread (21 messages) flat view 21 messages, 4 authors, 2026-02-06

Re: [PATCH net] net: renesas: rswitch: fix forwarding offload statemachine

From: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Date: 2026-02-05 07:58:55
Also in: linux-renesas-soc, lkml


WBR,
Nikita Yushchenko,
System Software Engineer @ Cogent Embedded

05.02.2026 08:47, Nikita Yushchenko wrote:
Hello Michael
quoted
-        } else if (rdev->forwarding_offloaded) {
+        } else if (rdev->forwarding_offloaded &&
+               !rdev->forwarding_requested) {
              rswitch_change_l2_hw_offloading(rdev, false, false);
          }
Although indeed the condition in the current code is not correct, I'm not sure comfortable with this fix.

Full condition for a port to be a valid candidate for hardware forwarding is

   rdev_for_l2_offload() && rdev->forwarding_requested

It is not obvious if at this point rdev_for_l2_offload() could get changed from the last call to 
rswitch_change_l2_hw_offloading(), so using only the partial condition at this point does not look good 
for me.

I'd suggest to either change to something like

if (rdev_for_l2_offload() && rdev->forwarding_requested && !rdev->forwarding_offloaded)
     rswitch_change_l2_hw_offloading(rdev, true, false);
if (!(rdev_for_l2_offload() && rdev->forwarding_requested) && rdev->forwarding_offloaded)
     rswitch_change_l2_hw_offloading(rdev, false, false);

Or maybe just

if (rdev_for_l2_offload() && rdev->forwarding_requested)
     rswitch_change_l2_hw_offloading(rdev, true, false);
else
     rswitch_change_l2_hw_offloading(rdev, false, false);

since rswitch_change_l2_hw_offloading() has internal check for the current state and returns early if 
the requested change is already applied.
May be even better to add

   bool new_forwarding_offloaded = rdev_for_l2_offload(rdev) && rdev->forwarding_requested;

at the beginning of the loop body, and use this flag over the loop - it will make the code shorter and 
cleaner.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help