diff options
-rw-r--r-- | drivers/net/macvlan.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 6ed577b065df..497991bd3b64 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c | |||
@@ -219,9 +219,11 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev) | |||
219 | const struct macvlan_dev *vlan = netdev_priv(dev); | 219 | const struct macvlan_dev *vlan = netdev_priv(dev); |
220 | const struct macvlan_port *port = vlan->port; | 220 | const struct macvlan_port *port = vlan->port; |
221 | const struct macvlan_dev *dest; | 221 | const struct macvlan_dev *dest; |
222 | __u8 ip_summed = skb->ip_summed; | ||
222 | 223 | ||
223 | if (vlan->mode == MACVLAN_MODE_BRIDGE) { | 224 | if (vlan->mode == MACVLAN_MODE_BRIDGE) { |
224 | const struct ethhdr *eth = (void *)skb->data; | 225 | const struct ethhdr *eth = (void *)skb->data; |
226 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
225 | 227 | ||
226 | /* send to other bridge ports directly */ | 228 | /* send to other bridge ports directly */ |
227 | if (is_multicast_ether_addr(eth->h_dest)) { | 229 | if (is_multicast_ether_addr(eth->h_dest)) { |
@@ -241,6 +243,7 @@ static int macvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev) | |||
241 | } | 243 | } |
242 | 244 | ||
243 | xmit_world: | 245 | xmit_world: |
246 | skb->ip_summed = ip_summed; | ||
244 | skb_set_dev(skb, vlan->lowerdev); | 247 | skb_set_dev(skb, vlan->lowerdev); |
245 | return dev_queue_xmit(skb); | 248 | return dev_queue_xmit(skb); |
246 | } | 249 | } |