net/mlx5: Use fte status to decide on firmware command
authorMark Bloch <markb@mellanox.com>
Sun, 11 Sep 2016 12:54:50 +0000 (12:54 +0000)
committerLeon Romanovsky <leon@kernel.org>
Sun, 30 Oct 2016 13:43:15 +0000 (15:43 +0200)
An fte status becomes FS_FTE_STATUS_EXISTING only after it was
created in HW. We can use this in order to simplify the logic on
what firmware command to use. If the status isn't FS_FTE_STATUS_EXISTING
we need to create the fte, otherwise we need only to update it.

Signed-off-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c

index a07ff30..e2bab9d 100644 (file)
@@ -946,7 +946,7 @@ static struct mlx5_flow_rule *add_rule_fte(struct fs_fte *fte,
                        BIT(MLX5_SET_FTE_MODIFY_ENABLE_MASK_DESTINATION_LIST);
        }
 
-       if (fte->dests_size == 1 || !dest)
+       if (!(fte->status & FS_FTE_STATUS_EXISTING))
                err = mlx5_cmd_create_fte(get_dev(&ft->node),
                                          ft, fg->id, fte);
        else