82574L hangs (with r233708 e1000 driver).

Ryan Stone rysto32 at gmail.com
Thu Apr 12 19:40:28 UTC 2012


On Thu, Apr 12, 2012 at 2:38 PM, Konstantin Belousov
<kostikbel at gmail.com> wrote:
> And, on receive, the atom board does receive interrupts, em0:rx 0 counter
> in vmstat -i increases. Even more fun, the sysctl dev.em.0.debug
> shows increasing hw rdh (as I understand, this is hardware 'last
> received' packet pointer for rx ring). So I looked at the packet
> descriptor at hw rdt index, and there I see
> (kgdb) p/x ((struct adapter *)0xffffff80010e4000)->rx_rings->rx_base[78]
> $11 = {buffer_addr = 0x12a128800, length = 0x5ea, csum = 0x3c2b, status = 0x0,
>  errors = 0x0, special = 0x0}

This looks like a buffer address, not a written-back
descriptor(0x12a128800 being aligned to a 2048 byte boundary is a big
clue).  Is it easy to check the mbuf in
rx_rings->rx_buffers[78].m_head and see whether the buffer in the mbuf
there has that physical address?

If that is a buffer address then the driver must be updating
descriptors in rx_base that are owned by hardware, or somehow
forgetting to update rdt and rxr->next_to_check.


More information about the freebsd-net mailing list