tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Using multiple interfaces (3+) causes intermittent system freezes on NetBSD 5.1_STABLE and later... [was: NetBSD 5 partly freezing, may be related to 802.1Q]

  I would be happy to try out the patch, if it's possible. 
  (And it would also be nice if this patch could be pulled up before
  NetBSD 6.0 RELEASE is tagged.)

I will try to dig it out reasonably quickly, but it's non-trivial and I
can't publish the repository it's in.

If your systems is running fine with 1 or 2 interfaces on the quad-port
card, you are likely not having the problem the patch fixes.  The
symptoms of the bug are that no packets can be received on an interface
(because there are no mbufs on the receive ring, and none free), but the
system mostly works otherwise.

If you want to see if you are having the rx ring bug, in if_bnx.c, where
it tries to get a replacment mbuf for one that's being passed up, add a
KASSERT that the new mbuf is non-NULL.  Right now it tries to change the
ring to have fewer mbufs, but the code is very wrong.  If you don't hit
that KASSERT, our fix won't help you.  Look for the code

                        if (bnx_get_buf(sc, &sw_prod, &sw_chain_prod,
                            &sw_prod_bseq)) {
                                DBRUN(BNX_WARN, aprint_debug_dev(sc->bnx_dev,
                                    "Failed to allocate "
                                    "new mbuf, incoming frame dropped!\n"));

The quad-port bug is a total hang, with NMI about the only thing that
works.  It happens from (I think) using interfaces on both halves of the
bridge at the same time.

Attachment: pgpDAREi3SBsI.pgp
Description: PGP signature

Home | Main Index | Thread Index | Old Index