* [PATCH net-next v2 0/2] netem: fix compilation on 32 bit
@ 2017-11-14 19:27 Stephen Hemminger
2017-11-14 19:27 ` [PATCH net-next v2 1/2] netem: use 64 bit divide by rate Stephen Hemminger
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Stephen Hemminger @ 2017-11-14 19:27 UTC (permalink / raw)
To: stephen, jhs, xiyou.wangcong, jiri, davem; +Cc: netdev, Stephen Hemminger
A couple of places where 64 bit CPU was being assumed incorrectly.
Stephen Hemminger (2):
netem: fix 64 bit divide
netem: remove unnecessary 64 bit modulus
net/sched/sch_netem.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH net-next v2 1/2] netem: use 64 bit divide by rate
2017-11-14 19:27 [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Stephen Hemminger
@ 2017-11-14 19:27 ` Stephen Hemminger
2017-11-14 19:27 ` [PATCH net-next v2 2/2] netem: remove unnecessary 64 bit modulus Stephen Hemminger
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Stephen Hemminger @ 2017-11-14 19:27 UTC (permalink / raw)
To: stephen, jhs, xiyou.wangcong, jiri, davem; +Cc: netdev, Stephen Hemminger
Since times are now expressed in nanosecond, need to now do
true 64 bit divide. Old code would truncate rate at 32 bits.
Rename function to better express current usage.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
net/sched/sch_netem.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
index b686e755fda9..644323d6081c 100644
--- a/net/sched/sch_netem.c
+++ b/net/sched/sch_netem.c
@@ -339,10 +339,8 @@ static s64 tabledist(s64 mu, s64 sigma,
return x / NETEM_DIST_SCALE + (sigma / NETEM_DIST_SCALE) * t + mu;
}
-static u64 packet_len_2_sched_time(unsigned int len,
- struct netem_sched_data *q)
+static u64 packet_time_ns(u64 len, const struct netem_sched_data *q)
{
- u64 offset;
len += q->packet_overhead;
if (q->cell_size) {
@@ -352,9 +350,8 @@ static u64 packet_len_2_sched_time(unsigned int len,
cells++;
len = cells * (q->cell_size + q->cell_overhead);
}
- offset = (u64)len * NSEC_PER_SEC;
- do_div(offset, q->rate);
- return offset;
+
+ return div64_u64(len * NSEC_PER_SEC, q->rate);
}
static void tfifo_reset(struct Qdisc *sch)
@@ -556,7 +553,7 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch,
now = last->time_to_send;
}
- delay += packet_len_2_sched_time(qdisc_pkt_len(skb), q);
+ delay += packet_time_ns(qdisc_pkt_len(skb), q);
}
cb->time_to_send = now + delay;
--
2.11.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH net-next v2 2/2] netem: remove unnecessary 64 bit modulus
2017-11-14 19:27 [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Stephen Hemminger
2017-11-14 19:27 ` [PATCH net-next v2 1/2] netem: use 64 bit divide by rate Stephen Hemminger
@ 2017-11-14 19:27 ` Stephen Hemminger
2017-11-14 19:40 ` [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Randy Dunlap
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Stephen Hemminger @ 2017-11-14 19:27 UTC (permalink / raw)
To: stephen, jhs, xiyou.wangcong, jiri, davem; +Cc: netdev, Stephen Hemminger
Fix compilation on 32 bit platforms (where doing modulus operation
with 64 bit requires extra glibc functions) by truncation.
The jitter for table distribution is limited to a 32 bit value
because random numbers are scaled as 32 bit value.
Also fix some whitespace.
Fixes: 99803171ef04 ("netem: add uapi to express delay and jitter in nanoseconds")
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
net/sched/sch_netem.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
index 644323d6081c..dd70924cbcdf 100644
--- a/net/sched/sch_netem.c
+++ b/net/sched/sch_netem.c
@@ -312,9 +312,9 @@ static bool loss_event(struct netem_sched_data *q)
* std deviation sigma. Uses table lookup to approximate the desired
* distribution, and a uniformly-distributed pseudo-random source.
*/
-static s64 tabledist(s64 mu, s64 sigma,
+static s64 tabledist(s64 mu, s32 sigma,
struct crndstate *state,
- const struct disttable *dist)
+ const struct disttable *dist)
{
s64 x;
long t;
@@ -327,7 +327,7 @@ static s64 tabledist(s64 mu, s64 sigma,
/* default uniform distribution */
if (dist == NULL)
- return (rnd % (2*sigma)) - sigma + mu;
+ return (rnd % (2 * sigma)) - sigma + mu;
t = dist->table[rnd % dist->size];
x = (sigma % NETEM_DIST_SCALE) * t;
--
2.11.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH net-next v2 0/2] netem: fix compilation on 32 bit
2017-11-14 19:27 [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Stephen Hemminger
2017-11-14 19:27 ` [PATCH net-next v2 1/2] netem: use 64 bit divide by rate Stephen Hemminger
2017-11-14 19:27 ` [PATCH net-next v2 2/2] netem: remove unnecessary 64 bit modulus Stephen Hemminger
@ 2017-11-14 19:40 ` Randy Dunlap
2017-11-14 20:20 ` Dave Taht
2017-11-14 21:23 ` [net-next,v2,0/2] " James Hogan
2017-11-15 5:18 ` [PATCH net-next v2 0/2] " David Miller
4 siblings, 1 reply; 7+ messages in thread
From: Randy Dunlap @ 2017-11-14 19:40 UTC (permalink / raw)
To: Stephen Hemminger, jhs, xiyou.wangcong, jiri, davem
Cc: netdev, Stephen Hemminger
On 11/14/2017 11:27 AM, Stephen Hemminger wrote:
> A couple of places where 64 bit CPU was being assumed incorrectly.
>
> Stephen Hemminger (2):
> netem: fix 64 bit divide
> netem: remove unnecessary 64 bit modulus
>
> net/sched/sch_netem.c | 17 +++++++----------
> 1 file changed, 7 insertions(+), 10 deletions(-)
>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Thanks.
--
~Randy
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next v2 0/2] netem: fix compilation on 32 bit
2017-11-14 19:40 ` [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Randy Dunlap
@ 2017-11-14 20:20 ` Dave Taht
0 siblings, 0 replies; 7+ messages in thread
From: Dave Taht @ 2017-11-14 20:20 UTC (permalink / raw)
To: Randy Dunlap
Cc: Stephen Hemminger, Jamal Hadi Salim, Cong Wang,
Jiří Pírko, davem@davemloft.net,
netdev@vger.kernel.org, Stephen Hemminger
On Tue, Nov 14, 2017 at 11:40 AM, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 11/14/2017 11:27 AM, Stephen Hemminger wrote:
>> A couple of places where 64 bit CPU was being assumed incorrectly.
>>
>> Stephen Hemminger (2):
>> netem: fix 64 bit divide
>> netem: remove unnecessary 64 bit modulus
>>
>> net/sched/sch_netem.c | 17 +++++++----------
>> 1 file changed, 7 insertions(+), 10 deletions(-)
>>
>
> Acked-by: Randy Dunlap <rdunlap@infradead.org>
Acked-by: Dave Taht <dave.taht@gmail.com>
Thx.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [net-next,v2,0/2] netem: fix compilation on 32 bit
2017-11-14 19:27 [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Stephen Hemminger
` (2 preceding siblings ...)
2017-11-14 19:40 ` [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Randy Dunlap
@ 2017-11-14 21:23 ` James Hogan
2017-11-15 5:18 ` [PATCH net-next v2 0/2] " David Miller
4 siblings, 0 replies; 7+ messages in thread
From: James Hogan @ 2017-11-14 21:23 UTC (permalink / raw)
To: Stephen Hemminger
Cc: jhs, xiyou.wangcong, jiri, davem, netdev, Stephen Hemminger
[-- Attachment #1: Type: text/plain, Size: 551 bytes --]
On Tue, Nov 14, 2017 at 11:27:00AM -0800, Stephen Hemminger wrote:
> A couple of places where 64 bit CPU was being assumed incorrectly.
>
> Stephen Hemminger (2):
> netem: fix 64 bit divide
> netem: remove unnecessary 64 bit modulus
>
> net/sched/sch_netem.c | 17 +++++++----------
> 1 file changed, 7 insertions(+), 10 deletions(-)
> Acked-by: Randy Dunlap <rdunlap@infradead.org>
> Acked-by: Dave Taht <dave.taht@gmail.com>
These appears to fix the MIPS build, so
Tested-by: James Hogan <jhogan@kernel.org>
Thanks
James
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH net-next v2 0/2] netem: fix compilation on 32 bit
2017-11-14 19:27 [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Stephen Hemminger
` (3 preceding siblings ...)
2017-11-14 21:23 ` [net-next,v2,0/2] " James Hogan
@ 2017-11-15 5:18 ` David Miller
4 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2017-11-15 5:18 UTC (permalink / raw)
To: stephen; +Cc: jhs, xiyou.wangcong, jiri, netdev, sthemmin
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 14 Nov 2017 11:27:00 -0800
> A couple of places where 64 bit CPU was being assumed incorrectly.
Series applied, thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-11-15 5:18 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-14 19:27 [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Stephen Hemminger
2017-11-14 19:27 ` [PATCH net-next v2 1/2] netem: use 64 bit divide by rate Stephen Hemminger
2017-11-14 19:27 ` [PATCH net-next v2 2/2] netem: remove unnecessary 64 bit modulus Stephen Hemminger
2017-11-14 19:40 ` [PATCH net-next v2 0/2] netem: fix compilation on 32 bit Randy Dunlap
2017-11-14 20:20 ` Dave Taht
2017-11-14 21:23 ` [net-next,v2,0/2] " James Hogan
2017-11-15 5:18 ` [PATCH net-next v2 0/2] " David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).