openvswitch: Drop packets when interdev is not up
authorChunhe Li <lichunhe@huawei.com>
Mon, 8 Sep 2014 20:17:21 +0000 (13:17 -0700)
committerPravin B Shelar <pshelar@nicira.com>
Thu, 6 Nov 2014 07:52:35 +0000 (23:52 -0800)
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>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
net/openvswitch/vport-internal_dev.c

index 10dc07e1678bcfceb638650869542a57399895ed..6a55f71055051957685b11e8950ba1e4197dce20 100644 (file)
@@ -224,6 +224,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;
+       }
+
        len = skb->len;
 
        skb_dst_drop(skb);