diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 95897ff3a76f..d1aebf7c6494 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -3130,6 +3130,12 @@ another_round: | |||
3130 | 3130 | ||
3131 | __this_cpu_inc(softnet_data.processed); | 3131 | __this_cpu_inc(softnet_data.processed); |
3132 | 3132 | ||
3133 | if (skb->protocol == cpu_to_be16(ETH_P_8021Q)) { | ||
3134 | skb = vlan_untag(skb); | ||
3135 | if (unlikely(!skb)) | ||
3136 | goto out; | ||
3137 | } | ||
3138 | |||
3133 | #ifdef CONFIG_NET_CLS_ACT | 3139 | #ifdef CONFIG_NET_CLS_ACT |
3134 | if (skb->tc_verd & TC_NCLS) { | 3140 | if (skb->tc_verd & TC_NCLS) { |
3135 | skb->tc_verd = CLR_TC_NCLS(skb->tc_verd); | 3141 | skb->tc_verd = CLR_TC_NCLS(skb->tc_verd); |
@@ -3177,7 +3183,7 @@ ncls: | |||
3177 | ret = deliver_skb(skb, pt_prev, orig_dev); | 3183 | ret = deliver_skb(skb, pt_prev, orig_dev); |
3178 | pt_prev = NULL; | 3184 | pt_prev = NULL; |
3179 | } | 3185 | } |
3180 | if (vlan_hwaccel_do_receive(&skb)) { | 3186 | if (vlan_do_receive(&skb)) { |
3181 | ret = __netif_receive_skb(skb); | 3187 | ret = __netif_receive_skb(skb); |
3182 | goto out; | 3188 | goto out; |
3183 | } else if (unlikely(!skb)) | 3189 | } else if (unlikely(!skb)) |