mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-01 02:21:16 +00:00
neigh: Remove by-hand SKB queue handling.
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f4ab543201
commit
f72051b067
1 changed files with 8 additions and 13 deletions
|
@ -927,8 +927,7 @@ int __neigh_event_send(struct neighbour *neigh, struct sk_buff *skb)
|
|||
if (skb_queue_len(&neigh->arp_queue) >=
|
||||
neigh->parms->queue_len) {
|
||||
struct sk_buff *buff;
|
||||
buff = neigh->arp_queue.next;
|
||||
__skb_unlink(buff, &neigh->arp_queue);
|
||||
buff = __skb_dequeue(&neigh->arp_queue);
|
||||
kfree_skb(buff);
|
||||
NEIGH_CACHE_STAT_INC(neigh->tbl, unres_discards);
|
||||
}
|
||||
|
@ -1259,24 +1258,20 @@ static void neigh_proxy_process(unsigned long arg)
|
|||
struct neigh_table *tbl = (struct neigh_table *)arg;
|
||||
long sched_next = 0;
|
||||
unsigned long now = jiffies;
|
||||
struct sk_buff *skb;
|
||||
struct sk_buff *skb, *n;
|
||||
|
||||
spin_lock(&tbl->proxy_queue.lock);
|
||||
|
||||
skb = tbl->proxy_queue.next;
|
||||
skb_queue_walk_safe(&tbl->proxy_queue, skb, n) {
|
||||
long tdif = NEIGH_CB(skb)->sched_next - now;
|
||||
|
||||
while (skb != (struct sk_buff *)&tbl->proxy_queue) {
|
||||
struct sk_buff *back = skb;
|
||||
long tdif = NEIGH_CB(back)->sched_next - now;
|
||||
|
||||
skb = skb->next;
|
||||
if (tdif <= 0) {
|
||||
struct net_device *dev = back->dev;
|
||||
__skb_unlink(back, &tbl->proxy_queue);
|
||||
struct net_device *dev = skb->dev;
|
||||
__skb_unlink(skb, &tbl->proxy_queue);
|
||||
if (tbl->proxy_redo && netif_running(dev))
|
||||
tbl->proxy_redo(back);
|
||||
tbl->proxy_redo(skb);
|
||||
else
|
||||
kfree_skb(back);
|
||||
kfree_skb(skb);
|
||||
|
||||
dev_put(dev);
|
||||
} else if (!sched_next || tdif < sched_next)
|
||||
|
|
Loading…
Reference in a new issue