Date: Thu, 27 Oct 2011 09:47:00 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r226831 - head/sys/contrib/pf/net Message-ID: <201110270947.p9R9l0XF095217@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: glebius Date: Thu Oct 27 09:47:00 2011 New Revision: 226831 URL: http://svn.freebsd.org/changeset/base/226831 Log: Utilize new IF_DEQUEUE_ALL(ifq, m) macro in pfsyncintr() to reduce contention on ifqueue lock. Modified: head/sys/contrib/pf/net/if_pfsync.c Modified: head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- head/sys/contrib/pf/net/if_pfsync.c Thu Oct 27 09:45:12 2011 (r226830) +++ head/sys/contrib/pf/net/if_pfsync.c Thu Oct 27 09:47:00 2011 (r226831) @@ -3290,16 +3290,17 @@ void pfsyncintr(void *arg) { struct pfsync_softc *sc = arg; - struct mbuf *m; + struct mbuf *m, *n; CURVNET_SET(sc->sc_ifp->if_vnet); pfsync_ints++; - for (;;) { - IF_DEQUEUE(&sc->sc_ifp->if_snd, m); - if (m == 0) - break; + IF_DEQUEUE_ALL(&sc->sc_ifp->if_snd, m); + for (; m != NULL; m = n) { + + n = m->m_nextpkt; + m->m_nextpkt = NULL; if (ip_output(m, NULL, NULL, IP_RAWOUTPUT, &sc->sc_imo, NULL) == 0) V_pfsyncstats.pfsyncs_opackets++;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201110270947.p9R9l0XF095217>