netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* dst->obsolete has become pointless
@ 2011-11-05  3:09 David Miller
  2011-11-08  9:34 ` Steffen Klassert
  0 siblings, 1 reply; 10+ messages in thread
From: David Miller @ 2011-11-05  3:09 UTC (permalink / raw)
  To: netdev; +Cc: steffen.klassert, timo.teras


While researching the things unearthed by Steffen Klassert wrt. PMTU
handling in the current tree I went to do some research on what the
real story is wrt. dst->obsolete.

And sure enough EVERY SINGLE ipv4 and ipv6 route is created with
obsolete set to -1, so we unconditionally always invoke ->dst_check().

This makes it completely pointless as an optimization to avoid calling
the dst_ops->dst_check() method.  It never triggers.

This stems from Timo's change to make route expiry properly visible
to IPSEC stacked routes:

--
commit d11a4dc18bf41719c9f0d7ed494d295dd2973b92
Author: Timo Teräs <timo.teras@iki.fi>
Date:   Thu Mar 18 23:20:20 2010 +0000

    ipv4: check rt_genid in dst_check
...
--

Only DecNET creates routes with obsolete initially set to zero, and
therefore only hits ->dst_check() when dst_free is invoked on the route
during a flush of the decnet routing tables.

And actually this is how ipv4 operated before we started using
generation counts instead of flushing the entire table.  IPV6 seems to
always have used the FIB6 tree serial numbers for expiration checking
and therefore always set obsolete to -1 on new routes.

So we can't just get rid of the dst->obsolete check in dst_check() and
__sk_dst_check() because that will break DecNET because DecNET's
->dst_check() handler assumes that if it was called then the route
is obsolete and it just plainly returns NULL to tell the caller the
route is in fact invalid.

The current situation looks quite terrible, because these functions look
like they optimize away the check op call, but in reality for ipv4 and
ipv6 they do not.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-11-10  0:47 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-05  3:09 dst->obsolete has become pointless David Miller
2011-11-08  9:34 ` Steffen Klassert
2011-11-08 17:20   ` David Miller
2011-11-08 18:59     ` David Miller
2011-11-09 12:49       ` Joe Perches
2011-11-09 19:20         ` David Miller
2011-11-09 23:56           ` Joe Perches
2011-11-10  0:24             ` David Miller
2011-11-10  0:33               ` Eric Dumazet
2011-11-10  0:47                 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).