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/net/sch_generic.h | |
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/net/sch_generic.h')
-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 | } |