Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f72051b0 authored by David S. Miller's avatar David S. Miller
Browse files

neigh: Remove by-hand SKB queue handling.

parent f4ab5432
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -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;

	while (skb != (struct sk_buff *)&tbl->proxy_queue) {
		struct sk_buff *back = skb;
		long tdif = NEIGH_CB(back)->sched_next - now;
	skb_queue_walk_safe(&tbl->proxy_queue, skb, n) {
		long tdif = NEIGH_CB(skb)->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)