Skip to content

Commit

Permalink
ipv4: Remove unnecessary code from rt_check_expire().
Browse files Browse the repository at this point in the history
IPv4 routing cache entries no longer use dst->expires, because the
metrics, PMTU, and redirect information are stored in the inetpeer
cache.

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Jun 26, 2012
1 parent 29cb99d commit df67e6c
Showing 1 changed file with 11 additions and 23 deletions.
34 changes: 11 additions & 23 deletions net/ipv4/route.c
Original file line number Diff line number Diff line change
Expand Up @@ -870,34 +870,22 @@ static void rt_check_expire(void)
while ((rth = rcu_dereference_protected(*rthp,
lockdep_is_held(rt_hash_lock_addr(i)))) != NULL) {
prefetch(rth->dst.rt_next);
if (rt_is_expired(rth)) {
if (rt_is_expired(rth) ||
rt_may_expire(rth, tmo, ip_rt_gc_timeout)) {
*rthp = rth->dst.rt_next;
rt_free(rth);
continue;
}
if (rth->dst.expires) {
/* Entry is expired even if it is in use */
if (time_before_eq(jiffies, rth->dst.expires)) {
nofree:
tmo >>= 1;
rthp = &rth->dst.rt_next;
/*
* We only count entries on
* a chain with equal hash inputs once
* so that entries for different QOS
* levels, and other non-hash input
* attributes don't unfairly skew
* the length computation
*/
length += has_noalias(rt_hash_table[i].chain, rth);
continue;
}
} else if (!rt_may_expire(rth, tmo, ip_rt_gc_timeout))
goto nofree;

/* Cleanup aged off entries. */
*rthp = rth->dst.rt_next;
rt_free(rth);
/* We only count entries on a chain with equal
* hash inputs once so that entries for
* different QOS levels, and other non-hash
* input attributes don't unfairly skew the
* length computation
*/
tmo >>= 1;
rthp = &rth->dst.rt_next;
length += has_noalias(rt_hash_table[i].chain, rth);
}
spin_unlock_bh(rt_hash_lock_addr(i));
sum += length;
Expand Down

0 comments on commit df67e6c

Please sign in to comment.