net/mlx5: Separate FDB namespace
This patch doesn't add an additional namespaces, but just separates the naming to be used by each FDB user, bypass and kernel. Downstream patches will actually split this up and allow to have more than single priority for the bypass users. Signed-off-by: Maor Gottlieb <maorg@nvidia.com> Reviewed-by: Mark Bloch <mbloch@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Acked-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
Родитель
fa55b7dcdc
Коммит
22c3f2f56b
|
@ -1508,7 +1508,7 @@ _get_flow_table(struct mlx5_ib_dev *dev,
|
|||
!esw_encap)
|
||||
flags |= MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT;
|
||||
break;
|
||||
case MLX5_FLOW_NAMESPACE_FDB:
|
||||
case MLX5_FLOW_NAMESPACE_FDB_BYPASS:
|
||||
max_table_size = BIT(
|
||||
MLX5_CAP_ESW_FLOWTABLE_FDB(dev->mdev, log_max_ft_size));
|
||||
if (MLX5_CAP_ESW_FLOWTABLE_FDB(dev->mdev, decap) && esw_encap)
|
||||
|
@ -1546,7 +1546,7 @@ _get_flow_table(struct mlx5_ib_dev *dev,
|
|||
case MLX5_FLOW_NAMESPACE_EGRESS:
|
||||
prio = &dev->flow_db->egress_prios[priority];
|
||||
break;
|
||||
case MLX5_FLOW_NAMESPACE_FDB:
|
||||
case MLX5_FLOW_NAMESPACE_FDB_BYPASS:
|
||||
prio = &dev->flow_db->fdb;
|
||||
break;
|
||||
case MLX5_FLOW_NAMESPACE_RDMA_RX:
|
||||
|
@ -1937,7 +1937,7 @@ mlx5_ib_ft_type_to_namespace(enum mlx5_ib_uapi_flow_table_type table_type,
|
|||
*namespace = MLX5_FLOW_NAMESPACE_EGRESS;
|
||||
break;
|
||||
case MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB:
|
||||
*namespace = MLX5_FLOW_NAMESPACE_FDB;
|
||||
*namespace = MLX5_FLOW_NAMESPACE_FDB_BYPASS;
|
||||
break;
|
||||
case MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_RX:
|
||||
*namespace = MLX5_FLOW_NAMESPACE_RDMA_RX;
|
||||
|
@ -2029,8 +2029,8 @@ static int get_dests(struct uverbs_attr_bundle *attrs,
|
|||
}
|
||||
|
||||
/* Allow only DEVX object, drop as dest for FDB */
|
||||
if (fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_FDB && !(dest_devx ||
|
||||
(*flags & MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DROP)))
|
||||
if (fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_FDB_BYPASS &&
|
||||
!(dest_devx || (*flags & MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DROP)))
|
||||
return -EINVAL;
|
||||
|
||||
/* Allow only DEVX object or QP as dest when inserting to RDMA_RX */
|
||||
|
@ -2050,7 +2050,7 @@ static int get_dests(struct uverbs_attr_bundle *attrs,
|
|||
if (!is_flow_dest(devx_obj, dest_id, dest_type))
|
||||
return -EINVAL;
|
||||
/* Allow only flow table as dest when inserting to FDB or RDMA_RX */
|
||||
if ((fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_FDB ||
|
||||
if ((fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_FDB_BYPASS ||
|
||||
fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_RDMA_RX) &&
|
||||
*dest_type != MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE)
|
||||
return -EINVAL;
|
||||
|
@ -2320,7 +2320,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_FLOW_MATCHER_CREATE)(
|
|||
if (err)
|
||||
goto end;
|
||||
|
||||
if (obj->ns_type == MLX5_FLOW_NAMESPACE_FDB &&
|
||||
if (obj->ns_type == MLX5_FLOW_NAMESPACE_FDB_BYPASS &&
|
||||
mlx5_eswitch_mode(dev->mdev) != MLX5_ESWITCH_OFFLOADS) {
|
||||
err = -EINVAL;
|
||||
goto end;
|
||||
|
|
|
@ -788,7 +788,8 @@ static int mlx5_cmd_packet_reformat_alloc(struct mlx5_flow_root_namespace *ns,
|
|||
int err;
|
||||
u32 *in;
|
||||
|
||||
if (namespace == MLX5_FLOW_NAMESPACE_FDB)
|
||||
if (namespace == MLX5_FLOW_NAMESPACE_FDB ||
|
||||
namespace == MLX5_FLOW_NAMESPACE_FDB_BYPASS)
|
||||
max_encap_size = MLX5_CAP_ESW(dev, max_encap_header_size);
|
||||
else
|
||||
max_encap_size = MLX5_CAP_FLOWTABLE(dev, max_encap_header_size);
|
||||
|
@ -860,6 +861,7 @@ static int mlx5_cmd_modify_header_alloc(struct mlx5_flow_root_namespace *ns,
|
|||
|
||||
switch (namespace) {
|
||||
case MLX5_FLOW_NAMESPACE_FDB:
|
||||
case MLX5_FLOW_NAMESPACE_FDB_BYPASS:
|
||||
max_actions = MLX5_CAP_ESW_FLOWTABLE_FDB(dev, max_modify_header_actions);
|
||||
table_type = FS_FT_FDB;
|
||||
break;
|
||||
|
|
|
@ -2220,6 +2220,7 @@ struct mlx5_flow_namespace *mlx5_get_flow_namespace(struct mlx5_core_dev *dev,
|
|||
|
||||
switch (type) {
|
||||
case MLX5_FLOW_NAMESPACE_FDB:
|
||||
case MLX5_FLOW_NAMESPACE_FDB_BYPASS:
|
||||
if (steering->fdb_root_ns)
|
||||
return &steering->fdb_root_ns->ns;
|
||||
return NULL;
|
||||
|
|
|
@ -73,6 +73,7 @@ enum mlx5_flow_namespace_type {
|
|||
MLX5_FLOW_NAMESPACE_KERNEL,
|
||||
MLX5_FLOW_NAMESPACE_LEFTOVERS,
|
||||
MLX5_FLOW_NAMESPACE_ANCHOR,
|
||||
MLX5_FLOW_NAMESPACE_FDB_BYPASS,
|
||||
MLX5_FLOW_NAMESPACE_FDB,
|
||||
MLX5_FLOW_NAMESPACE_ESW_EGRESS,
|
||||
MLX5_FLOW_NAMESPACE_ESW_INGRESS,
|
||||
|
|
Загрузка…
Ссылка в новой задаче