aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/mcast.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/mcast.c')
-rw-r--r--net/ipv6/mcast.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 86d908b1caea..8668ab3af32e 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -1438,17 +1438,12 @@ static struct sk_buff *mld_newpack(struct net_device *dev, int size)
1438static inline int mld_dev_queue_xmit2(struct sk_buff *skb) 1438static inline int mld_dev_queue_xmit2(struct sk_buff *skb)
1439{ 1439{
1440 struct net_device *dev = skb->dev; 1440 struct net_device *dev = skb->dev;
1441 unsigned char ha[MAX_ADDR_LEN];
1441 1442
1442 if (dev->hard_header) { 1443 ndisc_mc_map(&ipv6_hdr(skb)->daddr, ha, dev, 1);
1443 unsigned char ha[MAX_ADDR_LEN]; 1444 if (dev_hard_header(skb, dev, ETH_P_IPV6, ha, NULL, skb->len) < 0) {
1444 int err; 1445 kfree_skb(skb);
1445 1446 return -EINVAL;
1446 ndisc_mc_map(&ipv6_hdr(skb)->daddr, ha, dev, 1);
1447 err = dev->hard_header(skb, dev, ETH_P_IPV6, ha, NULL, skb->len);
1448 if (err < 0) {
1449 kfree_skb(skb);
1450 return err;
1451 }
1452 } 1447 }
1453 return dev_queue_xmit(skb); 1448 return dev_queue_xmit(skb);
1454} 1449}