gen_stats.h revision e084501669a4e4931c9d648351ecd7d595b81b79
1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef __LINUX_GEN_STATS_H
2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define __LINUX_GEN_STATS_H
3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h>
5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengenum {
7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	TCA_STATS_UNSPEC,
8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	TCA_STATS_BASIC,
9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	TCA_STATS_RATE_EST,
10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	TCA_STATS_QUEUE,
11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	TCA_STATS_APP,
12e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris	TCA_STATS_RATE_EST64,
13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__TCA_STATS_MAX,
14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/**
18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * struct gnet_stats_basic - byte/packet throughput statistics
19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @bytes: number of seen bytes
20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @packets: number of seen packets
21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct gnet_stats_basic {
23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u64	bytes;
24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	packets;
25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
26224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct gnet_stats_basic_packed {
27224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u64	bytes;
28224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	packets;
29224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng} __attribute__ ((packed));
30224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
31224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/**
32224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * struct gnet_stats_rate_est - rate estimator
33224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @bps: current byte rate
34224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @pps: current packet rate
35224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
36224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct gnet_stats_rate_est {
37224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	bps;
38224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	pps;
39224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/**
42e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * struct gnet_stats_rate_est64 - rate estimator
43e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * @bps: current byte rate
44e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * @pps: current packet rate
45e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */
46e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferrisstruct gnet_stats_rate_est64 {
47e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris	__u64	bps;
48e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris	__u64	pps;
49e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris};
50e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris
51e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/**
52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * struct gnet_stats_queue - queuing statistics
53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @qlen: queue length
54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @backlog: backlog size of queue
55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @drops: number of dropped packets
56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @requeues: number of requeues
57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @overlimits: number of enqueues over the limit
58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct gnet_stats_queue {
60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	qlen;
61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	backlog;
62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	drops;
63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	requeues;
64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	__u32	overlimits;
65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/**
68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * struct gnet_estimator - rate estimator configuration
69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @interval: sampling period
70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @ewma_log: the log of measurement window weight
71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */
72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct gnet_estimator {
73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	signed char	interval;
74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng	unsigned char	ewma_log;
75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng};
76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng
78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* __LINUX_GEN_STATS_H */
79