Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Jul 2002 17:48:22 -0700
From:      David Greenman-Lawrence <dg@root.com>
To:        Mike Silbersack <silby@silby.com>
Cc:        Peter Wemm <peter@wemm.org>, Luigi Rizzo <luigi@FreeBSD.org>, Don Lewis <dl-freebsd@catspoiler.org>, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/fxp if_fxp.c
Message-ID:  <20020708174822.B72088@nexus.root.com>
In-Reply-To: <20020708171914.C19349-100000@patrocles.silby.com>; from silby@silby.com on Mon, Jul 08, 2002 at 05:28:48PM -0500
References:  <20020708215808.B34E53808@overcee.wemm.org> <20020708171914.C19349-100000@patrocles.silby.com>

next in thread | previous in thread | raw e-mail | index | archive | help
>There must be an oddity in how the fxp driver handles the timeout handling
>vs other drivers.
>
>Hm, I see the problem.  The fxp driver releases transmit mbufs in both
>fxp_intr _and_ in fxp_tick.  fxp_tick needs code such as:
>
>
>        for (txp = sc->cbl_first; sc->tx_queued &&
>            (txp->cb_status & FXP_CB_STATUS_C) != 0;
>            txp = txp->next) {
>                if (txp->mb_head != NULL) {
>                        m_freem(txp->mb_head);
>                        txp->mb_head = NULL;
>                }
>                sc->tx_queued--;
>        }
>        sc->cbl_first = txp;
>+	if (sc->tx_queued == 0)
>+		ifp->if_timer = 0;
>
>Give that a whirl and see if it solves the problem.

   Yes, that should fix the problem.

-DG

D.G.Lawrence
Download Technologies, Inc. - http://www.downloadtech.com - (866) 399 8500
TeraSolutions, Inc. - http://www.terasolutions.com - (503) 288 9544
The FreeBSD Project - http://www.freebsd.org
Pave the road of life with opportunities.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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