diff options
author | Mark Brown <broonie@linaro.org> | 2013-09-15 13:43:21 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-09-15 13:43:21 +0100 |
commit | 4ed4d44eb2192604716226a6f0edad02ab76101f (patch) | |
tree | 74c2a4041e46b906d89c5880b9cdeb5d768827c4 /include/net/sch_generic.h | |
parent | cb03293a043ab9bda850fe143062bd304a9e2376 (diff) | |
parent | 410dbb746130bc052bb3c7a337a86252874adbdf (diff) |
Merge tag 'v3.10.12' into linux-linaro-lsklsk-13.09
This is the 3.10.12 stable release
Diffstat (limited to 'include/net/sch_generic.h')
-rw-r--r-- | include/net/sch_generic.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index e7f4e21cc3e..63ed1d1dd9e 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -682,13 +682,19 @@ struct psched_ratecfg { u64 rate_bps; u32 mult; u16 overhead; + u8 linklayer; u8 shift; }; static inline u64 psched_l2t_ns(const struct psched_ratecfg *r, unsigned int len) { - return ((u64)(len + r->overhead) * r->mult) >> r->shift; + len += r->overhead; + + if (unlikely(r->linklayer == TC_LINKLAYER_ATM)) + return ((u64)(DIV_ROUND_UP(len,48)*53) * r->mult) >> r->shift; + + return ((u64)len * r->mult) >> r->shift; } extern void psched_ratecfg_precompute(struct psched_ratecfg *r, const struct tc_ratespec *conf); @@ -699,6 +705,7 @@ static inline void psched_ratecfg_getrate(struct tc_ratespec *res, memset(res, 0, sizeof(*res)); res->rate = r->rate_bps >> 3; res->overhead = r->overhead; + res->linklayer = (r->linklayer & TC_LINKLAYER_MASK); } #endif |