22 Jan, 2014
1 commit
-
Many functions have open coded a function that returns a random
number in range [0,N-1]. Under the assumption that we have a PRNG
such as taus113 with being well distributed in [0, ~0U] space,
we can implement such a function as uword t = (n*m')>>32, where
m' is a random number obtained from PRNG, n the right open interval
border and t our resulting random number, with n,m',t in u32 universe.Lets go with Joe and simply call it prandom_u32_max(), although
technically we have an right open interval endpoint, but that we
have documented. Other users can further be migrated to the new
prandom_u32_max() function later on; for now, we need to make sure
to migrate reciprocal_divide() users for the reciprocal_divide()
follow-up fixup since their function signatures are going to change.Joint work with Hannes Frederic Sowa.
Cc: Jakub Zawadzki
Cc: Eric Dumazet
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Hannes Frederic Sowa
Signed-off-by: Daniel Borkmann
Signed-off-by: David S. Miller
20 Aug, 2013
1 commit
-
Don't emit OOM warnings when k.alloc calls fail when
there there is a v.alloc immediately afterwards.Converted a kmalloc/vmalloc with memset to kzalloc/vzalloc.
Signed-off-by: Joe Perches
Acked-by: "Theodore Ts'o"
Signed-off-by: Jiri Kosina
30 Apr, 2013
1 commit
-
Use preferable function name which implies using a pseudo-random
number generator.Signed-off-by: Akinobu Mita
Cc: Stephen Hemminger
Cc: Jamal Hadi Salim
Cc: "David S. Miller"
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
04 May, 2012
1 commit
-
Use qdisc_drop() helper where possible.
Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller
02 Apr, 2012
1 commit
-
These macros contain a hidden goto, and are thus extremely error
prone and make code hard to audit.Signed-off-by: David S. Miller
10 Feb, 2012
1 commit
-
Just like skb->cb[], so that qdisc_skb_cb can be encapsulated inside
of other data structures.This is intended to be used by IPoIB so that it can remember
addressing information stored at hard_header_ops->create() time that
it can fetch when the packet gets to the transmit routine.Signed-off-by: David S. Miller
06 Jan, 2012
1 commit
-
This patch splits the red_parms structure into two components.
One holding the RED 'constant' parameters, and one containing the
variables.This permits a size reduction of GRED qdisc, and is a preliminary step
to add an optional RED unit to SFQ.SFQRED will have a single red_parms structure shared by all flows, and a
private red_vars per flow.Signed-off-by: Eric Dumazet
CC: Dave Taht
CC: Stephen Hemminger
Signed-off-by: David S. Miller
10 Dec, 2011
1 commit
-
Now RED uses a Q0.32 number to store max_p (max probability), allow
RED/GRED/CHOKE to use/report full resolution at config/dump time.Old tc binaries are non aware of new attributes, and still set/get Plog.
New tc binary set/get both Plog and max_p for backward compatibility,
they display "probability value" if they get max_p from new kernels.# tc -d qdisc show dev ...
...
qdisc red 10: parent 1:1 limit 360Kb min 30Kb max 90Kb ecn ewma 5
probability 0.09 Scell_log 15Make sure we avoid potential divides by 0 in reciprocal_value(), if
(max_th - min_th) is big.Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller
30 Nov, 2011
1 commit
-
Instead of using a custom flow dissector, use skb_flow_dissect() and
benefit from tunnelling support.Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller
09 Nov, 2011
1 commit
-
Remove the assumption that skb_get_rxhash() makes IP header and ports
linear, and use skb_header_pointer() instead in choke_match_flow()This permits __skb_get_rxhash() to use skb_header_pointer() eventually.
Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller
22 Jun, 2011
1 commit
-
There are enough instances of this:
iph->frag_off & htons(IP_MF | IP_OFFSET)
that a helper function is probably warranted.
Signed-off-by: Paul Gortmaker
Signed-off-by: David S. Miller
25 Feb, 2011
1 commit
-
Better document choke skb->cb[] use, like we did in netem and sfb
This adds a compile time check to make sure we dont exhaust skb->cb[]
space.Signed-off-by: Eric Dumazet
CC: Stephen Hemminger
CC: Patrick McHardy
Signed-off-by: David S. Miller
03 Feb, 2011
2 commits
-
Signed-off-by: David S. Miller
-
CHOKe ("CHOose and Kill" or "CHOose and Keep") is an alternative
packet scheduler based on the Random Exponential Drop (RED) algorithm.The core idea is:
For every packet arrival:
Calculate Qave
if (Qave < minth)
Queue the new packet
else
Select randomly a packet from the queue
if (both packets from same flow)
then Drop both the packets
else if (Qave > maxth)
Drop packet
else
Admit packet with proability p (same as RED)See also:
Rong Pan, Balaji Prabhakar, Konstantinos Psounis, "CHOKe: a stateless active
queue management scheme for approximating fair bandwidth allocation",
Proceeding of INFOCOM'2000, March 2000.Help from:
Eric Dumazet
Patrick McHardySigned-off-by: Stephen Hemminger
Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller