diff options
author | Aviv Heller <avivh@mellanox.com> | 2016-05-09 06:02:29 -0400 |
---|---|---|
committer | Leon Romanovsky <leon@kernel.org> | 2016-08-18 11:49:57 -0400 |
commit | 3e75d4ebaae7aac5ba82fc7a6e0e6fb56dac1916 (patch) | |
tree | 40d519a9323d06e8004bf1f7a4f0ccf74bbfc134 | |
parent | aaff1bea16bb7f259a263c3ae4633d092e2da799 (diff) |
net/mlx5: Add LAG flow steering namespace
This namespace is used for LAG demux flowtable.
The idea is to position the LAG demux ft between
bypass and kernel flowtables, allowing raw-eth
traffic from both ports to be received by the PF0
IB device.
Signed-off-by: Aviv Heller <avivh@mellanox.com>
Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 11 | ||||
-rw-r--r-- | include/linux/mlx5/fs.h | 1 |
2 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c index eabd73482c86..ac414b7f366e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | |||
@@ -96,6 +96,10 @@ | |||
96 | #define OFFLOADS_NUM_PRIOS 1 | 96 | #define OFFLOADS_NUM_PRIOS 1 |
97 | #define OFFLOADS_MIN_LEVEL (ANCHOR_MIN_LEVEL + 1) | 97 | #define OFFLOADS_MIN_LEVEL (ANCHOR_MIN_LEVEL + 1) |
98 | 98 | ||
99 | #define LAG_PRIO_NUM_LEVELS 1 | ||
100 | #define LAG_NUM_PRIOS 1 | ||
101 | #define LAG_MIN_LEVEL (OFFLOADS_MIN_LEVEL + 1) | ||
102 | |||
99 | struct node_caps { | 103 | struct node_caps { |
100 | size_t arr_sz; | 104 | size_t arr_sz; |
101 | long *caps; | 105 | long *caps; |
@@ -111,12 +115,16 @@ static struct init_tree_node { | |||
111 | int num_levels; | 115 | int num_levels; |
112 | } root_fs = { | 116 | } root_fs = { |
113 | .type = FS_TYPE_NAMESPACE, | 117 | .type = FS_TYPE_NAMESPACE, |
114 | .ar_size = 6, | 118 | .ar_size = 7, |
115 | .children = (struct init_tree_node[]) { | 119 | .children = (struct init_tree_node[]) { |
116 | ADD_PRIO(0, BY_PASS_MIN_LEVEL, 0, | 120 | ADD_PRIO(0, BY_PASS_MIN_LEVEL, 0, |
117 | FS_CHAINING_CAPS, | 121 | FS_CHAINING_CAPS, |
118 | ADD_NS(ADD_MULTIPLE_PRIO(MLX5_BY_PASS_NUM_PRIOS, | 122 | ADD_NS(ADD_MULTIPLE_PRIO(MLX5_BY_PASS_NUM_PRIOS, |
119 | BY_PASS_PRIO_NUM_LEVELS))), | 123 | BY_PASS_PRIO_NUM_LEVELS))), |
124 | ADD_PRIO(0, LAG_MIN_LEVEL, 0, | ||
125 | FS_CHAINING_CAPS, | ||
126 | ADD_NS(ADD_MULTIPLE_PRIO(LAG_NUM_PRIOS, | ||
127 | LAG_PRIO_NUM_LEVELS))), | ||
120 | ADD_PRIO(0, OFFLOADS_MIN_LEVEL, 0, {}, | 128 | ADD_PRIO(0, OFFLOADS_MIN_LEVEL, 0, {}, |
121 | ADD_NS(ADD_MULTIPLE_PRIO(OFFLOADS_NUM_PRIOS, OFFLOADS_MAX_FT))), | 129 | ADD_NS(ADD_MULTIPLE_PRIO(OFFLOADS_NUM_PRIOS, OFFLOADS_MAX_FT))), |
122 | ADD_PRIO(0, ETHTOOL_MIN_LEVEL, 0, | 130 | ADD_PRIO(0, ETHTOOL_MIN_LEVEL, 0, |
@@ -1396,6 +1404,7 @@ struct mlx5_flow_namespace *mlx5_get_flow_namespace(struct mlx5_core_dev *dev, | |||
1396 | 1404 | ||
1397 | switch (type) { | 1405 | switch (type) { |
1398 | case MLX5_FLOW_NAMESPACE_BYPASS: | 1406 | case MLX5_FLOW_NAMESPACE_BYPASS: |
1407 | case MLX5_FLOW_NAMESPACE_LAG: | ||
1399 | case MLX5_FLOW_NAMESPACE_OFFLOADS: | 1408 | case MLX5_FLOW_NAMESPACE_OFFLOADS: |
1400 | case MLX5_FLOW_NAMESPACE_ETHTOOL: | 1409 | case MLX5_FLOW_NAMESPACE_ETHTOOL: |
1401 | case MLX5_FLOW_NAMESPACE_KERNEL: | 1410 | case MLX5_FLOW_NAMESPACE_KERNEL: |
diff --git a/include/linux/mlx5/fs.h b/include/linux/mlx5/fs.h index 7edfe0b8f1ec..8803212fc3aa 100644 --- a/include/linux/mlx5/fs.h +++ b/include/linux/mlx5/fs.h | |||
@@ -54,6 +54,7 @@ static inline void build_leftovers_ft_param(int *priority, | |||
54 | 54 | ||
55 | enum mlx5_flow_namespace_type { | 55 | enum mlx5_flow_namespace_type { |
56 | MLX5_FLOW_NAMESPACE_BYPASS, | 56 | MLX5_FLOW_NAMESPACE_BYPASS, |
57 | MLX5_FLOW_NAMESPACE_LAG, | ||
57 | MLX5_FLOW_NAMESPACE_OFFLOADS, | 58 | MLX5_FLOW_NAMESPACE_OFFLOADS, |
58 | MLX5_FLOW_NAMESPACE_ETHTOOL, | 59 | MLX5_FLOW_NAMESPACE_ETHTOOL, |
59 | MLX5_FLOW_NAMESPACE_KERNEL, | 60 | MLX5_FLOW_NAMESPACE_KERNEL, |