Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Sep 2004 03:43:59 -0000
From:      "Max Laier" <max@love2party.net>
To:        <pf4freebsd@freelists.org>
Cc:        freebsd-altq@rofug.ro
Subject:   [pf4freebsd] Patch: if_tun.c (forgot the polling)
Message-ID:  <003501c35b54$c5187240$01000001@max900>

next in thread | raw e-mail | index | archive | help
Here is a patch for if_tun.c. This should finally enable tun(4) for
queueing. In my earlier patch sent to Dennis I forgot to modify the polling
as well:
<snip>
@@ -838,12 +861,14 @@
        struct tun_softc *tp = dev->si_drv1;
        struct ifnet    *ifp = &tp->tun_if;
        int             revents = 0;
+       struct mbuf     *m;

        s = splimp();
        TUNDEBUG("%s%d: tunpoll\n", ifp->if_name, ifp->if_unit);

        if (events & (POLLIN | POLLRDNORM)) {
-               if (ifp->if_snd.ifq_len > 0) {
+               IFQ_POLL_NOLOCK(&ifp->if_snd, m);
+               if (m != NULL) {
                        TUNDEBUG("%s%d: tunpoll q=%d\n", ifp->if_name,
                            ifp->if_unit, ifp->if_snd.ifq_len);
                        revents |= events & (POLLIN | POLLRDNORM);
<snap>

I hope this now really does the trick. Tests with Daniel's ACKPRI-Tutorial
show good results.

@Dennis: What patch format is best for you to incooperate into your release?
This one is a unified diff against unpatched source.

Regards,
    Max


-- Binary/unsupported file stripped by Ecartis --
-- Type: application/octet-stream
-- File: if_tun.c.diff






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?003501c35b54$c5187240$01000001>