From 0077a780bf02bd26b92bea7a3e2c3d2b7cda14b0 Mon Sep 17 00:00:00 2001 From: Chunhe Li Date: Wed, 30 Jul 2014 09:49:01 +0800 Subject: [PATCH] datapath: Drop packets when interdev is not up If the internal device is not up, it should drop received packets. Sometimes it receive the broadcast or multicast packets, and the ip protocol stack will casue more cpu usage wasted. Signed-off-by: Chunhe Li Acked-by: Pravin B Shelar --- datapath/vport-internal_dev.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/datapath/vport-internal_dev.c b/datapath/vport-internal_dev.c index 3b0f9a7a4..8a454df84 100644 --- a/datapath/vport-internal_dev.c +++ b/datapath/vport-internal_dev.c @@ -242,6 +242,11 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb) struct net_device *netdev = netdev_vport_priv(vport)->dev; int len; + if (unlikely(!(netdev->flags & IFF_UP))) { + kfree_skb(skb); + return 0; + } + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37) if (vlan_tx_tag_present(skb)) { if (unlikely(!__vlan_put_tag(skb, -- 2.20.1