Skip site navigation (1)Skip section navigation (2)
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>