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