diff --git a/board/linkstation/linkstation.c b/board/linkstation/linkstation.c
index 241cf032d86698dbff68c58f3854317231ced2cb..afb96ae6ce6804c1c7cd887b2be853694790e3cb 100644
--- a/board/linkstation/linkstation.c
+++ b/board/linkstation/linkstation.c
@@ -26,6 +26,7 @@
 #include <mpc824x.h>
 #include <asm/io.h>
 #include <ns16550.h>
+#include <netdev.h>
 
 #ifdef CONFIG_PCI
 #include <pci.h>
@@ -128,3 +129,8 @@ int board_early_init_f (void)
 	out_8((volatile u8*)UART_DCR, 1);
 	return 0;
 }
+
+int board_eth_init(bd_t *bis)
+{
+	return pci_eth_init(bis);
+}
diff --git a/board/r7780mp/r7780mp.c b/board/r7780mp/r7780mp.c
index 19c35d34949d5107a1ab7d3fc63cd8d3e30e4d1b..efbeec97ca67ed18000abd2863a72aad99461e85 100644
--- a/board/r7780mp/r7780mp.c
+++ b/board/r7780mp/r7780mp.c
@@ -23,6 +23,7 @@
 #include <asm/processor.h>
 #include <asm/io.h>
 #include <asm/pci.h>
+#include <netdev.h>
 #include "r7780mp.h"
 
 int checkboard(void)
@@ -77,3 +78,8 @@ void pci_init_board(void)
 {
 	pci_sh7780_init(&hose);
 }
+
+int board_eth_init(bd_t *bis)
+{
+	return pci_eth_init(bis);
+}
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index 7c00926a6de95afdb3ae9eacf29ed161f3b299e7..e9f6391b3c1f57f77a9df7c6939075a82e9f59fc 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -55,6 +55,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <net.h>
+#include <netdev.h>
 #include <asm/io.h>
 #include <pci.h>
 
diff --git a/include/netdev.h b/include/netdev.h
index 3ec9212ce17e3ae56986b4941a4696e35286a0b8..954de39185f6c9f5b3e5abacfec9075b91cb042b 100644
--- a/include/netdev.h
+++ b/include/netdev.h
@@ -46,6 +46,7 @@ int greth_initialize(bd_t *bis);
 int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);
 int mcdmafec_initialize(bd_t *bis);
 int mcffec_initialize(bd_t *bis);
+int rtl8169_initialize(bd_t *bis);
 int skge_initialize(bd_t *bis);
 int uli526x_initialize(bd_t *bis);
 
@@ -56,6 +57,9 @@ int uli526x_initialize(bd_t *bis);
 static inline int pci_eth_init(bd_t *bis)
 {
 	int num = 0;
+#if defined(CONFIG_RTL8169)
+	num += rtl8169_initialize(bis);
+#endif
 #if defined(CONFIG_ULI526)
 	num += uli526x_initialize(bis);
 #endif
diff --git a/net/eth.c b/net/eth.c
index 71feb07a746dc59edfcf6ec24bcb91f109d5c390..69f66b49fa0975d266abe42d8e68a4b47d8fd6da 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -61,7 +61,6 @@ extern int pcnet_initialize(bd_t*);
 extern int plb2800_eth_initialize(bd_t*);
 extern int ppc_4xx_eth_initialize(bd_t *);
 extern int rtl8139_initialize(bd_t*);
-extern int rtl8169_initialize(bd_t*);
 extern int scc_initialize(bd_t*);
 extern int tsi108_eth_initialize(bd_t*);
 extern int npe_initialize(bd_t *);
@@ -250,10 +249,6 @@ int eth_initialize(bd_t *bis)
 #if defined(CONFIG_RTL8139)
 	rtl8139_initialize(bis);
 #endif
-#if defined(CONFIG_RTL8169)
-	rtl8169_initialize(bis);
-#endif
-
 	if (!eth_devices) {
 		puts ("No ethernet found.\n");
 		show_boot_progress (-64);