11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __LINUX_GEN_STATS_H 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __LINUX_GEN_STATS_H 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h> 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsenum { 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds TCA_STATS_UNSPEC, 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds TCA_STATS_BASIC, 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds TCA_STATS_RATE_EST, 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds TCA_STATS_QUEUE, 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds TCA_STATS_APP, 1245203a3b380cee28f570475c0d28c169f908c209Eric Dumazet TCA_STATS_RATE_EST64, 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __TCA_STATS_MAX, 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TCA_STATS_MAX (__TCA_STATS_MAX - 1) 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/** 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * struct gnet_stats_basic - byte/packet throughput statistics 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @bytes: number of seen bytes 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @packets: number of seen packets 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 22d94d9fee9fa4e66a0b91640a694b8b10177075b3Eric Dumazetstruct gnet_stats_basic { 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u64 bytes; 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 packets; 25c1a8f1f1c8e01eab5862c8db39b49ace814e6c66Eric Dumazet}; 26d94d9fee9fa4e66a0b91640a694b8b10177075b3Eric Dumazetstruct gnet_stats_basic_packed { 27c1a8f1f1c8e01eab5862c8db39b49ace814e6c66Eric Dumazet __u64 bytes; 28c1a8f1f1c8e01eab5862c8db39b49ace814e6c66Eric Dumazet __u32 packets; 295e140dfc1fe87eae27846f193086724806b33c7dEric Dumazet} __attribute__ ((packed)); 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/** 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * struct gnet_stats_rate_est - rate estimator 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @bps: current byte rate 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @pps: current packet rate 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 36d94d9fee9fa4e66a0b91640a694b8b10177075b3Eric Dumazetstruct gnet_stats_rate_est { 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 bps; 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 pps; 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/** 4245203a3b380cee28f570475c0d28c169f908c209Eric Dumazet * struct gnet_stats_rate_est64 - rate estimator 4345203a3b380cee28f570475c0d28c169f908c209Eric Dumazet * @bps: current byte rate 4445203a3b380cee28f570475c0d28c169f908c209Eric Dumazet * @pps: current packet rate 4545203a3b380cee28f570475c0d28c169f908c209Eric Dumazet */ 4645203a3b380cee28f570475c0d28c169f908c209Eric Dumazetstruct gnet_stats_rate_est64 { 4745203a3b380cee28f570475c0d28c169f908c209Eric Dumazet __u64 bps; 4845203a3b380cee28f570475c0d28c169f908c209Eric Dumazet __u64 pps; 4945203a3b380cee28f570475c0d28c169f908c209Eric Dumazet}; 5045203a3b380cee28f570475c0d28c169f908c209Eric Dumazet 5145203a3b380cee28f570475c0d28c169f908c209Eric Dumazet/** 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * struct gnet_stats_queue - queuing statistics 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @qlen: queue length 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @backlog: backlog size of queue 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @drops: number of dropped packets 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @requeues: number of requeues 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @overlimits: number of enqueues over the limit 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 59d94d9fee9fa4e66a0b91640a694b8b10177075b3Eric Dumazetstruct gnet_stats_queue { 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 qlen; 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 backlog; 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 drops; 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 requeues; 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __u32 overlimits; 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/** 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * struct gnet_estimator - rate estimator configuration 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @interval: sampling period 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * @ewma_log: the log of measurement window weight 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 72d94d9fee9fa4e66a0b91640a694b8b10177075b3Eric Dumazetstruct gnet_estimator { 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds signed char interval; 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char ewma_log; 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __LINUX_GEN_STATS_H */ 79