Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jun 2002 00:52:53 -0700
From:      Luigi Rizzo <rizzo@icir.org>
To:        Mike Silbersack <silby@silby.com>
Cc:        net@FreeBSD.ORG
Subject:   Re: interface stalling on tx ?
Message-ID:  <20020628005253.B55603@iguana.icir.org>
In-Reply-To: <20020628022611.K70821-100000@patrocles.silby.com>; from silby@silby.com on Fri, Jun 28, 2002 at 02:35:20AM -0500
References:  <20020627230348.A54937@iguana.icir.org> <20020628022611.K70821-100000@patrocles.silby.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jun 28, 2002 at 02:35:20AM -0500, Mike Silbersack wrote:
...
> The watchdog timer code in most of the drivers is rather conservative, and
> may not detect mid-transfer stalls.  I'll use the dc driver as an example:
> 
> In dc_start, if_timer = 5 is set.  Then, in dc_txeof, if_timer = 0,
> disabling the watchdog timer.  This means that after a _single_ frame is
> sent, any subsequent stall will not be recovered from by the watchdog.

ok, i think this is exactly the problem, and "conservative" is
an understatement, I would call that plain broken :)

Your fix seems the correct way to handle the problem,
I wonder if there is an easy way to put something like
this in a generic procedure (such as ether_output_frame)
that is called by all drivers instead of relying on the
individual drivers to do the right thing each one in its
own way...

> In the vr driver, we were having problems where such stalls could be
> caused by high load, and the ifconfig up / down process was getting
> annoying to users.  I worked around this by setting if_timer = 5 every
> time vr_txeof was entered, only setting if_timer = 0 at the point when the
> _entire_ transmit buffer list was emptied.
> 
> (See if_vr.c rev 1.49 to see how I did it in that driver.)
> 
> You should be able to do something similar in all of the drivers, and I
> have indeed thought of doing so.  Could you code up and test such a patch
> for whatever card you are using in your test environment to see if it
> is a successful workaround?

yes i will try it tonight.

	thanks
	luigi

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




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