diff options
| -rw-r--r-- | net/8021q/vlan_core.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c index 01ddb0472f86..0eb96f7e44be 100644 --- a/net/8021q/vlan_core.c +++ b/net/8021q/vlan_core.c | |||
| @@ -24,8 +24,11 @@ int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp, | |||
| 24 | 24 | ||
| 25 | if (vlan_dev) | 25 | if (vlan_dev) |
| 26 | skb->dev = vlan_dev; | 26 | skb->dev = vlan_dev; |
| 27 | else if (vlan_id) | 27 | else if (vlan_id) { |
| 28 | goto drop; | 28 | if (!(skb->dev->flags & IFF_PROMISC)) |
| 29 | goto drop; | ||
| 30 | skb->pkt_type = PACKET_OTHERHOST; | ||
| 31 | } | ||
| 29 | 32 | ||
| 30 | return (polling ? netif_receive_skb(skb) : netif_rx(skb)); | 33 | return (polling ? netif_receive_skb(skb) : netif_rx(skb)); |
| 31 | 34 | ||
| @@ -102,8 +105,11 @@ vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp, | |||
| 102 | 105 | ||
| 103 | if (vlan_dev) | 106 | if (vlan_dev) |
| 104 | skb->dev = vlan_dev; | 107 | skb->dev = vlan_dev; |
| 105 | else if (vlan_id) | 108 | else if (vlan_id) { |
| 106 | goto drop; | 109 | if (!(skb->dev->flags & IFF_PROMISC)) |
| 110 | goto drop; | ||
| 111 | skb->pkt_type = PACKET_OTHERHOST; | ||
| 112 | } | ||
| 107 | 113 | ||
| 108 | for (p = napi->gro_list; p; p = p->next) { | 114 | for (p = napi->gro_list; p; p = p->next) { |
| 109 | NAPI_GRO_CB(p)->same_flow = | 115 | NAPI_GRO_CB(p)->same_flow = |
