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>
This commit is contained in:
@ -152,7 +152,7 @@ EXPORT_SYMBOL(dst_discard);
|
||||
const u32 dst_default_metrics[RTAX_MAX];
|
||||
|
||||
void *dst_alloc(struct dst_ops *ops, struct net_device *dev,
|
||||
int initial_ref, int initial_obsolete, int flags)
|
||||
int initial_ref, int initial_obsolete, unsigned short flags)
|
||||
{
|
||||
struct dst_entry *dst;
|
||||
|
||||
@ -188,6 +188,7 @@ void *dst_alloc(struct dst_ops *ops, struct net_device *dev,
|
||||
dst->__use = 0;
|
||||
dst->lastuse = jiffies;
|
||||
dst->flags = flags;
|
||||
dst->pending_confirm = 0;
|
||||
dst->next = NULL;
|
||||
if (!(flags & DST_NOCOUNT))
|
||||
dst_entries_add(ops, 1);
|
||||
|
Reference in New Issue
Block a user