Date: Thu, 12 Apr 2012 15:40:27 -0400 From: Ryan Stone <rysto32@gmail.com> To: Konstantin Belousov <kostikbel@gmail.com> Cc: jfv@freebsd.org, Jack Vogel <jfvogel@gmail.com>, John Baldwin <jhb@freebsd.org>, net@freebsd.org Subject: Re: 82574L hangs (with r233708 e1000 driver). Message-ID: <CAFMmRNyWaf88Exn1OKPDjyqsbNTGvHzv0DiHvy0O-uTDkPkNWg@mail.gmail.com> In-Reply-To: <20120412183849.GA2358@deviant.kiev.zoral.com.ua> References: <20120407133715.GU2358@deviant.kiev.zoral.com.ua> <CAFOYbc=hFg_jvohPVQrp4M%2BXQztoO6b-9Pop=PrVn6VxP6oaHQ@mail.gmail.com> <20120408051125.GA2358@deviant.kiev.zoral.com.ua> <201204091219.39580.jhb@freebsd.org> <20120412183849.GA2358@deviant.kiev.zoral.com.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Apr 12, 2012 at 2:38 PM, Konstantin Belousov
<kostikbel@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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFMmRNyWaf88Exn1OKPDjyqsbNTGvHzv0DiHvy0O-uTDkPkNWg>
