static int
 mlx5e_rep_indr_offload(struct net_device *netdev,
                       struct flow_cls_offload *flower,
-                      struct mlx5e_rep_indr_block_priv *indr_priv)
+                      struct mlx5e_rep_indr_block_priv *indr_priv,
+                      unsigned long flags)
 {
-       unsigned long flags = MLX5_TC_FLAG(EGRESS) | MLX5_TC_FLAG(ESW_OFFLOAD);
        struct mlx5e_priv *priv = netdev_priv(indr_priv->rpriv->netdev);
        int err = 0;
 
        return err;
 }
 
-static int mlx5e_rep_indr_setup_block_cb(enum tc_setup_type type,
-                                        void *type_data, void *indr_priv)
+static int mlx5e_rep_indr_setup_tc_cb(enum tc_setup_type type,
+                                     void *type_data, void *indr_priv)
 {
+       unsigned long flags = MLX5_TC_FLAG(EGRESS) | MLX5_TC_FLAG(ESW_OFFLOAD);
        struct mlx5e_rep_indr_block_priv *priv = indr_priv;
 
        switch (type) {
        case TC_SETUP_CLSFLOWER:
-               return mlx5e_rep_indr_offload(priv->netdev, type_data, priv);
+               return mlx5e_rep_indr_offload(priv->netdev, type_data, priv,
+                                             flags);
        default:
                return -EOPNOTSUPP;
        }
 }
 
-static void mlx5e_rep_indr_tc_block_unbind(void *cb_priv)
+static void mlx5e_rep_indr_block_unbind(void *cb_priv)
 {
        struct mlx5e_rep_indr_block_priv *indr_priv = cb_priv;
 
 static LIST_HEAD(mlx5e_block_cb_list);
 
 static int
-mlx5e_rep_indr_setup_tc_block(struct net_device *netdev,
-                             struct mlx5e_rep_priv *rpriv,
-                             struct flow_block_offload *f)
+mlx5e_rep_indr_setup_block(struct net_device *netdev,
+                          struct mlx5e_rep_priv *rpriv,
+                          struct flow_block_offload *f,
+                          flow_setup_cb_t *setup_cb)
 {
        struct mlx5e_rep_indr_block_priv *indr_priv;
        struct flow_block_cb *block_cb;
                list_add(&indr_priv->list,
                         &rpriv->uplink_priv.tc_indr_block_priv_list);
 
-               block_cb = flow_block_cb_alloc(mlx5e_rep_indr_setup_block_cb,
-                                              indr_priv, indr_priv,
-                                              mlx5e_rep_indr_tc_block_unbind);
+               block_cb = flow_block_cb_alloc(setup_cb, indr_priv, indr_priv,
+                                              mlx5e_rep_indr_block_unbind);
                if (IS_ERR(block_cb)) {
                        list_del(&indr_priv->list);
                        kfree(indr_priv);
                if (!indr_priv)
                        return -ENOENT;
 
-               block_cb = flow_block_cb_lookup(f->block,
-                                               mlx5e_rep_indr_setup_block_cb,
-                                               indr_priv);
+               block_cb = flow_block_cb_lookup(f->block, setup_cb, indr_priv);
                if (!block_cb)
                        return -ENOENT;
 
 }
 
 static
-int mlx5e_rep_indr_setup_tc_cb(struct net_device *netdev, void *cb_priv,
-                              enum tc_setup_type type, void *type_data)
+int mlx5e_rep_indr_setup_cb(struct net_device *netdev, void *cb_priv,
+                           enum tc_setup_type type, void *type_data)
 {
        switch (type) {
        case TC_SETUP_BLOCK:
-               return mlx5e_rep_indr_setup_tc_block(netdev, cb_priv,
-                                                     type_data);
+               return mlx5e_rep_indr_setup_block(netdev, cb_priv, type_data,
+                                                 mlx5e_rep_indr_setup_tc_cb);
        default:
                return -EOPNOTSUPP;
        }
        int err;
 
        err = __flow_indr_block_cb_register(netdev, rpriv,
-                                           mlx5e_rep_indr_setup_tc_cb,
+                                           mlx5e_rep_indr_setup_cb,
                                            rpriv);
        if (err) {
                struct mlx5e_priv *priv = netdev_priv(rpriv->netdev);
 static void mlx5e_rep_indr_unregister_block(struct mlx5e_rep_priv *rpriv,
                                            struct net_device *netdev)
 {
-       __flow_indr_block_cb_unregister(netdev, mlx5e_rep_indr_setup_tc_cb,
+       __flow_indr_block_cb_unregister(netdev, mlx5e_rep_indr_setup_cb,
                                        rpriv);
 }