Commit 3e99df87 authored by Shahar Klein's avatar Shahar Klein Committed by Saeed Mahameed

net/mlx5: Add source e-switch owner

The source e-switch owner allows a vport on one e-switch port be associated
with a rule defined on the second port e-switch.

The role of the source eswitch owner valid bit in the flow group is to
allow the firmware fail driver attempts to wild card the source eswitch
match field. If this bit is not set, the firmware ignores the source
eswitch owner field totally.
Signed-off-by: default avatarShahar Klein <shahark@mellanox.com>
Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: default avatarRoi Dayan <roid@mellanox.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent 56e858df
...@@ -1372,6 +1372,8 @@ static int create_auto_flow_group(struct mlx5_flow_table *ft, ...@@ -1372,6 +1372,8 @@ static int create_auto_flow_group(struct mlx5_flow_table *ft,
struct mlx5_core_dev *dev = get_dev(&ft->node); struct mlx5_core_dev *dev = get_dev(&ft->node);
int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in); int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);
void *match_criteria_addr; void *match_criteria_addr;
u8 src_esw_owner_mask_on;
void *misc;
int err; int err;
u32 *in; u32 *in;
...@@ -1384,6 +1386,14 @@ static int create_auto_flow_group(struct mlx5_flow_table *ft, ...@@ -1384,6 +1386,14 @@ static int create_auto_flow_group(struct mlx5_flow_table *ft,
MLX5_SET(create_flow_group_in, in, start_flow_index, fg->start_index); MLX5_SET(create_flow_group_in, in, start_flow_index, fg->start_index);
MLX5_SET(create_flow_group_in, in, end_flow_index, fg->start_index + MLX5_SET(create_flow_group_in, in, end_flow_index, fg->start_index +
fg->max_ftes - 1); fg->max_ftes - 1);
misc = MLX5_ADDR_OF(fte_match_param, fg->mask.match_criteria,
misc_parameters);
src_esw_owner_mask_on = !!MLX5_GET(fte_match_set_misc, misc,
source_eswitch_owner_vhca_id);
MLX5_SET(create_flow_group_in, in,
source_eswitch_owner_vhca_id_valid, src_esw_owner_mask_on);
match_criteria_addr = MLX5_ADDR_OF(create_flow_group_in, match_criteria_addr = MLX5_ADDR_OF(create_flow_group_in,
in, match_criteria); in, match_criteria);
memcpy(match_criteria_addr, fg->mask.match_criteria, memcpy(match_criteria_addr, fg->mask.match_criteria,
......
...@@ -412,7 +412,7 @@ struct mlx5_ifc_fte_match_set_misc_bits { ...@@ -412,7 +412,7 @@ struct mlx5_ifc_fte_match_set_misc_bits {
u8 reserved_at_0[0x8]; u8 reserved_at_0[0x8];
u8 source_sqn[0x18]; u8 source_sqn[0x18];
u8 reserved_at_20[0x10]; u8 source_eswitch_owner_vhca_id[0x10];
u8 source_port[0x10]; u8 source_port[0x10];
u8 outer_second_prio[0x3]; u8 outer_second_prio[0x3];
...@@ -6995,7 +6995,9 @@ struct mlx5_ifc_create_flow_group_in_bits { ...@@ -6995,7 +6995,9 @@ struct mlx5_ifc_create_flow_group_in_bits {
u8 reserved_at_a0[0x8]; u8 reserved_at_a0[0x8];
u8 table_id[0x18]; u8 table_id[0x18];
u8 reserved_at_c0[0x20]; u8 source_eswitch_owner_vhca_id_valid[0x1];
u8 reserved_at_c1[0x1f];
u8 start_flow_index[0x20]; u8 start_flow_index[0x20];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment