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

Function mlx5_flow_meter_destroy

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

* Destroy meter rules. * * @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

1609 * 0 on success, a negative errno value otherwise and rte_errno is set.
1610 */
1611static int
1612mlx5_flow_meter_destroy(struct rte_eth_dev *dev, uint32_t meter_id,
1613 struct rte_mtr_error *error)
1614{
1615 struct mlx5_priv *priv = dev->data->dev_private;
1616 struct mlx5_flow_meter_info *fm;
1617 uint32_t mtr_idx = 0;
1618
1619 if (!priv->mtr_en)
1620 return -rte_mtr_error_set(error, ENOTSUP,
1621 RTE_MTR_ERROR_TYPE_UNSPECIFIED,
1622 NULL,
1623 "Meter is not supported");
1624 /* Meter object must exist. */
1625 fm = mlx5_flow_meter_find(priv, meter_id, &mtr_idx);
1626 if (fm == NULL)
1627 return -rte_mtr_error_set(error, ENOENT,
1628 RTE_MTR_ERROR_TYPE_MTR_ID,
1629 NULL,
1630 "Meter object id not valid.");
1631 /* Meter object must not have any owner. */
1632 if (fm->ref_cnt > 0)
1633 return -rte_mtr_error_set(error, EBUSY,
1634 RTE_MTR_ERROR_TYPE_UNSPECIFIED,
1635 NULL,
1636 "Meter object is being used.");
1637 /* Destroy the meter profile. */
1638 if (mlx5_flow_meter_params_flush(dev, fm, mtr_idx))
1639 return -rte_mtr_error_set(error, EINVAL,
1640 RTE_MTR_ERROR_TYPE_METER_PROFILE_ID,
1641 NULL,
1642 "MTR object meter profile invalid.");
1643 return 0;
1644}
1645
1646/**
1647 * Modify meter state.

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