LIST_HEAD(actions);
 
        exts = cls->knode.exts;
-       if (tc_no_actions(exts))
+       if (!tcf_exts_has_actions(exts))
                return -EINVAL;
 
        tcf_exts_to_list(exts, &actions);
 
        LIST_HEAD(actions);
        int err;
 
-       if (tc_no_actions(exts))
+       if (!tcf_exts_has_actions(exts))
                return -EINVAL;
 
        tcf_exts_to_list(exts, &actions);
 
        LIST_HEAD(actions);
        int err;
 
-       if (tc_no_actions(exts))
+       if (!tcf_exts_has_actions(exts))
                return -EINVAL;
 
        attr->flow_tag = MLX5_FS_DEFAULT_FLOW_TAG;
        bool encap = false;
        int err = 0;
 
-       if (tc_no_actions(exts))
+       if (!tcf_exts_has_actions(exts))
                return -EINVAL;
 
        memset(attr, 0, sizeof(*attr));
 
        LIST_HEAD(actions);
        int err;
 
-       if (!tc_single_action(cls->exts)) {
+       if (!tcf_exts_has_one_action(cls->exts)) {
                netdev_err(mlxsw_sp_port->dev, "only singular actions are supported\n");
                return -EOPNOTSUPP;
        }
 
        LIST_HEAD(actions);
        int err;
 
-       if (tc_no_actions(exts))
+       if (!tcf_exts_has_actions(exts))
                return 0;
 
        /* Count action is inserted first */
 
 
        /* TC direct action */
        if (cls_bpf->exts_integrated) {
-               if (tc_no_actions(cls_bpf->exts))
+               if (!tcf_exts_has_actions(cls_bpf->exts))
                        return NN_ACT_DIRECT;
 
                return -EOPNOTSUPP;
        }
 
        /* TC legacy mode */
-       if (!tc_single_action(cls_bpf->exts))
+       if (!tcf_exts_has_one_action(cls_bpf->exts))
                return -EOPNOTSUPP;
 
        tcf_exts_to_list(cls_bpf->exts, &actions);
 
        return 0;
 }
 
+/**
+ * tcf_exts_has_actions - check if at least one action is present
+ * @exts: tc filter extensions handle
+ *
+ * Returns true if at least one action is present.
+ */
+static inline bool tcf_exts_has_actions(struct tcf_exts *exts)
+{
 #ifdef CONFIG_NET_CLS_ACT
+       return exts->nr_actions;
+#else
+       return false;
+#endif
+}
 
-#define tc_no_actions(_exts)  ((_exts)->nr_actions == 0)
-#define tc_single_action(_exts) ((_exts)->nr_actions == 1)
-
-#else /* CONFIG_NET_CLS_ACT */
-
-#define tc_no_actions(_exts) true
-#define tc_single_action(_exts) false
-
-#endif /* CONFIG_NET_CLS_ACT */
+/**
+ * tcf_exts_has_one_action - check if exactly one action is present
+ * @exts: tc filter extensions handle
+ *
+ * Returns true if exactly one action is present.
+ */
+static inline bool tcf_exts_has_one_action(struct tcf_exts *exts)
+{
+#ifdef CONFIG_NET_CLS_ACT
+       return exts->nr_actions == 1;
+#else
+       return false;
+#endif
+}
 
 int tcf_exts_validate(struct net *net, struct tcf_proto *tp,
                      struct nlattr **tb, struct nlattr *rate_tlv,
 
        if (!ds->ops->port_mirror_add)
                return err;
 
-       if (!tc_single_action(cls->exts))
+       if (!tcf_exts_has_one_action(cls->exts))
                return err;
 
        tcf_exts_to_list(cls->exts, &actions);
 
        const struct tc_action *a;
        LIST_HEAD(actions);
 
-       if (tc_no_actions(exts))
+       if (!tcf_exts_has_actions(exts))
                return -EINVAL;
 
        tcf_exts_to_list(exts, &actions);