Re: [PATCH net] net: renesas: rswitch: fix forwarding offload statemachine
From: Nikita Yushchenko
Date: Thu Feb 05 2026 - 02:49:23 EST
Hello Michael
- } 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.
Nikita