return 0;
 }
 
+static int mlxsw_sp_setup_tc_block(struct mlxsw_sp_port *mlxsw_sp_port,
+                                  struct flow_block_offload *f)
+{
+       switch (f->binder_type) {
+       case FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS:
+               return mlxsw_sp_setup_tc_block_clsact(mlxsw_sp_port, f, true);
+       case FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS:
+               return mlxsw_sp_setup_tc_block_clsact(mlxsw_sp_port, f, false);
+       default:
+               return -EOPNOTSUPP;
+       }
+}
+
 static int mlxsw_sp_setup_tc(struct net_device *dev, enum tc_setup_type type,
                             void *type_data)
 {
 
 struct mlxsw_sp_flow_block *mlxsw_sp_flow_block_create(struct mlxsw_sp *mlxsw_sp,
                                                       struct net *net);
 void mlxsw_sp_flow_block_destroy(struct mlxsw_sp_flow_block *block);
-int mlxsw_sp_setup_tc_block(struct mlxsw_sp_port *mlxsw_sp_port,
-                           struct flow_block_offload *f);
+int mlxsw_sp_setup_tc_block_clsact(struct mlxsw_sp_port *mlxsw_sp_port,
+                                  struct flow_block_offload *f,
+                                  bool ingress);
 
 /* spectrum_acl.c */
 struct mlxsw_sp_acl_ruleset;
 
        }
 }
 
-int mlxsw_sp_setup_tc_block(struct mlxsw_sp_port *mlxsw_sp_port,
-                           struct flow_block_offload *f)
+int mlxsw_sp_setup_tc_block_clsact(struct mlxsw_sp_port *mlxsw_sp_port,
+                                  struct flow_block_offload *f,
+                                  bool ingress)
 {
-       bool ingress;
-
-       if (f->binder_type == FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
-               ingress = true;
-       else if (f->binder_type == FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS)
-               ingress = false;
-       else
-               return -EOPNOTSUPP;
-
        f->driver_block_list = &mlxsw_sp_block_cb_list;
 
        switch (f->command) {