On 7/14/26 4:14 PM, Eelco Chaudron wrote:
> 
> 
> On 10 Jul 2026, at 17:29, Ilya Maximets wrote:
> 
>> As a general rule, code that requires ALLOW_EXPERIMENTAL_API is not
>> allowed on the main branch.
>>
>> The exemption was granted to the tunnel offload implementation because
>> it was a large piece of code that is hard to maintain separately and
>> there was a hope that it will become stable in a relatively short
>> amount of time.  That was 5 years ago, so clearly that didn't work out.
>>
>> In the current code, even the parts that could be generic are gated
>> by the ALLOW_EXPERIMENTAL_API macro.  The reason is the noticeable
>> performance impact packet metadata restoration API has on every packet
>> even when the traffic is not offloaded.  There was an attempt to make
>> it faster by providing a dynamic mbuf flag, but checking dynamic flags
>> still causes performance impact due to a series of indirect calls into
>> DPDK per packet.
>>
>> We don't have test coverage for this code on main, we don't even build
>> it in CI on main (and we shouldn't), and there is no much hope for it
>> to become performant enough to become stable within a reasonable time
>> frame.
>>
>> So, it's time to remove this code from main.  It can live in the
>> dpdk-latest branch where we have at least some compilation tests for
>> the experimental API.  And if someday it becomes stable, we can add
>> it back to main.  Though the code would likely need to be re-reviewed
>> as it at least has some style issues.
>>
>> With this code removed, there are no more offload providers that
>> implements post processing and can return EOPNOTSUPP on a per-device
>> basis.  However, calling into a separate translation unit, getting
>> RCU-protected offload provider and checking if the method exists is
>> still expensive if done per packet.  Simple vhost-to-vhost forwarding
>> test with offload enabled (but not supported, obviously) shows 1-1.5%
>> performance degradation.  So, the early check of the
>> 'post_process_api_supported' before calling into dpif_offload module
>> is still needed.
>>
>> Signed-off-by: Ilya Maximets <[email protected]>
> 
> Thanks for getting the v2 out! Changes look good to me.
> 
> Acked-by: Eelco Chaudron <[email protected]>
> 

Thanks, Eli and Eelco!  I rebased this on top of the partial offload fix
and applied to main.

I also re-worded the performance-related paragraph in the commit message
so it just points out the performance problem with no relation to the code
being experimental.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to