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