From 0eaa901ba762df1c82c0d50fea2f3baafc40289e Mon Sep 17 00:00:00 2001 From: Roger Hardiman Date: Fri, 24 Nov 2000 17:36:07 +0000 Subject: Print a warning when we detect a Realtek 8139B chip (identified by the IO map being 256 bytes long instead of 128) This chip works very unreliably on my Lanner embedded PC with the rl driver. Lots of watchdog timeouts or poor performance. Forcing the media type to 10 Meg (ifconfig rl0 media 10baseT/UTP) is a good workaround. This looks very similar to the problem reported in PR kern/18790 It is interesting to note that the linux driver has lots of special case code for this chip. --- sys/pci/if_rl.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'sys/pci') diff --git a/sys/pci/if_rl.c b/sys/pci/if_rl.c index 2657ddff57a6..7fb1415a3010 100644 --- a/sys/pci/if_rl.c +++ b/sys/pci/if_rl.c @@ -863,6 +863,16 @@ static int rl_attach(dev) goto fail; } + /* Detect the Realtek 8139B. For some reason, this chip is very + * unstable when left to autoselect the media + * The best workaround is to set the device to the required + * media type or to set it to the 10 Meg speed. + */ + + if ((rman_get_end(sc->rl_res)-rman_get_start(sc->rl_res))==0xff) { + printf("rl%d: Realtek 8139B detected. Warning, this may be unstable in autoselect mode\n", unit); + } + sc->rl_btag = rman_get_bustag(sc->rl_res); sc->rl_bhandle = rman_get_bushandle(sc->rl_res); -- cgit v1.2.3