summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/realtek.c
diff options
context:
space:
mode:
authorMichael Brown2012-08-23 13:25:08 +0200
committerMichael Brown2012-08-23 16:15:35 +0200
commit5d05220ee034bf6989786303d1e195aaf61da986 (patch)
tree9ab67280b38249fda8636d40bfbd84eb12f7b1e5 /src/drivers/net/realtek.c
parent[realtek] Always set high dword of ring address registers (diff)
downloadipxe-5d05220ee034bf6989786303d1e195aaf61da986.tar.gz
ipxe-5d05220ee034bf6989786303d1e195aaf61da986.tar.xz
ipxe-5d05220ee034bf6989786303d1e195aaf61da986.zip
[realtek] Use explicit values for RCR.RXFTH and RCR.MXDMA
Some RTL8169 cards (observed with an RTL8169SC) power up with invalid values in RCR.RXFTH and RCR.MXDMA, causing receive DMA to fail. Fix by setting explicit values for both fields. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/realtek.c')
-rw-r--r--src/drivers/net/realtek.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/drivers/net/realtek.c b/src/drivers/net/realtek.c
index 6a119db3..2dded0a5 100644
--- a/src/drivers/net/realtek.c
+++ b/src/drivers/net/realtek.c
@@ -526,8 +526,10 @@ static int realtek_open ( struct net_device *netdev ) {
/* Configure receiver */
rcr = readl ( rtl->regs + RTL_RCR );
- rcr &= ~( RTL_RCR_RBLEN_MASK );
- rcr |= ( RTL_RCR_RBLEN_DEFAULT | RTL_RCR_WRAP | RTL_RCR_AB |
+ rcr &= ~( RTL_RCR_RXFTH_MASK | RTL_RCR_RBLEN_MASK |
+ RTL_RCR_MXDMA_MASK );
+ rcr |= ( RTL_RCR_RXFTH_DEFAULT | RTL_RCR_RBLEN_DEFAULT |
+ RTL_RCR_MXDMA_DEFAULT | RTL_RCR_WRAP | RTL_RCR_AB |
RTL_RCR_AM | RTL_RCR_APM | RTL_RCR_AAP );
writel ( rcr, rtl->regs + RTL_RCR );