Panic in 6.2-PRERELEASE with bge on amd64

Bruce Evans bde at zeta.org.au
Wed Jan 10 02:42:49 UTC 2007


On Tue, 9 Jan 2007, John Baldwin wrote:

> On Tuesday 09 January 2007 09:37, Sven Willenberger wrote:
>> On Tue, 2007-01-09 at 12:50 +1100, Bruce Evans wrote:
>>> Oops.  I should have asked for the statment in bge_rxeof().
>>
>> #7  0xffffffff801d5f17 in bge_rxeof (sc=0xffffffff8836b000)
> at /usr/src/sys/dev/bge/if_bge.c:2528
>> 2528                    m->m_pkthdr.len = m->m_len = cur_rx->bge_len -
> ETHER_CRC_LEN;
>>
>> (where m is defined as:
>> 2449                 struct mbuf             *m = NULL;
>> )
>
> It's assigned earlier in between those two places.

Its initialization here is just a style bug.

> Can you 'p rxidx' as well
> as 'p sc->bge_cdata.bge_rx_std_chain[rxidx]' and 'p
> sc->bge_cdata.bge_rx_jumbo_chain[rxidx]'?  Also, are you using jumbo frames
> at all?

Also look at nearby chain entries (especially at (rxidx - 1) mod 512)).
I think the previous 255 entries and the rxidx one should be
non-NULL since we should have refilled them as we used them (so the
one at rxidx is least interesting since we certainly just refilled
it), and the next 256 entries should be NULL since we bogusly only use
half of the entries.  If the problem is uninitialization, then I expect
all 512 entries except the one just refilled at rxidx to be NULL.

Bruce


More information about the freebsd-stable mailing list