]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/sched: act_police: allow 'continue' action offload
authorVlad Buslov <vladbu@nvidia.com>
Mon, 4 Jul 2022 20:44:04 +0000 (22:44 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Jul 2022 11:44:39 +0000 (12:44 +0100)
Offloading police with action TC_ACT_UNSPEC was erroneously disabled even
though it was supported by mlx5 matchall offload implementation, which
didn't verify the action type but instead assumed that any single police
action attached to matchall classifier is a 'continue' action. Lack of
action type check made it non-obvious what mlx5 matchall implementation
actually supports and caused implementers and reviewers of referenced
commits to disallow it as a part of improved validation code.

Fixes: e261130e9075 ("net: flow_offload: add tc police action parameters")
Fixes: 7d8f08e22631 ("net/sched: act_police: Add extack messages for offload failure")
Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Tested-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/flow_offload.h
net/sched/act_police.c

index 6484095a8c011681ffbb5898adceecb4902c5255..7ac313858037aebe2c2b89fdb8c26c5785748d30 100644 (file)
@@ -152,6 +152,7 @@ enum flow_action_id {
        FLOW_ACTION_PIPE,
        FLOW_ACTION_VLAN_PUSH_ETH,
        FLOW_ACTION_VLAN_POP_ETH,
+       FLOW_ACTION_CONTINUE,
        NUM_FLOW_ACTIONS,
 };
 
index 79c8901f66ab1c87554581d81b0e5835582db0f8..b759628a47c204d49aa6caca5031451809ec99fd 100644 (file)
@@ -442,7 +442,7 @@ static int tcf_police_act_to_flow_act(int tc_act, u32 *extval,
                act_id = FLOW_ACTION_JUMP;
                *extval = tc_act & TC_ACT_EXT_VAL_MASK;
        } else if (tc_act == TC_ACT_UNSPEC) {
-               NL_SET_ERR_MSG_MOD(extack, "Offload not supported when conform/exceed action is \"continue\"");
+               act_id = FLOW_ACTION_CONTINUE;
        } else {
                NL_SET_ERR_MSG_MOD(extack, "Unsupported conform/exceed action offload");
        }