[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1432077893-4431-2-git-send-email-baptiste@arista.com>
Date: Tue, 19 May 2015 16:24:51 -0700
From: Baptiste Covolato <baptiste@...sta.com>
To: "David S. Miller" <davem@...emloft.net>, netdev@...r.kernel.org
Cc: Francesco Ruggeri <fruggeri@...sta.com>,
Eric Mowat <mowat@...sta.com>,
Adrien Schildknecht <adrien+dev@...ischi.me>
Subject: [PATCH net-next 1/3] net: Flush all skbs related to an unregistered device
Update flush_backlog to flush all packets in the backlog queue belonging
to a device being unregistered. Accordingly on_each_cpu no longer needs
to pass a device to flush_backlog since it handles any device in the
NETREG_UNREGISTERED state.
Signed-off-by: Baptiste Covolato <baptiste@...sta.com>
Signed-off-by: Francesco Ruggeri <fruggeri@...sta.com>
---
net/core/dev.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 0e7afef..db59d18 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4005,13 +4005,12 @@ EXPORT_SYMBOL(netif_receive_skb_sk);
*/
static void flush_backlog(void *arg)
{
- struct net_device *dev = arg;
struct softnet_data *sd = this_cpu_ptr(&softnet_data);
struct sk_buff *skb, *tmp;
rps_lock(sd);
skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
- if (skb->dev == dev) {
+ if (skb->dev->reg_state == NETREG_UNREGISTERED) {
__skb_unlink(skb, &sd->input_pkt_queue);
kfree_skb(skb);
input_queue_head_incr(sd);
@@ -4020,7 +4019,7 @@ static void flush_backlog(void *arg)
rps_unlock(sd);
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
- if (skb->dev == dev) {
+ if (skb->dev->reg_state == NETREG_UNREGISTERED) {
__skb_unlink(skb, &sd->process_queue);
kfree_skb(skb);
input_queue_head_incr(sd);
@@ -6790,7 +6789,7 @@ void netdev_run_todo(void)
dev->reg_state = NETREG_UNREGISTERED;
- on_each_cpu(flush_backlog, dev, 1);
+ on_each_cpu(flush_backlog, NULL, 1);
netdev_wait_allrefs(dev);
--
2.4.1
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists