Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Dec 1995 17:50:34 +0200 (UKR)
From:      Dmitry Kohmanyuk <dk@mammoth.cs.kiev.ua>
To:        graichen@omega.physik.fu-berlin.de (Thomas Graichen)
Cc:        dk+@ua.net, bugs@freebsd.org
Subject:   Re: i386/906: netboot ca't find NE2000-compat card (DP83905 chip, Dauphin notebook)
Message-ID:  <199512211550.RAA09925@mammoth.cs.kiev.ua>
In-Reply-To: <199512211018.LAA02275@mordillo> from "Thomas Graichen" at Dec 21, 95 11:18:12 am

next in thread | previous in thread | raw e-mail | index | archive | help
Sometimes, Thomas Graichen wrote:
> this came up some time before - it works if you uncomment the other
> types wd etc. - but this is only a hack

	have you read my report carefully?
	when I run stock program (compiled for everything I beleive),
	it can't recognize the card.

	when I run custom-compiled version with only NE enabled
	(I am sure my card is NE-compatible), it hangs the system.

	I have tried to locate exact place of code where it hangs, 
	and I hope I succeeded. 

	What hack do you mean?  I can't understand, please explain.

	can NE-2000 board be used by FreeBSD's netboot loader
	in 8-bit mode?

dk.

> t
> 
> hasn't Dmitry Kohmanyuk said ? ...
> > 
> > 
> > >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:
> > 
> > 
> 
>   _______________________________________________________||___________________
>                                                    __||
>   Perfection is reached, not when there is no  __||     thomas graichen
>   longer anything to add, but when there   __||    freie universitaet berlin
>   is no longer anything to take away   __||           fachbereich physik
>                                    __||                      
>   - Antoine de Saint-Exupery - __||        graichen@mail.physik.fu-berlin.de
>   ___________________________||__________________graichen@FreeBSD.org_________
> 




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