aboutsummaryrefslogtreecommitdiffstats
path: root/include
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 /include
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>
Diffstat (limited to 'include')
-rw-r--r--include/linux/netdevice.h9
-rw-r--r--include/net/dn_route.h3
2 files changed, 10 insertions, 2 deletions
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);