Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Dec 1995 22:40:41 +0200
From:      Dmitry Kohmanyuk <dk@snark.ukma.kiev.ua>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   i386/906: netboot ca't find NE2000-compat card (DP83905 chip, Dauphin notebook)
Message-ID:  <199512202040.WAA03820@snark.ukma.kiev.ua>
Resent-Message-ID: <199512202100.NAA15389@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         906
>Category:       i386
>Synopsis:       /sys/i386/boot/netboot/nb8390.com cannot recognize NE2000-comp. card
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Dec 20 13:00:02 PST 1995
>Last-Modified:
>Originator:     Dmitry Kohmanyuk
>Organization:
FARM Computing Association
>Release:        FreeBSD snark.ukma.kiev.ua 2.0.5-RELEASE
>Environment:

	
	I have Douphin DTR-1 notebook (bought it yesterday).
	It is 486SLC (no coprocessor), has 6 megs of RAM, small HD,
	and built-in Ethernet card.  

	The documentation claims that the card is NE-2000 compatible,
	based on DP83905 chip from NS, controller is AT/LANTIC,
	connection is TP, RJ-45,
	and it has 8K x 8 static RAM buffer (so, should be fast),
	256 bit EEPROM (for port/irq/etc setup), 16 byte FIFO.
	Then, doc says:  "Mode:  I/O Port mode, 
		compatible with 8BIT Mode offered by Novell NE2000" 

>Description:

	I try to setup my notebook to be a diskless FreeBSD workstation
	(I think it should work fine at least in text mode).

	I boot bare-bones DOS (F5 on boot), run the supplied "lanon"
	program (it enables the card); the light on hub goes on after that).
	I run the setup/diagnostic program in "packet sniffer" mode and it 
	indeed shows all my rwho packets flowing on the wire (and some others, too).
	The setup/diag program, when tests reading NIC regs, says: "8 bit slot found",
	so I assume card should work in 8-bit mode.

	I already have 2 diskless PCs running FreeBSD (2.0.5 and 2.1) here.
	Then, I run nb8390.com program (from floppy).
	I know there can be some problems with supplied nb8390.com since it's configured
	to probe for both WD and NE, so I built a custom version which probes only for NE.  

	the stock version says, "No adapter found".  My version (that same file
	which boots 2 other boxes) hangs.

	The card is set to port 0x300, irq 5.  The boot program is set to port 0x300.
	I have patched source to insert some debug printf's, and found that it
	fails testing for 8-bit card, and hangs when testing for 16-bit card.
	I have read the if_ed.c from 2.0.5 (it seems 2.1 is the same for NE2000s),
	and copied the ed_probe_generic8390() code to test the board. it succeeds!
	This is a relevant piece of code from /sys/i386/boot/netboot/ns8390.c
	(DPRINTF() and DELAY() are mine, as well as long if() followed by goto):

	[ the last thing printed is ne-3, so it hangs before ne-3.1 ]
	[ note that bcompare() returns 1 on memory equal, unlike bcmp() ]

	[...]
                DPRINTF(("NE*000 card... "));
                eth_bmem = (char *)0;           /* No shared memory */
                eth_asic_base = NE_BASE + NE_ASIC_OFFSET;
                eth_nic_base = NE_BASE;
                eth_vendor = VENDOR_NOVELL;
                eth_flags = FLAG_PIO;
                eth_memsize = MEM_16384;
                eth_tx_start = 32;
                c = inb(eth_asic_base + NE_RESET);
                outb(eth_asic_base + NE_RESET, c);
                DELAY(5000);
                inb(0x84);
                outb(eth_nic_base + D8390_P0_COMMAND, D8390_COMMAND_STP |
                        D8390_COMMAND_RD2);
                DELAY(5000);
                DPRINTF(("ne-1 "));
                /* dk: test for 8390 chip, from 2.0.5's driver */
                if ((inb(eth_nic_base + D8390_P0_COMMAND) &
                     (D8390_COMMAND_RD2 | D8390_COMMAND_TXP |
                      D8390_COMMAND_STA | D8390_COMMAND_STP)) !=
                     (D8390_COMMAND_RD2 | D8390_COMMAND_STP) ||
                    (inb(eth_nic_base + D8390_P0_ISR) & D8390_ISR_RST) != D8390_ISR_RST)
                        goto no_novell;
                DPRINTF(("ne-1.2 "));
                outb(eth_nic_base + D8390_P0_RCR, D8390_RCR_MON);
                outb(eth_nic_base + D8390_P0_DCR, D8390_DCR_FT1 | D8390_DCR_LS);
                outb(eth_nic_base + D8390_P0_PSTART, MEM_8192);
                outb(eth_nic_base + D8390_P0_PSTOP, MEM_16384);
                DPRINTF(("ne-2 "));
                eth_pio_write(test, 8192, sizeof(test));
                eth_pio_read(8192, testbuf, sizeof(test));
                if (!bcompare(test, testbuf, sizeof(test))) {
                        DPRINTF(("ne-3 "));
                        eth_flags |= FLAG_16BIT;
                        eth_memsize = MEM_32768;
                        eth_tx_start = 64;
                        outb(eth_nic_base + D8390_P0_DCR, D8390_DCR_WTS |
                                D8390_DCR_FT1 | D8390_DCR_LS);
                        outb(eth_nic_base + D8390_P0_PSTART, MEM_16384);
                        outb(eth_nic_base + D8390_P0_PSTOP, MEM_32768);
                        eth_pio_write(test, 16384, sizeof(test));
                        eth_pio_read(16384, testbuf, sizeof(test));
                        DPRINTF(("ne-3.1 "));
                        if (!bcompare(testbuf, test, sizeof(test))) return (0);
                }
                DPRINTF(("ne-4 "));
                eth_pio_read(0, romdata, 16);
                DPRINTF(("ne-5 "));
                printf("\r\nNE1000/NE2000 base 0x%x, addr ", eth_nic_base);
	[...]

	I have tried to enable shared memory mode.
	I have tried to set 64K mode instead of 16K ("Novell-compatible" as setup prog
		says)

	I have "CHRDY after BALE high", "IO16 after strobe", "read cycles enhanced",
	"TPI link integrity checking enabled" settings, but I haven't touched them.

	I have written down the NIC registers (thanks great diag program
	which comes with board!)
	CR	22
	TSK	83
	ISR	15
	IMR	00
	RSR	11
	RCR	1C
	TCR	00
	DCR	58
	although I doubt this is relevant here.

>How-To-Repeat:

	just run the nb8390.com program.

>Fix:
	
	none known ;-( 

	sorry for this long report, I have tried to provide _ALL_ the info 
	which can help.

>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512202040.WAA03820>