diff options
Diffstat (limited to 'include/net/dst.h')
-rw-r--r-- | include/net/dst.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/include/net/dst.h b/include/net/dst.h index baf597890064..77f52f7dc823 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -396,11 +396,15 @@ static inline void dst_confirm(struct dst_entry *dst) | |||
396 | static inline int dst_neigh_output(struct dst_entry *dst, struct neighbour *n, | 396 | static inline int dst_neigh_output(struct dst_entry *dst, struct neighbour *n, |
397 | struct sk_buff *skb) | 397 | struct sk_buff *skb) |
398 | { | 398 | { |
399 | struct hh_cache *hh; | 399 | const struct hh_cache *hh; |
400 | |||
401 | if (dst->pending_confirm) { | ||
402 | unsigned long now = jiffies; | ||
400 | 403 | ||
401 | if (unlikely(dst->pending_confirm)) { | ||
402 | n->confirmed = jiffies; | ||
403 | dst->pending_confirm = 0; | 404 | dst->pending_confirm = 0; |
405 | /* avoid dirtying neighbour */ | ||
406 | if (n->confirmed != now) | ||
407 | n->confirmed = now; | ||
404 | } | 408 | } |
405 | 409 | ||
406 | hh = &n->hh; | 410 | hh = &n->hh; |