Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
This commit is contained in:
commit
f6e63cfb5c
|
@ -286,6 +286,8 @@ static inline void check_tnode(const struct tnode *tn)
|
|||
|
||||
static int halve_threshold = 25;
|
||||
static int inflate_threshold = 50;
|
||||
static int halve_threshold_root = 15;
|
||||
static int inflate_threshold_root = 25;
|
||||
|
||||
|
||||
static void __alias_free_mem(struct rcu_head *head)
|
||||
|
@ -449,6 +451,8 @@ static struct node *resize(struct trie *t, struct tnode *tn)
|
|||
int i;
|
||||
int err = 0;
|
||||
struct tnode *old_tn;
|
||||
int inflate_threshold_use;
|
||||
int halve_threshold_use;
|
||||
|
||||
if (!tn)
|
||||
return NULL;
|
||||
|
@ -541,10 +545,17 @@ static struct node *resize(struct trie *t, struct tnode *tn)
|
|||
|
||||
check_tnode(tn);
|
||||
|
||||
/* Keep root node larger */
|
||||
|
||||
if(!tn->parent)
|
||||
inflate_threshold_use = inflate_threshold_root;
|
||||
else
|
||||
inflate_threshold_use = inflate_threshold;
|
||||
|
||||
err = 0;
|
||||
while ((tn->full_children > 0 &&
|
||||
50 * (tn->full_children + tnode_child_length(tn) - tn->empty_children) >=
|
||||
inflate_threshold * tnode_child_length(tn))) {
|
||||
inflate_threshold_use * tnode_child_length(tn))) {
|
||||
|
||||
old_tn = tn;
|
||||
tn = inflate(t, tn);
|
||||
|
@ -564,10 +575,18 @@ static struct node *resize(struct trie *t, struct tnode *tn)
|
|||
* node is above threshold.
|
||||
*/
|
||||
|
||||
|
||||
/* Keep root node larger */
|
||||
|
||||
if(!tn->parent)
|
||||
halve_threshold_use = halve_threshold_root;
|
||||
else
|
||||
halve_threshold_use = halve_threshold;
|
||||
|
||||
err = 0;
|
||||
while (tn->bits > 1 &&
|
||||
100 * (tnode_child_length(tn) - tn->empty_children) <
|
||||
halve_threshold * tnode_child_length(tn)) {
|
||||
halve_threshold_use * tnode_child_length(tn)) {
|
||||
|
||||
old_tn = tn;
|
||||
tn = halve(t, tn);
|
||||
|
|
|
@ -99,7 +99,7 @@ static int udp_v6_get_port(struct sock *sk, unsigned short snum)
|
|||
next:;
|
||||
}
|
||||
result = best;
|
||||
for(;; result += UDP_HTABLE_SIZE) {
|
||||
for(i = 0; i < (1 << 16) / UDP_HTABLE_SIZE; i++, result += UDP_HTABLE_SIZE) {
|
||||
if (result > sysctl_local_port_range[1])
|
||||
result = sysctl_local_port_range[0]
|
||||
+ ((result - sysctl_local_port_range[0]) &
|
||||
|
@ -107,6 +107,8 @@ static int udp_v6_get_port(struct sock *sk, unsigned short snum)
|
|||
if (!udp_lport_inuse(result))
|
||||
break;
|
||||
}
|
||||
if (i >= (1 << 16) / UDP_HTABLE_SIZE)
|
||||
goto fail;
|
||||
gotit:
|
||||
udp_port_rover = snum = result;
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue