Date: Thu, 24 Aug 2006 23:39:28 +0400 From: Gleb Smirnoff <glebius@FreeBSD.org> To: David Christensen <davidch@broadcom.com> Cc: brad@openbsd.org, oleg@FreeBSD.org, net@FreeBSD.org Subject: Re: bge(4) one packet wedge Message-ID: <20060824193928.GP76666@cell.sick.ru> In-Reply-To: <09BFF2FA5EAB4A45B6655E151BBDD90301D4325E@NT-IRVA-0750.brcm.ad.broadcom.com> References: <20060824060922.GF76666@cell.sick.ru> <09BFF2FA5EAB4A45B6655E151BBDD90301D4325E@NT-IRVA-0750.brcm.ad.broadcom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
David, On Thu, Aug 24, 2006 at 10:29:32AM -0700, David Christensen wrote: D> In general the problem isn't that the status block isn't being updated, D> but that D> the status update occurs AFTER the ISR has stopped looking at the status D> block, but before the ISR has re-enabled interrupts, thus missing the D> update. D> That's why tagged status mode is an improvement, the ISR actively tells D> the D> hardware which status block update it last processed and forces the D> hardware D> to generate another interrupt if a status block update was missed by the D> ISR. My kgdb session shows that the status block is not updated later, after ISR, but isn't updated at all until next packet arrives! It looks like this: once netperf wedges, I run kgdb, find address of softc, look at status block, look that the ring index is the same as saved in softc. It takes a minute for me to type all these things. Status block isn't updated. Then I can look into the ring itself at the index+1 descriptor, and analyze the mbuf inside of it. This mbuf will be that one wedged packet! The packet I would see in tcpdump as soon as I send another one. Ok, can you please review the patch, I've sent earlier today, that utilizes the status block tag correctly? -- Totus tuus, Glebius. GLEBIUS-RIPN GLEB-RIPE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060824193928.GP76666>