aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@linux-foundation.org>2007-10-09 04:36:32 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:52:50 -0400
commit0c4e85813d0a94eeb8bf813397a4907bdd7bb610 (patch)
tree53ee948abc930bb1c5cd270c490f87fda5eb45b3
parent4c94f8c0c9a82fad84bc5df453aff755cfed70b7 (diff)
[NET]: Wrap netdevice hardware header creation.
Add inline for common usage of hardware header creation, and fix bug in IPV6 mcast where the assumption about negative return is an errno. Negative return from hard_header means not enough space was available,(ie -N bytes). Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/hamradio/bpqether.c2
-rw-r--r--drivers/net/macvlan.c4
-rw-r--r--drivers/net/pppoe.c8
-rw-r--r--drivers/net/wan/lapbether.c2
-rw-r--r--include/linux/netdevice.h9
-rw-r--r--include/net/dn_route.h3
-rw-r--r--net/802/p8023.c2
-rw-r--r--net/8021q/vlan_dev.c14
-rw-r--r--net/core/neighbour.c17
-rw-r--r--net/core/netpoll.c8
-rw-r--r--net/decnet/dn_neigh.c3
-rw-r--r--net/econet/af_econet.c14
-rw-r--r--net/ethernet/pe2.c4
-rw-r--r--net/ipv4/arp.c3
-rw-r--r--net/ipv4/ipconfig.c4
-rw-r--r--net/ipv6/mcast.c15
-rw-r--r--net/packet/af_packet.c14
-rw-r--r--net/sched/sch_teql.c5
-rw-r--r--net/tipc/eth_media.c2
19 files changed, 63 insertions, 70 deletions
diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c
index c05bc37df356..4bff23e3b970 100644
--- a/drivers/net/hamradio/bpqether.c
+++ b/drivers/net/hamradio/bpqether.c
@@ -286,7 +286,7 @@ static int bpq_xmit(struct sk_buff *skb, struct net_device *dev)
286 286
287 skb->protocol = ax25_type_trans(skb, dev); 287 skb->protocol = ax25_type_trans(skb, dev);
288 skb_reset_network_header(skb); 288 skb_reset_network_header(skb);
289 dev->hard_header(skb, dev, ETH_P_BPQ, bpq->dest_addr, NULL, 0); 289 dev_hard_header(skb, dev, ETH_P_BPQ, bpq->dest_addr, NULL, 0);
290 bpq->stats.tx_packets++; 290 bpq->stats.tx_packets++;
291 bpq->stats.tx_bytes+=skb->len; 291 bpq->stats.tx_bytes+=skb->len;
292 292
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 2f6cdaa88729..a22087ca968d 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -170,8 +170,8 @@ static int macvlan_hard_header(struct sk_buff *skb, struct net_device *dev,
170 const struct macvlan_dev *vlan = netdev_priv(dev); 170 const struct macvlan_dev *vlan = netdev_priv(dev);
171 struct net_device *lowerdev = vlan->lowerdev; 171 struct net_device *lowerdev = vlan->lowerdev;
172 172
173 return lowerdev->hard_header(skb, lowerdev, type, daddr, 173 return dev_hard_header(skb, lowerdev, type, daddr,
174 saddr ? : dev->dev_addr, len); 174 saddr ? : dev->dev_addr, len);
175} 175}
176 176
177static int macvlan_open(struct net_device *dev) 177static int macvlan_open(struct net_device *dev)
diff --git a/drivers/net/pppoe.c b/drivers/net/pppoe.c
index d48b7b73d896..8936ed3469cf 100644
--- a/drivers/net/pppoe.c
+++ b/drivers/net/pppoe.c
@@ -834,8 +834,8 @@ static int pppoe_sendmsg(struct kiocb *iocb, struct socket *sock,
834 } 834 }
835 835
836 error = total_len; 836 error = total_len;
837 dev->hard_header(skb, dev, ETH_P_PPP_SES, 837 dev_hard_header(skb, dev, ETH_P_PPP_SES,
838 po->pppoe_pa.remote, NULL, total_len); 838 po->pppoe_pa.remote, NULL, total_len);
839 839
840 memcpy(ph, &hdr, sizeof(struct pppoe_hdr)); 840 memcpy(ph, &hdr, sizeof(struct pppoe_hdr));
841 841
@@ -886,8 +886,8 @@ static int __pppoe_xmit(struct sock *sk, struct sk_buff *skb)
886 skb->protocol = __constant_htons(ETH_P_PPP_SES); 886 skb->protocol = __constant_htons(ETH_P_PPP_SES);
887 skb->dev = dev; 887 skb->dev = dev;
888 888
889 dev->hard_header(skb, dev, ETH_P_PPP_SES, 889 dev_hard_header(skb, dev, ETH_P_PPP_SES,
890 po->pppoe_pa.remote, NULL, data_len); 890 po->pppoe_pa.remote, NULL, data_len);
891 891
892 dev_queue_xmit(skb); 892 dev_queue_xmit(skb);
893 893
diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c
index 36e683ccae5e..fb37b8095231 100644
--- a/drivers/net/wan/lapbether.c
+++ b/drivers/net/wan/lapbether.c
@@ -216,7 +216,7 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb)
216 216
217 skb->dev = dev = lapbeth->ethdev; 217 skb->dev = dev = lapbeth->ethdev;
218 218
219 dev->hard_header(skb, dev, ETH_P_DEC, bcast_addr, NULL, 0); 219 dev_hard_header(skb, dev, ETH_P_DEC, bcast_addr, NULL, 0);
220 220
221 dev_queue_xmit(skb); 221 dev_queue_xmit(skb);
222} 222}
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 71cf409ad17e..b33d084712fa 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -800,6 +800,15 @@ extern int dev_restart(struct net_device *dev);
800extern int netpoll_trap(void); 800extern int netpoll_trap(void);
801#endif 801#endif
802 802
803static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
804 unsigned short type,
805 void *daddr, void *saddr, unsigned len)
806{
807 if (!dev->hard_header)
808 return 0;
809 return dev->hard_header(skb, dev, type, daddr, saddr, len);
810}
811
803typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len); 812typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
804extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf); 813extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
805static inline int unregister_gifconf(unsigned int family) 814static inline int unregister_gifconf(unsigned int family)
diff --git a/include/net/dn_route.h b/include/net/dn_route.h
index c10e8e7e59a7..60c9f22d8694 100644
--- a/include/net/dn_route.h
+++ b/include/net/dn_route.h
@@ -100,8 +100,7 @@ static inline void dn_rt_finish_output(struct sk_buff *skb, char *dst, char *src
100 if ((dev->type != ARPHRD_ETHER) && (dev->type != ARPHRD_LOOPBACK)) 100 if ((dev->type != ARPHRD_ETHER) && (dev->type != ARPHRD_LOOPBACK))
101 dst = NULL; 101 dst = NULL;
102 102
103 if (!dev->hard_header || (dev->hard_header(skb, dev, ETH_P_DNA_RT, 103 if (dev_hard_header(skb, dev, ETH_P_DNA_RT, dst, src, skb->len) >= 0)
104 dst, src, skb->len) >= 0))
105 dn_rt_send(skb); 104 dn_rt_send(skb);
106 else 105 else
107 kfree_skb(skb); 106 kfree_skb(skb);
diff --git a/net/802/p8023.c b/net/802/p8023.c
index 53cf05709283..6ab1835041a7 100644
--- a/net/802/p8023.c
+++ b/net/802/p8023.c
@@ -31,7 +31,7 @@ static int p8023_request(struct datalink_proto *dl,
31{ 31{
32 struct net_device *dev = skb->dev; 32 struct net_device *dev = skb->dev;
33 33
34 dev->hard_header(skb, dev, ETH_P_802_3, dest_node, NULL, skb->len); 34 dev_hard_header(skb, dev, ETH_P_802_3, dest_node, NULL, skb->len);
35 return dev_queue_xmit(skb); 35 return dev_queue_xmit(skb);
36} 36}
37 37
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 6644e8f5f199..ca8090fdabbb 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -434,21 +434,19 @@ int vlan_dev_hard_header(struct sk_buff *skb, struct net_device *dev,
434 434
435 if (build_vlan_header) { 435 if (build_vlan_header) {
436 /* Now make the underlying real hard header */ 436 /* Now make the underlying real hard header */
437 rc = dev->hard_header(skb, dev, ETH_P_8021Q, daddr, saddr, len + VLAN_HLEN); 437 rc = dev_hard_header(skb, dev, ETH_P_8021Q, daddr, saddr,
438 438 len + VLAN_HLEN);
439 if (rc > 0) { 439 if (rc > 0)
440 rc += VLAN_HLEN; 440 rc += VLAN_HLEN;
441 } else if (rc < 0) { 441 else if (rc < 0)
442 rc -= VLAN_HLEN; 442 rc -= VLAN_HLEN;
443 } 443 } else
444 } else {
445 /* If here, then we'll just make a normal looking ethernet frame, 444 /* If here, then we'll just make a normal looking ethernet frame,
446 * but, the hard_start_xmit method will insert the tag (it has to 445 * but, the hard_start_xmit method will insert the tag (it has to
447 * be able to do this for bridged and other skbs that don't come 446 * be able to do this for bridged and other skbs that don't come
448 * down the protocol stack in an orderly manner. 447 * down the protocol stack in an orderly manner.
449 */ 448 */
450 rc = dev->hard_header(skb, dev, type, daddr, saddr, len); 449 rc = dev_hard_header(skb, dev, type, daddr, saddr, len);
451 }
452 450
453 return rc; 451 return rc;
454} 452}
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index 2c6577c1eedd..10bcb9f8da5c 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -1125,9 +1125,8 @@ int neigh_compat_output(struct sk_buff *skb)
1125 1125
1126 __skb_pull(skb, skb_network_offset(skb)); 1126 __skb_pull(skb, skb_network_offset(skb));
1127 1127
1128 if (dev->hard_header && 1128 if (dev_hard_header(skb, dev, ntohs(skb->protocol), NULL, NULL,
1129 dev->hard_header(skb, dev, ntohs(skb->protocol), NULL, NULL, 1129 skb->len) < 0 &&
1130 skb->len) < 0 &&
1131 dev->rebuild_header(skb)) 1130 dev->rebuild_header(skb))
1132 return 0; 1131 return 0;
1133 1132
@@ -1154,13 +1153,13 @@ int neigh_resolve_output(struct sk_buff *skb)
1154 write_lock_bh(&neigh->lock); 1153 write_lock_bh(&neigh->lock);
1155 if (!dst->hh) 1154 if (!dst->hh)
1156 neigh_hh_init(neigh, dst, dst->ops->protocol); 1155 neigh_hh_init(neigh, dst, dst->ops->protocol);
1157 err = dev->hard_header(skb, dev, ntohs(skb->protocol), 1156 err = dev_hard_header(skb, dev, ntohs(skb->protocol),
1158 neigh->ha, NULL, skb->len); 1157 neigh->ha, NULL, skb->len);
1159 write_unlock_bh(&neigh->lock); 1158 write_unlock_bh(&neigh->lock);
1160 } else { 1159 } else {
1161 read_lock_bh(&neigh->lock); 1160 read_lock_bh(&neigh->lock);
1162 err = dev->hard_header(skb, dev, ntohs(skb->protocol), 1161 err = dev_hard_header(skb, dev, ntohs(skb->protocol),
1163 neigh->ha, NULL, skb->len); 1162 neigh->ha, NULL, skb->len);
1164 read_unlock_bh(&neigh->lock); 1163 read_unlock_bh(&neigh->lock);
1165 } 1164 }
1166 if (err >= 0) 1165 if (err >= 0)
@@ -1191,8 +1190,8 @@ int neigh_connected_output(struct sk_buff *skb)
1191 __skb_pull(skb, skb_network_offset(skb)); 1190 __skb_pull(skb, skb_network_offset(skb));
1192 1191
1193 read_lock_bh(&neigh->lock); 1192 read_lock_bh(&neigh->lock);
1194 err = dev->hard_header(skb, dev, ntohs(skb->protocol), 1193 err = dev_hard_header(skb, dev, ntohs(skb->protocol),
1195 neigh->ha, NULL, skb->len); 1194 neigh->ha, NULL, skb->len);
1196 read_unlock_bh(&neigh->lock); 1195 read_unlock_bh(&neigh->lock);
1197 if (err >= 0) 1196 if (err >= 0)
1198 err = neigh->ops->queue_xmit(skb); 1197 err = neigh->ops->queue_xmit(skb);
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index e13602d8154d..95daba624967 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -415,11 +415,9 @@ static void arp_reply(struct sk_buff *skb)
415 send_skb->protocol = htons(ETH_P_ARP); 415 send_skb->protocol = htons(ETH_P_ARP);
416 416
417 /* Fill the device header for the ARP frame */ 417 /* Fill the device header for the ARP frame */
418 418 if (dev_hard_header(send_skb, skb->dev, ptype,
419 if (np->dev->hard_header && 419 sha, np->local_mac,
420 np->dev->hard_header(send_skb, skb->dev, ptype, 420 send_skb->len) < 0) {
421 sha, np->local_mac,
422 send_skb->len) < 0) {
423 kfree_skb(send_skb); 421 kfree_skb(send_skb);
424 return; 422 return;
425 } 423 }
diff --git a/net/decnet/dn_neigh.c b/net/decnet/dn_neigh.c
index a424a8ddbaf7..b66e3be3eb84 100644
--- a/net/decnet/dn_neigh.c
+++ b/net/decnet/dn_neigh.c
@@ -211,7 +211,8 @@ static int dn_neigh_output_packet(struct sk_buff *skb)
211 char mac_addr[ETH_ALEN]; 211 char mac_addr[ETH_ALEN];
212 212
213 dn_dn2eth(mac_addr, rt->rt_local_src); 213 dn_dn2eth(mac_addr, rt->rt_local_src);
214 if (!dev->hard_header || dev->hard_header(skb, dev, ntohs(skb->protocol), neigh->ha, mac_addr, skb->len) >= 0) 214 if (dev_hard_header(skb, dev, ntohs(skb->protocol), neigh->ha,
215 mac_addr, skb->len) >= 0)
215 return neigh->ops->queue_xmit(skb); 216 return neigh->ops->queue_xmit(skb);
216 217
217 if (net_ratelimit()) 218 if (net_ratelimit())
diff --git a/net/econet/af_econet.c b/net/econet/af_econet.c
index 9938e76a8ff6..9cae16b4e0b7 100644
--- a/net/econet/af_econet.c
+++ b/net/econet/af_econet.c
@@ -336,6 +336,7 @@ static int econet_sendmsg(struct kiocb *iocb, struct socket *sock,
336 /* Real hardware Econet. We're not worthy etc. */ 336 /* Real hardware Econet. We're not worthy etc. */
337#ifdef CONFIG_ECONET_NATIVE 337#ifdef CONFIG_ECONET_NATIVE
338 unsigned short proto = 0; 338 unsigned short proto = 0;
339 int res;
339 340
340 dev_hold(dev); 341 dev_hold(dev);
341 342
@@ -354,12 +355,12 @@ static int econet_sendmsg(struct kiocb *iocb, struct socket *sock,
354 eb->sec = *saddr; 355 eb->sec = *saddr;
355 eb->sent = ec_tx_done; 356 eb->sent = ec_tx_done;
356 357
357 if (dev->hard_header) { 358 err = -EINVAL;
358 int res; 359 res = dev_hard_header(skb, dev, ntohs(proto), &addr, NULL, len);
360 if (res < 0)
361 goto out_free;
362 if (res > 0) {
359 struct ec_framehdr *fh; 363 struct ec_framehdr *fh;
360 err = -EINVAL;
361 res = dev->hard_header(skb, dev, ntohs(proto),
362 &addr, NULL, len);
363 /* Poke in our control byte and 364 /* Poke in our control byte and
364 port number. Hack, hack. */ 365 port number. Hack, hack. */
365 fh = (struct ec_framehdr *)(skb->data); 366 fh = (struct ec_framehdr *)(skb->data);
@@ -368,8 +369,7 @@ static int econet_sendmsg(struct kiocb *iocb, struct socket *sock,
368 if (sock->type != SOCK_DGRAM) { 369 if (sock->type != SOCK_DGRAM) {
369 skb_reset_tail_pointer(skb); 370 skb_reset_tail_pointer(skb);
370 skb->len = 0; 371 skb->len = 0;
371 } else if (res < 0) 372 }
372 goto out_free;
373 } 373 }
374 374
375 /* Copy the data. Returns -EFAULT on error */ 375 /* Copy the data. Returns -EFAULT on error */
diff --git a/net/ethernet/pe2.c b/net/ethernet/pe2.c
index 9d57b4fb6440..d60e15d9365e 100644
--- a/net/ethernet/pe2.c
+++ b/net/ethernet/pe2.c
@@ -12,9 +12,7 @@ static int pEII_request(struct datalink_proto *dl,
12 struct net_device *dev = skb->dev; 12 struct net_device *dev = skb->dev;
13 13
14 skb->protocol = htons(ETH_P_IPX); 14 skb->protocol = htons(ETH_P_IPX);
15 if (dev->hard_header) 15 dev_hard_header(skb, dev, ETH_P_IPX, dest_node, NULL, skb->len);
16 dev->hard_header(skb, dev, ETH_P_IPX,
17 dest_node, NULL, skb->len);
18 return dev_queue_xmit(skb); 16 return dev_queue_xmit(skb);
19} 17}
20 18
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index 3a683006d761..5b24c65b13c6 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -591,8 +591,7 @@ struct sk_buff *arp_create(int type, int ptype, __be32 dest_ip,
591 /* 591 /*
592 * Fill the device header for the ARP frame 592 * Fill the device header for the ARP frame
593 */ 593 */
594 if (dev->hard_header && 594 if (dev_hard_header(skb, dev, ptype, dest_hw, src_hw, skb->len) < 0)
595 dev->hard_header(skb,dev,ptype,dest_hw,src_hw,skb->len) < 0)
596 goto out; 595 goto out;
597 596
598 /* 597 /*
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index af5d5b39fc13..c5c107a01823 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -757,8 +757,8 @@ static void __init ic_bootp_send_if(struct ic_device *d, unsigned long jiffies_d
757 /* Chain packet down the line... */ 757 /* Chain packet down the line... */
758 skb->dev = dev; 758 skb->dev = dev;
759 skb->protocol = htons(ETH_P_IP); 759 skb->protocol = htons(ETH_P_IP);
760 if ((dev->hard_header && 760 if (dev_hard_header(skb, dev, ntohs(skb->protocol),
761 dev->hard_header(skb, dev, ntohs(skb->protocol), dev->broadcast, dev->dev_addr, skb->len) < 0) || 761 dev->broadcast, dev->dev_addr, skb->len) < 0 ||
762 dev_queue_xmit(skb) < 0) 762 dev_queue_xmit(skb) < 0)
763 printk("E"); 763 printk("E");
764} 764}
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}
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 745e2cb87c96..c5244b309640 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -765,16 +765,10 @@ static int packet_sendmsg(struct kiocb *iocb, struct socket *sock,
765 skb_reserve(skb, LL_RESERVED_SPACE(dev)); 765 skb_reserve(skb, LL_RESERVED_SPACE(dev));
766 skb_reset_network_header(skb); 766 skb_reset_network_header(skb);
767 767
768 if (dev->hard_header) { 768 err = -EINVAL;
769 int res; 769 if (sock->type == SOCK_DGRAM &&
770 err = -EINVAL; 770 dev_hard_header(skb, dev, ntohs(proto), addr, NULL, len) < 0)
771 res = dev->hard_header(skb, dev, ntohs(proto), addr, NULL, len); 771 goto out_free;
772 if (sock->type != SOCK_DGRAM) {
773 skb_reset_tail_pointer(skb);
774 skb->len = 0;
775 } else if (res < 0)
776 goto out_free;
777 }
778 772
779 /* Returns -EFAULT on error */ 773 /* Returns -EFAULT on error */
780 err = memcpy_fromiovec(skb_put(skb,len), msg->msg_iov, len); 774 err = memcpy_fromiovec(skb_put(skb,len), msg->msg_iov, len);
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c
index 146f453d7378..d13970f3c7b1 100644
--- a/net/sched/sch_teql.c
+++ b/net/sched/sch_teql.c
@@ -232,9 +232,12 @@ __teql_resolve(struct sk_buff *skb, struct sk_buff *skb_res, struct net_device *
232 } 232 }
233 if (neigh_event_send(n, skb_res) == 0) { 233 if (neigh_event_send(n, skb_res) == 0) {
234 int err; 234 int err;
235
235 read_lock(&n->lock); 236 read_lock(&n->lock);
236 err = dev->hard_header(skb, dev, ntohs(skb->protocol), n->ha, NULL, skb->len); 237 err = dev_hard_header(skb, dev, ntohs(skb->protocol),
238 n->ha, NULL, skb->len);
237 read_unlock(&n->lock); 239 read_unlock(&n->lock);
240
238 if (err < 0) { 241 if (err < 0) {
239 neigh_release(n); 242 neigh_release(n);
240 return -EINVAL; 243 return -EINVAL;
diff --git a/net/tipc/eth_media.c b/net/tipc/eth_media.c
index 1a99e2947145..3bbef2ab22ae 100644
--- a/net/tipc/eth_media.c
+++ b/net/tipc/eth_media.c
@@ -77,7 +77,7 @@ static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr,
77 skb_reset_network_header(clone); 77 skb_reset_network_header(clone);
78 dev = ((struct eth_bearer *)(tb_ptr->usr_handle))->dev; 78 dev = ((struct eth_bearer *)(tb_ptr->usr_handle))->dev;
79 clone->dev = dev; 79 clone->dev = dev;
80 dev->hard_header(clone, dev, ETH_P_TIPC, 80 dev_hard_header(clone, dev, ETH_P_TIPC,
81 &dest->dev_addr.eth_addr, 81 &dest->dev_addr.eth_addr,
82 dev->dev_addr, clone->len); 82 dev->dev_addr, clone->len);
83 dev_queue_xmit(clone); 83 dev_queue_xmit(clone);