On Fri, 2005-01-07 at 10:26, Tommy Christensen wrote:
> On Fri, 2005-01-07 at 14:32, jamal wrote:
> > On Thu, 2005-01-06 at 10:06, Tommy Christensen wrote:
[..]
> > reseting qdisc could certainly be part of the device watchdog.
> > Note that once the packets are drained, the next thing that will happen
> > if device is stopped for a dev->timeout period is watchdog kicking in
> > and flushing the DMA. So you could reset your qdisc there though i am
> > not sure it will be needed with that patch.
>
> Unfortunately the watchdog won't do this when carrier is off, which
> is fair enough since the chip isn't hung as such.
We may have to kick the dog in that path as well then.
> So, we would need another method to flush out stale packets from
> the DMA ring. Some drivers already do this themselves, and some won't
> need it because they keep on running even when link is down.
kicking tx_timeout seems like the right thing to do until i looked at
the drivers. Sigh. I just stared at a few drivers and it is not pleasant
- and they mostly have the same theme (so you cant say they are
inconsistent).
Looking at e1000 for example is quiet interesting - it actually brings
down then up the device ;-> This will both flash the dma and reset qdisc
but also loose any static routes. It will also reschedule the device;-<
So i am not so sure that the dog kicking in a minute later is a good
thing at all. We may need a lot of janitorial work to cleanse the
drivers - something jgarzik is against.
A qdisc_reset, as you suggest, will probably not cure the problem but
provide some cosmetics. Thoughts?
cheers,
jamal
|