New upstream version 18.02
[deb_dpdk.git] / lib / librte_bitratestats / rte_bitrate.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017 Intel Corporation
3  */
4
5 #ifndef _RTE_BITRATE_H_
6 #define _RTE_BITRATE_H_
7
8 #include <stdint.h>
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 /**
15  *  Bitrate statistics data structure.
16  *  This data structure is intentionally opaque.
17  */
18 struct rte_stats_bitrates;
19
20
21 /**
22  * Allocate a bitrate statistics structure
23  *
24  * @return
25  *   - Pointer to structure on success
26  *   - NULL on error (zmalloc failure)
27  */
28 struct rte_stats_bitrates *rte_stats_bitrate_create(void);
29
30
31 /**
32  * Register bitrate statistics with the metric library.
33  *
34  * @param bitrate_data
35  *   Pointer allocated by rte_stats_create()
36  *
37  * @return
38  *   Zero on success
39  *   Negative on error
40  */
41 int rte_stats_bitrate_reg(struct rte_stats_bitrates *bitrate_data);
42
43
44 /**
45  * Calculate statistics for current time window. The period with which
46  * this function is called should be the intended sampling window width.
47  *
48  * @param bitrate_data
49  *   Bitrate statistics data pointer
50  *
51  * @param port_id
52  *   Port id to calculate statistics for
53  *
54  * @return
55  *  - Zero on success
56  *  - Negative value on error
57  */
58 int rte_stats_bitrate_calc(struct rte_stats_bitrates *bitrate_data,
59                            uint16_t port_id);
60
61 #ifdef __cplusplus
62 }
63 #endif
64
65 #endif /* _RTE_BITRATE_H_ */