On 1/16/26 6:12 PM, [email protected] wrote:
> From: Numan Siddique <[email protected]>
> 
> Kernel reserves the highest nibble of TCA_CHAIN for extended action
> types.  This means we can't offload the recirculations with values
> greater than 2^28.  Instead of kernel tc returning the error,
> netdev_tc_flow_put() does the check and returns the error.
> 
> Reported-at: 
> https://mail.openvswitch.org/pipermail/ovs-dev/2025-November/427485.html
> Suggested-by: Ilya Maximets <[email protected]>
> Acked-by: Eelco Chaudron <[email protected]>
> Signed-off-by: Numan Siddique <[email protected]>
> ---
> 
> v3 -> v4
> ------
>   - Rebased (there were no conflicts)
>   - Added Eelco's Ack.
> 
> v2 -> v3
> -------
>  - Changed the log to debug and rephrased the log as per Eelco's
>    suggestion.
> 
> 
>  lib/dpif-offload-tc-netdev.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/lib/dpif-offload-tc-netdev.c b/lib/dpif-offload-tc-netdev.c
> index dd63f7cfd..f40cf7342 100644
> --- a/lib/dpif-offload-tc-netdev.c
> +++ b/lib/dpif-offload-tc-netdev.c
> @@ -2341,6 +2341,12 @@ netdev_offload_tc_flow_put(struct dpif *dpif, struct 
> netdev *netdev,
>          return -ifindex;
>      }
>  
> +    if (key->recirc_id > TC_ACT_EXT_VAL_MASK) {
> +        VLOG_DBG_RL(&rl, "flow recirc_id %u exceeds the chain id upper 
> limit",
> +                    key->recirc_id);
> +        return EOPNOTSUPP;
> +    }
> +
>      memset(&flower, 0, sizeof flower);
>  
>      exact_match_on_dl_type = mask->dl_type == htons(0xffff);

Thanks, Numan and Eelco!  Applied and backported down to 3.3.

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

Reply via email to