blob: 065408e16a807be59fec72ae7a9fec99b8fd383f [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/* 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
7enum {
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,
David Brazdil0f672f62019-12-10 10:32:29 +000015 TCA_STATS_BASIC_HW,
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000016 __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 */
25struct gnet_stats_basic {
26 __u64 bytes;
27 __u32 packets;
28};
29struct 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 */
39struct 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 */
49struct 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 */
62struct 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 */
75struct gnet_estimator {
76 signed char interval;
77 unsigned char ewma_log;
78};
79
80
81#endif /* __LINUX_GEN_STATS_H */