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 =3D {buffer_addr =3D 0x12a128800, length =3D 0x5ea, csum =3D 0x3c2b, = status =3D 0x0, > =A0errors =3D 0x0, special =3D 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>