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

Function mlx5_flow_meter_enable

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

* Callback to enable flow meter. * * @param[in] dev * Pointer to Ethernet device. * @param[in] meter_id * Meter id. * @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

1703 * 0 on success, a negative errno value otherwise and rte_errno is set.
1704 */
1705static int
1706mlx5_flow_meter_enable(struct rte_eth_dev *dev,
1707 uint32_t meter_id,
1708 struct rte_mtr_error *error)
1709{
1710 struct mlx5_priv *priv = dev->data->dev_private;
1711 struct mlx5_flow_meter_info *fm;
1712 int ret;
1713
1714 if (!priv->mtr_en)
1715 return -rte_mtr_error_set(error, ENOTSUP,
1716 RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL,
1717 "Meter is not supported");
1718 /* Meter object must exist. */
1719 fm = mlx5_flow_meter_find(priv, meter_id, NULL);
1720 if (fm == NULL)
1721 return -rte_mtr_error_set(error, ENOENT,
1722 RTE_MTR_ERROR_TYPE_MTR_ID,
1723 NULL, "Meter not found.");
1724 if (fm->active_state == MLX5_FLOW_METER_ENABLE)
1725 return 0;
1726 ret = mlx5_flow_meter_modify_state(priv, fm, MLX5_FLOW_METER_ENABLE,
1727 error);
1728 if (!ret)
1729 fm->active_state = MLX5_FLOW_METER_ENABLE;
1730 return ret;
1731}
1732
1733/**
1734 * Callback to disable flow meter.

Callers

nothing calls this directly

Calls 3

rte_mtr_error_setFunction · 0.85
mlx5_flow_meter_findFunction · 0.85

Tested by

no test coverage detected