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>