diff options
author | David S. Miller <davem@davemloft.net> | 2012-07-02 05:21:03 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-05 04:03:06 -0400 |
commit | 5110effee8fde2edfacac9cd12a9960ab2dc39ea (patch) | |
tree | f74fff97af20ffdf805fedc56f0c8f88bbef2df7 /net/ipv6/ip6_output.c | |
parent | 60d354ebebd9d0f760cb6c3b9f53a7ade0f8cd0e (diff) |
net: Do delayed neigh confirmation.
When a dst_confirm() happens, mark the confirmation as pending in the
dst. Then on the next packet out, when we have the neigh in-hand, do
the update.
This removes the dependency in dst_confirm() of dst's having an
attached neigh.
While we're here, remove the explicit 'dst' NULL check, all except 2
or 3 call sites ensure it's not NULL. So just fix those cases up.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index a233a7ccbc3a..c94e4aabe11b 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -125,7 +125,7 @@ static int ip6_finish_output2(struct sk_buff *skb) | |||
125 | rcu_read_lock(); | 125 | rcu_read_lock(); |
126 | neigh = dst_get_neighbour_noref(dst); | 126 | neigh = dst_get_neighbour_noref(dst); |
127 | if (neigh) { | 127 | if (neigh) { |
128 | int res = neigh_output(neigh, skb); | 128 | int res = dst_neigh_output(dst, neigh, skb); |
129 | 129 | ||
130 | rcu_read_unlock(); | 130 | rcu_read_unlock(); |
131 | return res; | 131 | return res; |