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,
12e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__TCA_STATS_MAX,
13e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf};
14e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf#define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
15e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
16e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf/**
17d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * struct gnet_stats_basic - byte/packet throughput statistics
18e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @bytes: number of seen bytes
19e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @packets: number of seen packets
20e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf */
21ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_stats_basic {
22e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u64	bytes;
23e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	packets;
24f40554f68722aa37c25ae7ab99a1f997e1c59428Stephen Hemminger};
25ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_stats_basic_packed {
26f40554f68722aa37c25ae7ab99a1f997e1c59428Stephen Hemminger	__u64	bytes;
27f40554f68722aa37c25ae7ab99a1f997e1c59428Stephen Hemminger	__u32	packets;
28c40bba6922b470c0fd0c7a7b8b09584527c468e9Stephen Hemminger} __attribute__ ((packed));
29e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
30e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf/**
31d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * struct gnet_stats_rate_est - rate estimator
32e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @bps: current byte rate
33e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @pps: current packet rate
34e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf */
35ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_stats_rate_est {
36e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	bps;
37e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	pps;
38e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf};
39e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
40e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf/**
41d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * struct gnet_stats_queue - queuing statistics
42e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @qlen: queue length
43e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @backlog: backlog size of queue
44e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @drops: number of dropped packets
45e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @requeues: number of requeues
46d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * @overlimits: number of enqueues over the limit
47e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf */
48ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_stats_queue {
49e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	qlen;
50e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	backlog;
51e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	drops;
52e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	requeues;
53e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	__u32	overlimits;
54e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf};
55e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
56e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf/**
57d639d9d18b2ef5a43cda5424830005333acfb288osdl.net!shemminger * struct gnet_estimator - rate estimator configuration
58e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @interval: sampling period
59e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf * @ewma_log: the log of measurement window weight
60e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf */
61ab322673298bd0b8927cdd9d11f3d36af5941b93Stephen Hemmingerstruct gnet_estimator {
62e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	signed char	interval;
63e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf	unsigned char	ewma_log;
64e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf};
65e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
66e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf
67e5879dc603ca2e9f27ca6d754fdf5e20f8072344ch[shemminger]!tgraf#endif /* __LINUX_GEN_STATS_H */
68