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