History

net/mlx5: Add new miss flow table action

Flow table supports three types of miss action: 1. Default miss action - go to default miss table according to table. 2. Go to specific table. 3. Switch domain - go to the root table of an alternative steering table domain. New table miss action was added - switch_domain. The next domain for RDMA_RX namespace is the NIC RX domain.

Maor Gottlieb committed 7 years ago

Commit f6f7d6b1 parent d83eb504 files · +25 −5Browse files

Unified · Split

4 files
  1. drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c +10 −3
  2. drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +5 −1
  3. drivers/net/ethernet/mellanox/mlx5/core/fs_core.h +1 −0
  4. include/linux/mlx5/mlx5_ifc.h +9 −1
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c+10−3
@@ -172,9 +172,14 @@ static int mlx5_cmd_create_flow_table(struct mlx5_flow_root_namespace *ns, · 171 unmodified lines
172172 case FS_FT_OP_MOD_NORMAL:
173173 if (next_ft) {
174174 MLX5_SET(create_flow_table_in, in,
175− flow_table_context.table_miss_action, 1);
175+ flow_table_context.table_miss_action,
176+ MLX5_FLOW_TABLE_MISS_ACTION_FWD);
176177 MLX5_SET(create_flow_table_in, in,
177178 flow_table_context.table_miss_id, next_ft->id);
179+ } else {
180+ MLX5_SET(create_flow_table_in, in,
181+ flow_table_context.table_miss_action,
182+ ns->def_miss_action);
178183 }
179184 break;
180185
@@ -246,13 +251,15 @@ static int mlx5_cmd_modify_flow_table(struct mlx5_flow_root_namespace *ns, · 65 unmodified lines
246251 MLX5_MODIFY_FLOW_TABLE_MISS_TABLE_ID);
247252 if (next_ft) {
248253 MLX5_SET(modify_flow_table_in, in,
249− flow_table_context.table_miss_action, 1);
254+ flow_table_context.table_miss_action,
255+ MLX5_FLOW_TABLE_MISS_ACTION_FWD);
250256 MLX5_SET(modify_flow_table_in, in,
251257 flow_table_context.table_miss_id,
252258 next_ft->id);
253259 } else {
254260 MLX5_SET(modify_flow_table_in, in,
255− flow_table_context.table_miss_action, 0);
261+ flow_table_context.table_miss_action,
262+ ns->def_miss_action);
256263 }
257264 }
258265
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c+5−1
@@ -2504,6 +2504,9 @@ static int init_rdma_rx_root_ns(struct mlx5_flow_steering *steering) · 2503 unmodified lines
25042504 if (!steering->rdma_rx_root_ns)
25052505 return -ENOMEM;
25062506
2507+ steering->rdma_rx_root_ns->def_miss_action =
2508+ MLX5_FLOW_TABLE_MISS_ACTION_SWITCH_DOMAIN;
2509+
25072510 /* Create single prio */
25082511 prio = fs_create_prio(&steering->rdma_rx_root_ns->ns, 0, 1);
25092512 if (IS_ERR(prio)) {
@@ -2748,7 +2751,8 @@ int mlx5_init_fs(struct mlx5_core_dev *dev) · 238 unmodified lines
27482751 goto err;
27492752 }
27502753
2751− if (MLX5_CAP_FLOWTABLE_RDMA_RX(dev, ft_support)) {
2754+ if (MLX5_CAP_FLOWTABLE_RDMA_RX(dev, ft_support) &&
2755+ MLX5_CAP_FLOWTABLE_RDMA_RX(dev, table_miss_action_domain)) {
27522756 err = init_rdma_rx_root_ns(steering);
27532757 if (err)
27542758 goto err;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.h+1−0
@@ -218,6 +218,7 @@ struct mlx5_flow_root_namespace { · 217 unmodified lines
218218 struct mutex chain_lock;
219219 struct list_head underlay_qpns;
220220 const struct mlx5_flow_cmds *cmds;
221+ enum mlx5_flow_table_miss_action def_miss_action;
221222 };
222223
223224 int mlx5_init_fc_stats(struct mlx5_core_dev *dev);
include/linux/mlx5/mlx5_ifc.h+9−1
@@ -370,7 +370,9 @@ struct mlx5_ifc_flow_table_prop_layout_bits { · 369 unmodified lines
370370 u8 reformat_l3_tunnel_to_l2[0x1];
371371 u8 reformat_l2_to_l3_tunnel[0x1];
372372 u8 reformat_and_modify_action[0x1];
373− u8 reserved_at_15[0xb];
373+ u8 reserved_at_15[0x2];
374+ u8 table_miss_action_domain[0x1];
375+ u8 reserved_at_18[0x8];
374376 u8 reserved_at_20[0x2];
375377 u8 log_max_ft_size[0x6];
376378 u8 log_max_modify_header_context[0x8];
@@ -1284,6 +1286,12 @@ enum mlx5_flow_destination_type { · 907 unmodified lines
12841286 MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE_NUM = 0x101,
12851287 };
12861288
1289+enum mlx5_flow_table_miss_action {
1290+ MLX5_FLOW_TABLE_MISS_ACTION_DEF,
1291+ MLX5_FLOW_TABLE_MISS_ACTION_FWD,
1292+ MLX5_FLOW_TABLE_MISS_ACTION_SWITCH_DOMAIN,
1293+};
1294+
12871295 struct mlx5_ifc_dest_format_struct_bits {
12881296 u8 destination_type[0x8];
12891297 u8 destination_id[0x18];

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t