MCPcopy Create free account
hub / github.com/F-Stack/f-stack / mlx5_flow_meter_validate

Function mlx5_flow_meter_validate

dpdk/drivers/net/mlx5/mlx5_flow_meter.c:1184–1217  ·  view source on GitHub ↗

* Check meter validation. * * @param[in] priv * Pointer to mlx5 private data structure. * @param[in] meter_id * Meter id. * @param[in] params * Pointer to rte meter parameters. * @param[out] error * Pointer to rte meter error structure. * * @return * 0 on success, a negative errno value otherwise and rte_errno is set. */

Source from the content-addressed store, hash-verified

1182 * 0 on success, a negative errno value otherwise and rte_errno is set.
1183 */
1184static int
1185mlx5_flow_meter_validate(struct mlx5_priv *priv, uint32_t meter_id,
1186 struct rte_mtr_params *params,
1187 struct rte_mtr_error *error)
1188{
1189 /* Meter must use global drop action. */
1190 if (!priv->sh->dr_drop_action)
1191 return -rte_mtr_error_set(error, ENOTSUP,
1192 RTE_MTR_ERROR_TYPE_MTR_PARAMS,
1193 NULL,
1194 "No drop action ready for meter.");
1195 /* Meter params must not be NULL. */
1196 if (params == NULL)
1197 return -rte_mtr_error_set(error, EINVAL,
1198 RTE_MTR_ERROR_TYPE_MTR_PARAMS,
1199 NULL, "Meter object params null.");
1200 /* Previous meter color is not supported. */
1201 if (params->use_prev_mtr_color && !priv->sh->meter_aso_en)
1202 return -rte_mtr_error_set(error, ENOTSUP,
1203 RTE_MTR_ERROR_TYPE_MTR_PARAMS,
1204 NULL,
1205 "Previous meter color "
1206 "not supported.");
1207 if (params->meter_policy_id == MLX5_INVALID_POLICY_ID)
1208 return -rte_mtr_error_set(error, ENOENT,
1209 RTE_MTR_ERROR_TYPE_METER_POLICY_ID,
1210 NULL, "Meter policy id not valid.");
1211 /* Validate meter id. */
1212 if (mlx5_flow_meter_find(priv, meter_id, NULL))
1213 return -rte_mtr_error_set(error, EEXIST,
1214 RTE_MTR_ERROR_TYPE_MTR_ID, NULL,
1215 "Meter object already exists.");
1216 return 0;
1217}
1218
1219/**
1220 * Modify the flow meter action.

Callers 1

mlx5_flow_meter_createFunction · 0.85

Calls 2

rte_mtr_error_setFunction · 0.85
mlx5_flow_meter_findFunction · 0.85

Tested by

no test coverage detected