datapath: Drop packets when interdev is not up
authorChunhe Li <lichunhe@huawei.com>
Wed, 30 Jul 2014 01:49:01 +0000 (09:49 +0800)
committerPravin B Shelar <pshelar@nicira.com>
Fri, 1 Aug 2014 21:51:11 +0000 (14:51 -0700)
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 <lichunhe@huawei.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
datapath/vport-internal_dev.c

index 637d712..7432f1f 100644 (file)
@@ -236,6 +236,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,