diff options
author | Stephen Hemminger <shemminger@linux-foundation.org> | 2007-10-09 10:36:32 +0200 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-11 01:52:50 +0200 |
commit | 0c4e85813d0a94eeb8bf813397a4907bdd7bb610 (patch) | |
tree | 53ee948abc930bb1c5cd270c490f87fda5eb45b3 /net/sched/sch_teql.c | |
parent | [NET]: Remove no longer relevant comment in loopback driver. (diff) | |
download | linux-0c4e85813d0a94eeb8bf813397a4907bdd7bb610.tar.xz linux-0c4e85813d0a94eeb8bf813397a4907bdd7bb610.zip |
[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 'net/sched/sch_teql.c')
-rw-r--r-- | net/sched/sch_teql.c | 5 |
1 files changed, 4 insertions, 1 deletions
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 * } if (neigh_event_send(n, skb_res) == 0) { int err; + read_lock(&n->lock); - err = dev->hard_header(skb, dev, ntohs(skb->protocol), n->ha, NULL, skb->len); + err = dev_hard_header(skb, dev, ntohs(skb->protocol), + n->ha, NULL, skb->len); read_unlock(&n->lock); + if (err < 0) { neigh_release(n); return -EINVAL; |