diff options
author | melifaro <melifaro@FreeBSD.org> | 2015-09-15 06:48:19 +0000 |
---|---|---|
committer | melifaro <melifaro@FreeBSD.org> | 2015-09-15 06:48:19 +0000 |
commit | b42c7af3b5c2f710974dadca023300f3607c6dae (patch) | |
tree | 69fe12c7b39f157912275e7decabcd281efb18dd /sys/netinet/if_ether.c | |
parent | 08f689683b70b0bfa3c746259f1038cc089c5f7c (diff) | |
download | FreeBSD-src-b42c7af3b5c2f710974dadca023300f3607c6dae.zip FreeBSD-src-b42c7af3b5c2f710974dadca023300f3607c6dae.tar.gz |
* Require explicitl lle unlink prior to calling llentry_delete().
This one slightly decreases time of holding afdata wlock.
* While here, make nd6_free() return void. No one has used its return value
since r186119.
Diffstat (limited to 'sys/netinet/if_ether.c')
-rw-r--r-- | sys/netinet/if_ether.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c index 39264a5..bba5463 100644 --- a/sys/netinet/if_ether.c +++ b/sys/netinet/if_ether.c @@ -194,16 +194,14 @@ arptimer(void *arg) /* Guard against race with other llentry_free(). */ if (lle->la_flags & LLE_LINKED) { - - size_t pkts_dropped; LLE_REMREF(lle); - pkts_dropped = llentry_free(lle); - ARPSTAT_ADD(dropped, pkts_dropped); - } else - LLE_FREE_LOCKED(lle); - + lltable_unlink_entry(lle->lle_tbl, lle); + } IF_AFDATA_UNLOCK(ifp); + size_t pkts_dropped = llentry_free(lle); + + ARPSTAT_ADD(dropped, pkts_dropped); ARPSTAT_INC(timeouts); CURVNET_RESTORE(); |