]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[realtek] Clear bit 24 of RCR
authorMichael Brown <mcb30@ipxe.org>
Mon, 17 Mar 2014 17:15:18 +0000 (17:15 +0000)
committerMichael Brown <mcb30@ipxe.org>
Thu, 20 Mar 2014 15:54:25 +0000 (15:54 +0000)
commitccb6e5c62737b1fe1b96ed0a9aae691bfa99a830
tree9c0a4ecd2d40b888f72e66c17118177147788113
parent87b59677ba4ae9f1bcb0f685eaa18bb756c48a19
[realtek] Clear bit 24 of RCR

On an Asus Z87-K motherboard with an onboard 8168 NIC, booting into
Windows 7 and then warm rebooting into iPXE results in a broken RX
datapath: packets can be transmitted successfully but garbage is
received.  A cold reboot clears the problem.

A dump of the PHY registers reveals only one difference: in the
failure case the bits ADVERTISE_PAUSE_CAP and ADVERTISE_PAUSE_ASYM are
cleared.  Explicitly setting these bits does not fix the problem.

A dump of the MAC registers reveals a few differences, of which the
most obvious culprit is the undocumented bit 24 of the Receive
Configuration Register (RCR), which is set in the failure case.
Explicitly clearing this bit does fix the problem.

Reported-by: Sebastian Nielsen <ipxe@sebbe.eu>
Reported-by: Oliver Rath <rath@mglug.de>
Debugged-by: Sebastian Nielsen <ipxe@sebbe.eu>
Tested-by: Sebastian Nielsen <ipxe@sebbe.eu>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/realtek.c
src/drivers/net/realtek.h