em net (optical GigE) driver hangs?

John Polstra jdp at polstra.com
Tue Apr 22 15:27:52 PDT 2003


In article <FE045D4D9F7AED4CBFF1B3B813C8533701B36384 at mail.sandvine.com>,
Don Bowman  <don at sandvine.com> wrote:
> From: John Polstra [mailto:jdp at polstra.com]
> > I think the RELENG_4 version is likely to eliminate the problem.  See
> > the comment near the define of EM_RDTR in if_em.h (in the RELENG_4
> > version of that file, of course).
> 
> We saw that, but we are using DEVICE_POLLING, so assumed it was not
> the issue.

Assuming the RDTR-related hangs are caused by a chip bug, I think they
would happen if the RDTR register was set to a nonzero value, whether
or not you were using interrupts in the device driver.

> We think instead its another problem, which is also solved in the
> RELENG_4 driver, in that em_poll() calls em_start() if device is
> running and there are pkts on the queue. em_start() re-arms the
> timer, holding off the wdog forever.

That may well be true.  But the non-firing of the watchdog timer is a
separate problem from the occurrence of the hangs in the first place.
In other words, if everything were working perfectly you wouldn't need
the watchdog timer at all.

John
-- 
  John Polstra
  John D. Polstra & Co., Inc.                        Seattle, Washington USA
  "Disappointment is a good sign of basic intelligence."  -- Chögyam Trungpa



More information about the freebsd-net mailing list