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