net: updating dst lastusage is an unlikely event.
authorPaolo Abeni <pabeni@redhat.com>
Tue, 24 Oct 2017 10:41:01 +0000 (12:41 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 27 Oct 2017 02:52:52 +0000 (11:52 +0900)
Since commit 0da4af00b2ed ("ipv6: only update __use and lastusetime
once per jiffy at most"), updating the dst lastuse field is an
unlikely action: it happens at most once per jiffy, out of
potentially millions of calls per second.

Mark explicitly the code as such, and let the compiler generate
better code.

Note: gcc 7.2 and several older versions do actually generate
different - better - code when the unlikely() hint is in place,
avoid jump in the fast path and keeping better code locality.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/dst.h

index 5047e8053d6ca9900664631646cebe31eb04af15..2f53ecc2c296351c68f22a307d4f711e1176f446 100644 (file)
@@ -257,7 +257,7 @@ static inline void dst_hold(struct dst_entry *dst)
 
 static inline void dst_use_noref(struct dst_entry *dst, unsigned long time)
 {
-       if (time != dst->lastuse) {
+       if (unlikely(time != dst->lastuse)) {
                dst->__use++;
                dst->lastuse = time;
        }