Thread (6 messages) flat view 6 messages, 3 authors, 2016-08-26

Re: [PATCH net-next] net: flush the softnet backlog in process context

From: Eric Dumazet <hidden>
Date: 2016-08-25 14:34:27

On Thu, 2016-08-25 at 15:58 +0200, Paolo Abeni wrote:
Currently in process_backlog(), the process_queue dequeuing is
performed with local IRQ disabled, to protect against
flush_backlog(), which runs in hard IRQ context.
Acked-by: Eric Dumazet <edumazet@google.com>
quoted hunk ↗ jump to hunk
@@ -6707,7 +6735,7 @@ static void rollback_registered_many(struct list_head *head)
 		unlist_netdevice(dev);
 
 		dev->reg_state = NETREG_UNREGISTERING;
-		on_each_cpu(flush_backlog, dev, 1);
+		flush_all_backlogs(dev);
 	}
 
 	synchronize_net();
In a future patch, we could change this so that we kick
flush_all_backlogs() once for all devices, instead of one device at a
time.

We would not pass @dev anymore as a parameter and simply look at
skb->dev->reg_state to decide to remove packets from queues in
flush_backlog()

Batching matters for some guys using hundred of devices and suddenly
removing them all in one go.

Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help