1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2020 Mellanox Technologies, Ltd
5 #ifndef RTE_PMD_MLX5_FLOW_OS_H_
6 #define RTE_PMD_MLX5_FLOW_OS_H_
10 #ifdef HAVE_IBV_FLOW_DV_SUPPORT
11 extern const struct mlx5_flow_driver_ops mlx5_flow_dv_drv_ops;
15 * Get OS enforced flow type. MLX5_FLOW_TYPE_MAX means "non enforced type".
18 * Flow type (MLX5_FLOW_TYPE_MAX)
20 static inline enum mlx5_flow_drv_type
21 mlx5_flow_os_get_type(void)
23 return MLX5_FLOW_TYPE_MAX;
27 * Check if item type is supported.
33 * True is this item type is supported, false if not supported.
36 mlx5_flow_os_item_supported(int item __rte_unused)
42 * Check if action type is supported.
45 * Action type to check.
48 * True is this action type is supported, false if not supported.
51 mlx5_flow_os_action_supported(int action __rte_unused)
60 * Pointer to match mask structure.
61 * @param[in] match_value
62 * Pointer to match value structure.
63 * @param[in] num_actions
64 * Number of actions in flow rule.
66 * Pointer to array of flow rule actions.
68 * Pointer to a valid flow rule object on success, NULL otherwise.
71 * 0 on success, or -1 on failure and errno is set.
74 mlx5_flow_os_create_flow(void *matcher, void *match_value,
75 size_t num_actions, void *actions[], void **flow)
77 *flow = mlx5_glue->dv_create_flow(matcher, match_value,
78 num_actions, actions);
79 return (*flow) ? 0 : -1;
85 * @param[in] drv_flow_ptr
86 * Pointer to flow rule object.
89 * 0 on success, or the value of errno on failure.
92 mlx5_flow_os_destroy_flow(void *drv_flow_ptr)
94 return mlx5_glue->dv_destroy_flow(drv_flow_ptr);
101 * Pointer to relevant domain.
102 * @param[in] table_id
105 * Pointer to a valid flow table object on success, NULL otherwise.
108 * 0 on success, or -1 on failure and errno is set.
111 mlx5_flow_os_create_flow_tbl(void *domain, uint32_t table_id, void **table)
113 *table = mlx5_glue->dr_create_flow_tbl(domain, table_id);
114 return (*table) ? 0 : -1;
118 * Destroy flow table.
121 * Pointer to table object to destroy.
124 * 0 on success, or the value of errno on failure.
127 mlx5_flow_os_destroy_flow_tbl(void *table)
129 return mlx5_glue->dr_destroy_flow_tbl(table);
133 * Create flow matcher in a flow table.
136 * Pointer to relevant device context.
138 * Pointer to relevant attributes.
140 * Pointer to table object.
141 * @param[out] matcher
142 * Pointer to a valid flow matcher object on success, NULL otherwise.
145 * 0 on success, or -1 on failure and errno is set.
148 mlx5_flow_os_create_flow_matcher(void *ctx, void *attr, void *table,
151 *matcher = mlx5_glue->dv_create_flow_matcher(ctx, attr, table);
152 return (*matcher) ? 0 : -1;
156 * Destroy flow matcher.
159 * Pointer to matcher object to destroy.
162 * 0 on success, or the value of errno on failure.
165 mlx5_flow_os_destroy_flow_matcher(void *matcher)
167 return mlx5_glue->dv_destroy_flow_matcher(matcher);
170 #endif /* RTE_PMD_MLX5_FLOW_OS_H_ */