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); -- 2.52.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
