Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 May 2008 16:41:03 +0100
From:      "Bruce M. Simpson" <bms@FreeBSD.org>
To:        rihad <rihad@mail.ru>
Cc:        freebsd-net@freebsd.org
Subject:   Re: if_var.h micro-optimization
Message-ID:  <4840200F.6070602@FreeBSD.org>
In-Reply-To: <483FFE36.7050006@mail.ru>
References:  <483FFE36.7050006@mail.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
rihad wrote:
> Not sure if this is a worthwhile optimization? FreeBSD 7.0
>
> --- /usr/src/sys/net/if_var.h   2007-12-07 09:46:08.000000000 +0400
> +++ if_var.h    2008-05-30 18:10:25.000000000 +0500
> @@ -282,7 +282,8 @@
>         if (m) {                                                \
>                 if (((ifq)->ifq_head = (m)->m_nextpkt) == NULL) \
>                         (ifq)->ifq_tail = NULL;                 \
> -               (m)->m_nextpkt = NULL;                          \
> +               else                                            \
> +                       (m)->m_nextpkt = NULL;                  \
>                 (ifq)->ifq_len--;                               \
>         }                                                       \
>  } while (0)

It could save dirtying an L2 data cache line at the expense of taking a 
conditional branch, but to evaluate your suggested change requires a lot 
more data. Do you plan to do this? Given how _IF_DEQUEUE() is normally 
used the impact is likely negligible.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4840200F.6070602>