summaryrefslogtreecommitdiff
path: root/net/openvswitch
diff options
context:
space:
mode:
authorChunhe Li <lichunhe@huawei.com>2014-09-08 20:17:21 (GMT)
committerPravin B Shelar <pshelar@nicira.com>2014-11-06 07:52:35 (GMT)
commite1f9c356d2946ec717d035ccac5532b1c5709c52 (patch)
treea006b187186abc7a7d0ebf3c56ff6b1e6d64febd /net/openvswitch
parentcc3a5ae6f23336ddc1d136a66c0a6a60276e99a3 (diff)
downloadlinux-e1f9c356d2946ec717d035ccac5532b1c5709c52.tar.xz
openvswitch: 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 <lichunhe@huawei.com> Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Diffstat (limited to 'net/openvswitch')
-rw-r--r--net/openvswitch/vport-internal_dev.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
index 10dc07e..6a55f71 100644
--- a/net/openvswitch/vport-internal_dev.c
+++ b/net/openvswitch/vport-internal_dev.c
@@ -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);