Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (55 commits) netxen: fix tx ring accounting netxen: fix detection of cut-thru firmware mode forcedeth: fix dma api mismatches atm: sk_wmem_alloc initial value is one net: correct off-by-one write allocations reports via-velocity : fix no link detection on boot Net / e100: Fix suspend of devices that cannot be power managed TI DaVinci EMAC : Fix rmmod error net: group address list and its count ipv4: Fix fib_trie rebalancing, part 2 pkt_sched: Update drops stats in act_police sky2: version 1.23 sky2: add GRO support sky2: skb recycling sky2: reduce default transmit ring sky2: receive counter update sky2: fix shutdown synchronization sky2: PCI irq issues sky2: more receive shutdown sky2: turn off pause during shutdown ... Manually fix trivial conflict in net/core/skbuff.c due to kmemcheck
This commit is contained in:
@@ -391,13 +391,8 @@ static inline void tnode_free(struct tnode *tn)
|
||||
static void tnode_free_safe(struct tnode *tn)
|
||||
{
|
||||
BUG_ON(IS_LEAF(tn));
|
||||
|
||||
if (node_parent((struct node *) tn)) {
|
||||
tn->tnode_free = tnode_free_head;
|
||||
tnode_free_head = tn;
|
||||
} else {
|
||||
tnode_free(tn);
|
||||
}
|
||||
tn->tnode_free = tnode_free_head;
|
||||
tnode_free_head = tn;
|
||||
}
|
||||
|
||||
static void tnode_free_flush(void)
|
||||
@@ -1009,7 +1004,7 @@ fib_find_node(struct trie *t, u32 key)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static struct node *trie_rebalance(struct trie *t, struct tnode *tn)
|
||||
static void trie_rebalance(struct trie *t, struct tnode *tn)
|
||||
{
|
||||
int wasfull;
|
||||
t_key cindex, key;
|
||||
@@ -1033,12 +1028,13 @@ static struct node *trie_rebalance(struct trie *t, struct tnode *tn)
|
||||
}
|
||||
|
||||
/* Handle last (top) tnode */
|
||||
if (IS_TNODE(tn)) {
|
||||
if (IS_TNODE(tn))
|
||||
tn = (struct tnode *)resize(t, (struct tnode *)tn);
|
||||
tnode_free_flush();
|
||||
}
|
||||
|
||||
return (struct node *)tn;
|
||||
rcu_assign_pointer(t->trie, (struct node *)tn);
|
||||
tnode_free_flush();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* only used from updater-side */
|
||||
@@ -1186,7 +1182,7 @@ static struct list_head *fib_insert_node(struct trie *t, u32 key, int plen)
|
||||
|
||||
/* Rebalance the trie */
|
||||
|
||||
rcu_assign_pointer(t->trie, trie_rebalance(t, tp));
|
||||
trie_rebalance(t, tp);
|
||||
done:
|
||||
return fa_head;
|
||||
}
|
||||
@@ -1605,7 +1601,7 @@ static void trie_leaf_remove(struct trie *t, struct leaf *l)
|
||||
if (tp) {
|
||||
t_key cindex = tkey_extract_bits(l->key, tp->pos, tp->bits);
|
||||
put_child(t, (struct tnode *)tp, cindex, NULL);
|
||||
rcu_assign_pointer(t->trie, trie_rebalance(t, tp));
|
||||
trie_rebalance(t, tp);
|
||||
} else
|
||||
rcu_assign_pointer(t->trie, NULL);
|
||||
|
||||
|
@@ -156,10 +156,10 @@ static int inet_csk_diag_fill(struct sock *sk,
|
||||
r->idiag_inode = sock_i_ino(sk);
|
||||
|
||||
if (minfo) {
|
||||
minfo->idiag_rmem = atomic_read(&sk->sk_rmem_alloc);
|
||||
minfo->idiag_rmem = sk_rmem_alloc_get(sk);
|
||||
minfo->idiag_wmem = sk->sk_wmem_queued;
|
||||
minfo->idiag_fmem = sk->sk_forward_alloc;
|
||||
minfo->idiag_tmem = atomic_read(&sk->sk_wmem_alloc);
|
||||
minfo->idiag_tmem = sk_wmem_alloc_get(sk);
|
||||
}
|
||||
|
||||
handler->idiag_get_info(sk, r, info);
|
||||
|
@@ -799,7 +799,8 @@ static int raw_ioctl(struct sock *sk, int cmd, unsigned long arg)
|
||||
{
|
||||
switch (cmd) {
|
||||
case SIOCOUTQ: {
|
||||
int amount = atomic_read(&sk->sk_wmem_alloc);
|
||||
int amount = sk_wmem_alloc_get(sk);
|
||||
|
||||
return put_user(amount, (int __user *)arg);
|
||||
}
|
||||
case SIOCINQ: {
|
||||
@@ -935,8 +936,8 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
|
||||
seq_printf(seq, "%4d: %08X:%04X %08X:%04X"
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %d\n",
|
||||
i, src, srcp, dest, destp, sp->sk_state,
|
||||
atomic_read(&sp->sk_wmem_alloc),
|
||||
atomic_read(&sp->sk_rmem_alloc),
|
||||
sk_wmem_alloc_get(sp),
|
||||
sk_rmem_alloc_get(sp),
|
||||
0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
|
||||
atomic_read(&sp->sk_refcnt), sp, atomic_read(&sp->sk_drops));
|
||||
}
|
||||
|
@@ -840,7 +840,8 @@ int udp_ioctl(struct sock *sk, int cmd, unsigned long arg)
|
||||
switch (cmd) {
|
||||
case SIOCOUTQ:
|
||||
{
|
||||
int amount = atomic_read(&sk->sk_wmem_alloc);
|
||||
int amount = sk_wmem_alloc_get(sk);
|
||||
|
||||
return put_user(amount, (int __user *)arg);
|
||||
}
|
||||
|
||||
@@ -1721,8 +1722,8 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
|
||||
seq_printf(f, "%4d: %08X:%04X %08X:%04X"
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %d%n",
|
||||
bucket, src, srcp, dest, destp, sp->sk_state,
|
||||
atomic_read(&sp->sk_wmem_alloc),
|
||||
atomic_read(&sp->sk_rmem_alloc),
|
||||
sk_wmem_alloc_get(sp),
|
||||
sk_rmem_alloc_get(sp),
|
||||
0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
|
||||
atomic_read(&sp->sk_refcnt), sp,
|
||||
atomic_read(&sp->sk_drops), len);
|
||||
|
Reference in New Issue
Block a user