aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAviv Heller <avivh@mellanox.com>2016-05-09 06:02:29 -0400
committerLeon Romanovsky <leon@kernel.org>2016-08-18 11:49:57 -0400
commit3e75d4ebaae7aac5ba82fc7a6e0e6fb56dac1916 (patch)
tree40d519a9323d06e8004bf1f7a4f0ccf74bbfc134
parentaaff1bea16bb7f259a263c3ae4633d092e2da799 (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.c11
-rw-r--r--include/linux/mlx5/fs.h1
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
99struct node_caps { 103struct 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
55enum mlx5_flow_namespace_type { 55enum 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,