From: David Ahern <dsah...@kernel.org> Date: Fri, 7 Dec 2018 12:24:57 -0800
> From: David Ahern <dsah...@gmail.com> > > The existing garbage collection algorithm has a number of problems: ... > This patch addresses these problems as follows: > > 1. Use of a separate list_head to track entries that can be garbage > collected along with a separate counter. PERMANENT entries are not > added to this list. > > The gc_thresh parameters are only compared to the new counter, not the > total entries in the table. The forced_gc function is updated to only > walk this new gc_list looking for entries to evict. > > 2. Entries are added to the list head at the tail and removed from the > front. > > 3. Entries are only evicted if they were last updated more than 5 seconds > ago, adhering to the original intent of gc_thresh2. > > 4. Forced gc is stopped once the number of gc_entries drops below > gc_thresh2. > > 5. Since gc checks do not apply to PERMANENT entries, gc levels are skipped > when allocating a new neighbor for a PERMANENT entry. By extension this > means there are no explicit limits on the number of PERMANENT entries > that can be created, but this is no different than FIB entries or FDB > entries. > > Signed-off-by: David Ahern <dsah...@gmail.com> > --- > v2 > - remove on_gc_list boolean in favor of !list_empty > - fix neigh_alloc to add new entry to tail of list_head Again, looks great, applied.