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