1e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf#ifndef __LINUX_GEN_STATS_H
2e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf#define __LINUX_GEN_STATS_H
3e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
4e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf#include <linux/types.h>
5e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
6e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgrafenum {
7e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	TCA_STATS_UNSPEC,
8e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	TCA_STATS_BASIC,
9e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	TCA_STATS_RATE_EST,
10e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	TCA_STATS_QUEUE,
11e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	TCA_STATS_APP,
12ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger	TCA_STATS_RATE_EST64,
13e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__TCA_STATS_MAX,
14e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf};
15e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf#define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
16e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
17e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf/**
18d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * struct gnet_stats_basic - byte/packet throughput statistics
19e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @bytes: number of seen bytes
20e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @packets: number of seen packets
21e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf */
22ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_stats_basic {
23e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u64	bytes;
24e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	packets;
25f40554f68722aa37c25ae7ab99a1f997e1c59428Stephen Hemminger};
26ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_stats_basic_packed {
27f40554f68722aa37c25ae7ab99a1f997e1c59428Stephen Hemminger	__u64	bytes;
28f40554f68722aa37c25ae7ab99a1f997e1c59428Stephen Hemminger	__u32	packets;
29c40bba6922b470c0fd0c7a7b8b09584527c468e9Stephen Hemminger} __attribute__ ((packed));
30e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
31e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf/**
32d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * struct gnet_stats_rate_est - rate estimator
33e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @bps: current byte rate
34e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @pps: current packet rate
35e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf */
36ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_stats_rate_est {
37e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	bps;
38e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	pps;
39e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf};
40e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
41e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf/**
42ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger * struct gnet_stats_rate_est64 - rate estimator
43ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger * @bps: current byte rate
44ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger * @pps: current packet rate
45ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger */
46ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemmingerstruct gnet_stats_rate_est64 {
47ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger	__u64	bps;
48ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger	__u64	pps;
49ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger};
50ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger
51ecefa08c108e707c10ddd54db0c4a570157bdcb2Stephen Hemminger/**
52d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * struct gnet_stats_queue - queuing statistics
53e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @qlen: queue length
54e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @backlog: backlog size of queue
55e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @drops: number of dropped packets
56e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @requeues: number of requeues
57d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * @overlimits: number of enqueues over the limit
58e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf */
59ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_stats_queue {
60e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	qlen;
61e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	backlog;
62e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	drops;
63e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	requeues;
64e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	overlimits;
65e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf};
66e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
67e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf/**
68d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * struct gnet_estimator - rate estimator configuration
69e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @interval: sampling period
70e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @ewma_log: the log of measurement window weight
71e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf */
72ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_estimator {
73e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	signed char	interval;
74e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	unsigned char	ewma_log;
75e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf};
76e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
77e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
78e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf#endif /* __LINUX_GEN_STATS_H */
79