net/mlx5: Flow steering cmd interface should get the fte when deleting
authorAviad Yehezkel <aviadye@mellanox.com>
Sun, 18 Feb 2018 13:00:54 +0000 (15:00 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Wed, 7 Mar 2018 06:20:15 +0000 (22:20 -0800)
Previously, deleting a flow steering entry only got the index.
Since the FPGA implementation of FTE's deletion might need to dig
inside the FTE itself, we would like to get the FTE's context.
Changing the interface to pass the FTE context.

Signed-off-by: Aviad Yehezkel <aviadye@mellanox.com>
Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.h
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c

index d9d7dd439bb9c69d7fd1133faa9a57a64ae19f96..645f83cac34d7d1ea28315d844cce22bb35bab6e 100644 (file)
@@ -106,7 +106,7 @@ static int mlx5_cmd_stub_update_fte(struct mlx5_core_dev *dev,
 
 static int mlx5_cmd_stub_delete_fte(struct mlx5_core_dev *dev,
                                    struct mlx5_flow_table *ft,
-                                   unsigned int index)
+                                   struct fs_fte *fte)
 {
        return 0;
 }
@@ -436,7 +436,7 @@ static int mlx5_cmd_update_fte(struct mlx5_core_dev *dev,
 
 static int mlx5_cmd_delete_fte(struct mlx5_core_dev *dev,
                               struct mlx5_flow_table *ft,
-                              unsigned int index)
+                              struct fs_fte *fte)
 {
        u32 out[MLX5_ST_SZ_DW(delete_fte_out)] = {0};
        u32 in[MLX5_ST_SZ_DW(delete_fte_in)]   = {0};
@@ -444,7 +444,7 @@ static int mlx5_cmd_delete_fte(struct mlx5_core_dev *dev,
        MLX5_SET(delete_fte_in, in, opcode, MLX5_CMD_OP_DELETE_FLOW_TABLE_ENTRY);
        MLX5_SET(delete_fte_in, in, table_type, ft->type);
        MLX5_SET(delete_fte_in, in, table_id, ft->id);
-       MLX5_SET(delete_fte_in, in, flow_index, index);
+       MLX5_SET(delete_fte_in, in, flow_index, fte->index);
        if (ft->vport) {
                MLX5_SET(delete_fte_in, in, vport_number, ft->vport);
                MLX5_SET(delete_fte_in, in, other_vport, 1);
index 81c82f48d93edaf5ad43feeee559b3e9ac48b456..6228ba7bfa1a90fc2cafed3a13128e83391c903c 100644 (file)
@@ -72,7 +72,7 @@ struct mlx5_flow_cmds {
 
        int (*delete_fte)(struct mlx5_core_dev *dev,
                          struct mlx5_flow_table *ft,
-                         unsigned int index);
+                         struct fs_fte *fte);
 
        int (*update_root_ft)(struct mlx5_core_dev *dev,
                              struct mlx5_flow_table *ft,
index 2e4a1d4e0cea2674523e42c6414e88e73c5eeaf9..4e456c292ce469d71c2d22bfdbeadb3329e45d54 100644 (file)
@@ -520,7 +520,7 @@ static void del_hw_fte(struct fs_node *node)
        dev = get_dev(&ft->node);
        root = find_root(&ft->node);
        if (node->active) {
-               err = root->cmds->delete_fte(dev, ft, fte->index);
+               err = root->cmds->delete_fte(dev, ft, fte);
                if (err)
                        mlx5_core_warn(dev,
                                       "flow steering can't delete fte in index %d of flow group id %d\n",