#include "act.h"
 #include "en/tc_priv.h"
 
-static bool
-tc_act_can_offload_accept(struct mlx5e_tc_act_parse_state *parse_state,
-                         const struct flow_action_entry *act,
-                         int act_index,
-                         struct mlx5_flow_attr *attr)
-{
-       return true;
-}
-
 static int
 tc_act_parse_accept(struct mlx5e_tc_act_parse_state *parse_state,
                    const struct flow_action_entry *act,
 }
 
 struct mlx5e_tc_act mlx5e_tc_act_accept = {
-       .can_offload = tc_act_can_offload_accept,
        .parse_action = tc_act_parse_accept,
        .is_terminating_action = true,
 };
 
 #include "act.h"
 #include "en/tc_priv.h"
 
-static bool
-tc_act_can_offload_drop(struct mlx5e_tc_act_parse_state *parse_state,
-                       const struct flow_action_entry *act,
-                       int act_index,
-                       struct mlx5_flow_attr *attr)
-{
-       return true;
-}
-
 static int
 tc_act_parse_drop(struct mlx5e_tc_act_parse_state *parse_state,
                  const struct flow_action_entry *act,
 }
 
 struct mlx5e_tc_act mlx5e_tc_act_drop = {
-       .can_offload = tc_act_can_offload_drop,
        .parse_action = tc_act_parse_drop,
        .is_terminating_action = true,
 };
 
        return err;
 }
 
-static bool
-tc_act_can_offload_pedit(struct mlx5e_tc_act_parse_state *parse_state,
-                        const struct flow_action_entry *act,
-                        int act_index,
-                        struct mlx5_flow_attr *attr)
-{
-       return true;
-}
-
 static int
 tc_act_parse_pedit(struct mlx5e_tc_act_parse_state *parse_state,
                   const struct flow_action_entry *act,
 }
 
 struct mlx5e_tc_act mlx5e_tc_act_pedit = {
-       .can_offload = tc_act_can_offload_pedit,
        .parse_action = tc_act_parse_pedit,
 };
 
 #include "act.h"
 #include "en/tc_priv.h"
 
-static bool
-tc_act_can_offload_ptype(struct mlx5e_tc_act_parse_state *parse_state,
-                        const struct flow_action_entry *act,
-                        int act_index,
-                        struct mlx5_flow_attr *attr)
-{
-       return true;
-}
-
 static int
 tc_act_parse_ptype(struct mlx5e_tc_act_parse_state *parse_state,
                   const struct flow_action_entry *act,
 }
 
 struct mlx5e_tc_act mlx5e_tc_act_ptype = {
-       .can_offload = tc_act_can_offload_ptype,
        .parse_action = tc_act_parse_ptype,
 };
 
 #include "en/tc_priv.h"
 #include "eswitch.h"
 
-static bool
-tc_act_can_offload_trap(struct mlx5e_tc_act_parse_state *parse_state,
-                       const struct flow_action_entry *act,
-                       int act_index,
-                       struct mlx5_flow_attr *attr)
-{
-       return true;
-}
-
 static int
 tc_act_parse_trap(struct mlx5e_tc_act_parse_state *parse_state,
                  const struct flow_action_entry *act,
 }
 
 struct mlx5e_tc_act mlx5e_tc_act_trap = {
-       .can_offload = tc_act_can_offload_trap,
        .parse_action = tc_act_parse_trap,
 };
 
        return 0;
 }
 
-static bool
-tc_act_can_offload_tun_decap(struct mlx5e_tc_act_parse_state *parse_state,
-                            const struct flow_action_entry *act,
-                            int act_index,
-                            struct mlx5_flow_attr *attr)
-{
-       return true;
-}
-
 static int
 tc_act_parse_tun_decap(struct mlx5e_tc_act_parse_state *parse_state,
                       const struct flow_action_entry *act,
 };
 
 struct mlx5e_tc_act mlx5e_tc_act_tun_decap = {
-       .can_offload = tc_act_can_offload_tun_decap,
        .parse_action = tc_act_parse_tun_decap,
 };
 
        return err;
 }
 
-static bool
-tc_act_can_offload_vlan(struct mlx5e_tc_act_parse_state *parse_state,
-                       const struct flow_action_entry *act,
-                       int act_index,
-                       struct mlx5_flow_attr *attr)
-{
-       return true;
-}
-
 static int
 tc_act_parse_vlan(struct mlx5e_tc_act_parse_state *parse_state,
                  const struct flow_action_entry *act,
 }
 
 struct mlx5e_tc_act mlx5e_tc_act_vlan = {
-       .can_offload = tc_act_can_offload_vlan,
        .parse_action = tc_act_parse_vlan,
        .post_parse = tc_act_post_parse_vlan,
 };
 
        return err;
 }
 
-static bool
-tc_act_can_offload_vlan_mangle(struct mlx5e_tc_act_parse_state *parse_state,
-                              const struct flow_action_entry *act,
-                              int act_index,
-                              struct mlx5_flow_attr *attr)
-{
-       return true;
-}
-
 static int
 tc_act_parse_vlan_mangle(struct mlx5e_tc_act_parse_state *parse_state,
                         const struct flow_action_entry *act,
 }
 
 struct mlx5e_tc_act mlx5e_tc_act_vlan_mangle = {
-       .can_offload = tc_act_can_offload_vlan_mangle,
        .parse_action = tc_act_parse_vlan_mangle,
 };
 
                        goto out_free;
                }
 
-               if (!tc_act->can_offload(parse_state, act, i, attr)) {
+               if (tc_act->can_offload && !tc_act->can_offload(parse_state, act, i, attr)) {
                        err = -EOPNOTSUPP;
                        goto out_free;
                }