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