aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJesse Gross <jesse@nicira.com>2011-01-17 15:46:00 -0500
committerDavid S. Miller <davem@davemloft.net>2011-01-18 19:13:50 -0500
commit6ee400aafb60289b78fcde5ebccd8c4973fc53f4 (patch)
treed2cf34a95277a35836bbbb898a15d3dfa45e4368 /net
parentf742aa8acb7e50a383f6d2b00b1c52e081970d38 (diff)
net offloading: Do not mask out NETIF_F_HW_VLAN_TX for vlan.
In netif_skb_features() we return only the features that are valid for vlans if we have a vlan packet. However, we should not mask out NETIF_F_HW_VLAN_TX since it enables transmission of vlan tags and is obviously valid. Reported-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Jesse Gross <jesse@nicira.com> Acked-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/core/dev.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 83507c265e48..4c58d11d3b68 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2023,13 +2023,13 @@ int netif_skb_features(struct sk_buff *skb)
2023 return harmonize_features(skb, protocol, features); 2023 return harmonize_features(skb, protocol, features);
2024 } 2024 }
2025 2025
2026 features &= skb->dev->vlan_features; 2026 features &= (skb->dev->vlan_features | NETIF_F_HW_VLAN_TX);
2027 2027
2028 if (protocol != htons(ETH_P_8021Q)) { 2028 if (protocol != htons(ETH_P_8021Q)) {
2029 return harmonize_features(skb, protocol, features); 2029 return harmonize_features(skb, protocol, features);
2030 } else { 2030 } else {
2031 features &= NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | 2031 features &= NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST |
2032 NETIF_F_GEN_CSUM; 2032 NETIF_F_GEN_CSUM | NETIF_F_HW_VLAN_TX;
2033 return harmonize_features(skb, protocol, features); 2033 return harmonize_features(skb, protocol, features);
2034 } 2034 }
2035} 2035}