Bruce M. Simpson wrote:
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,
Whoa, why don't you take it easy on me :) I'm not that much into kernel (or hardware) programming. It's just that reading Ch. 3 of TCP/IP Illustrated Vol.2 by Rich Stevens got me digging around FreeBSD source code dealing with struct ifnet, where this piece of code caught my attention.


but to evaluate your suggested change requires a lot more data. Do you plan to do this?
Perhaps there is already a framework for trying out changes in -CURRENT and seeing their relative impact, so perhaps someone more experienced than I am can see to this?


Given how _IF_DEQUEUE() is normally used the impact is likely negligible.
Oh, I see. A nice first attempt of mine anyway ;) Thanks.
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to