diff options
| author | Eric Dumazet <edumazet@google.com> | 2013-06-06 11:43:22 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-06-11 05:51:03 -0400 |
| commit | 45203a3b380cee28f570475c0d28c169f908c209 (patch) | |
| tree | 9d9b00da9accbc0ea01c91c206cb86a2f9dd7609 /include/uapi/linux | |
| parent | b41abb42bf62a85a32c41dab873220598a6ee266 (diff) | |
net_sched: add 64bit rate estimators
struct gnet_stats_rate_est contains u32 fields, so the bytes per second
field can wrap at 34360Mbit.
Add a new gnet_stats_rate_est64 structure to get 64bit bps/pps fields,
and switch the kernel to use this structure natively.
This structure is dumped to user space as a new attribute :
TCA_STATS_RATE_EST64
Old tc command will now display the capped bps (to 34360Mbit), instead
of wrapped values, and updated tc command will display correct
information.
Old tc command output, after patch :
eric:~# tc -s -d qd sh dev lo
qdisc pfifo 8001: root refcnt 2 limit 1000p
Sent 80868245400 bytes 1978837 pkt (dropped 0, overlimits 0 requeues 0)
rate 34360Mbit 189696pps backlog 0b 0p requeues 0
This patch carefully reorganizes "struct Qdisc" layout to get optimal
performance on SMP.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi/linux')
| -rw-r--r-- | include/uapi/linux/gen_stats.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/uapi/linux/gen_stats.h b/include/uapi/linux/gen_stats.h index 552c8a0a12d1..6487317ea619 100644 --- a/include/uapi/linux/gen_stats.h +++ b/include/uapi/linux/gen_stats.h | |||
| @@ -9,6 +9,7 @@ enum { | |||
| 9 | TCA_STATS_RATE_EST, | 9 | TCA_STATS_RATE_EST, |
| 10 | TCA_STATS_QUEUE, | 10 | TCA_STATS_QUEUE, |
| 11 | TCA_STATS_APP, | 11 | TCA_STATS_APP, |
| 12 | TCA_STATS_RATE_EST64, | ||
| 12 | __TCA_STATS_MAX, | 13 | __TCA_STATS_MAX, |
| 13 | }; | 14 | }; |
| 14 | #define TCA_STATS_MAX (__TCA_STATS_MAX - 1) | 15 | #define TCA_STATS_MAX (__TCA_STATS_MAX - 1) |
| @@ -38,6 +39,16 @@ struct gnet_stats_rate_est { | |||
| 38 | }; | 39 | }; |
| 39 | 40 | ||
| 40 | /** | 41 | /** |
| 42 | * struct gnet_stats_rate_est64 - rate estimator | ||
| 43 | * @bps: current byte rate | ||
| 44 | * @pps: current packet rate | ||
| 45 | */ | ||
| 46 | struct gnet_stats_rate_est64 { | ||
| 47 | __u64 bps; | ||
| 48 | __u64 pps; | ||
| 49 | }; | ||
| 50 | |||
| 51 | /** | ||
| 41 | * struct gnet_stats_queue - queuing statistics | 52 | * struct gnet_stats_queue - queuing statistics |
| 42 | * @qlen: queue length | 53 | * @qlen: queue length |
| 43 | * @backlog: backlog size of queue | 54 | * @backlog: backlog size of queue |
