Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Dec 1995 22:10:14 +0200
From:      Dmitry Kohmanyuk <dk@snark.ukma.kiev.ua>
To:        freebsd-hardware@freebsd.org
Cc:        dk@farm.org
Subject:   cannot recognize ne2000-compatible card
Message-ID:  <199512252010.WAA06538@snark.ukma.kiev.ua>

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

well, I have already submitted a problem (i386/906), but it seems that
I should expose this to wider audience...
Anyone who could speak about Ethernet hardware, please help a poor
little soul (i.e., me!).  

I have a notebook (486 slc25, 6megs of RAM), and want to make
it to be my travelling internetter's workhorse. (or workpony ;-))
It is named "DTR-1", and the company name is Dauphin.
It has built-in ethernet card, which is said to be built around
the NS's DP83905 chip, and controller name is "AT/LANTIC".
The great diagnostics/setup program which comes with the machine
allows me to snoop packets, change ethernet address, and read/write
card's buffer memory, as well as change port base, irq and other things
(the card/machine has a NVRAM for this).

The netboot code just hangs when attempting to recognize the card.

>From reading the source, I understood that it first test for card
being 8-bit by writing 8k to its memory, than reading it back and comparing
(an I right?).  It fails this test (when I patched it to succeed it, 
it gave me an address of 0:0:c0:c0:ec:ec, while real card's address is
0:c0:ec:2:18:d9 (btw, what's the vendor?)

So I assume that the card is 16-bit (what does this mean?  I just understand
that memory mapping is different with different card types). Well, 
It hangs (machine needs cold-reset) just in probe routine, 
somewhere in this code:

	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 "));		/* added by me - never reached */
	if (!bcompare(testbuf, test, sizeof(test))) return (0);
 
The card's setup program has an option to select between 16k memory
("emulation of Novell and WD memory size  16K") and 64K.
I have tried both settings.  The card's diagnostics says that 
"8-bit slot detected" regardless of setting. 
when I select 16k memory, the addresses at 16k, 32k, and 48k are
mapped to the same position of board's ram as ones at 0k (verified
using diags program).

The card has "shared memory" mode and "I/O port" mode.  Which one
should I use for netboot?  I have tried both. 

I am sure the card works, since I can catch ICMP packets from ping
by diags program (I have set ARP address manually on the host I am pinging
from, of course).

any clues, please. 
I am ready to hack the damn diags programs to machine instructions 
if this would help. I just need some advice/hint.

btw, the packet driver for ne2000 recognizes the card, but I wasn't able
to use any packet-driver-aware program (haven't done any tcp/ip under
DOS before, though, so this can be just my fault).





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