diff options
| author | Eric Dumazet <edumazet@google.com> | 2013-09-19 12:10:03 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-09-20 14:41:02 -0400 |
| commit | 3e1e3aae1f5d4e8e5edb7e332f6e265597cc5b0a (patch) | |
| tree | 26737c73709aa3a29ad1c435e6bb7cd83126f4c6 /include | |
| parent | 118a7b0ede580f3c5553028301001d46f8eede99 (diff) | |
net_sched: add u64 rate to psched_ratecfg_precompute()
Add an extra u64 rate parameter to psched_ratecfg_precompute()
so that some qdisc can opt-in for 64bit rates in the future,
to overcome the ~34 Gbits limit.
psched_ratecfg_getrate() reports a legacy structure to
tc utility, so if actual rate is above the 32bit rate field,
cap it to the 34Gbit limit.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/sch_generic.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index f4eb365f7dcd..d0a6321c302e 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
| @@ -702,13 +702,20 @@ static inline u64 psched_l2t_ns(const struct psched_ratecfg *r, | |||
| 702 | } | 702 | } |
| 703 | 703 | ||
| 704 | void psched_ratecfg_precompute(struct psched_ratecfg *r, | 704 | void psched_ratecfg_precompute(struct psched_ratecfg *r, |
| 705 | const struct tc_ratespec *conf); | 705 | const struct tc_ratespec *conf, |
| 706 | u64 rate64); | ||
| 706 | 707 | ||
| 707 | static inline void psched_ratecfg_getrate(struct tc_ratespec *res, | 708 | static inline void psched_ratecfg_getrate(struct tc_ratespec *res, |
| 708 | const struct psched_ratecfg *r) | 709 | const struct psched_ratecfg *r) |
| 709 | { | 710 | { |
| 710 | memset(res, 0, sizeof(*res)); | 711 | memset(res, 0, sizeof(*res)); |
| 711 | res->rate = r->rate_bytes_ps; | 712 | |
| 713 | /* legacy struct tc_ratespec has a 32bit @rate field | ||
| 714 | * Qdisc using 64bit rate should add new attributes | ||
| 715 | * in order to maintain compatibility. | ||
| 716 | */ | ||
| 717 | res->rate = min_t(u64, r->rate_bytes_ps, ~0U); | ||
| 718 | |||
| 712 | res->overhead = r->overhead; | 719 | res->overhead = r->overhead; |
| 713 | res->linklayer = (r->linklayer & TC_LINKLAYER_MASK); | 720 | res->linklayer = (r->linklayer & TC_LINKLAYER_MASK); |
| 714 | } | 721 | } |
