Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!simtel!zombie.ncsc.mil!news.mathworks.com!newsfeed.internetmci.com!news.msfc.nasa.gov!sol.ctr.columbia.edu!startide.ctr.columbia.edu!wpaul From: wpaul@ctr.columbia.edu (Bill Paul) Newsgroups: comp.unix.bsd.freebsd.misc Subject: Re: HELP! dual 3c503 cards Date: 3 Nov 1995 15:57:46 GMT Organization: Columbia University Center for Telecommunications Research Lines: 165 Distribution: usa Message-ID: <47de5q$ga7@sol.ctr.columbia.edu> References: <47b9ki$389@news.cerf.net> NNTP-Posting-Host: startide.ctr.columbia.edu X-Newsreader: TIN [version 1.2 PL2] Daring to challenge the will of the almighty Leviam00se, Henry Castro (microcdm@nic.cerf.net) had the courage to say: : Hello, : I'm trying to set up a box with 2 cards in it. I've hacked the kernel for : device issues, they're set at ed0 and ed1. I can get one to go but not : both, anybody have a clue? All help appreciated. : thanks, : henry : hcastro@microcadam.com You're being wonderfully non-specific here. _HOW_ did you hack the kernel? _WHAT_ is the nature of the problem with the second card? What _VERSION_ of FreeBSD are you using? We need details, dammit! We're not mind readers. Say what error messages you encountered or what sort of failure you noticed; _THEN_ maybe somebody can tell you what your problem is. People, take note: 'it doesn't work' is not a problem report. It's a joke, and it's one I'm getting really tired of hearing. That said, there's no reason you can't get two 3c503 cards working together in a FreeBSD system. I built an IP router this way: FreeBSD 2.0.5-RELEASE #0: Thu Jun 29 14:28:14 EDT 1995 wpaul@ieor-gw2:/usr/src/sys/compile/IEOR_GW CPU: i486DX (486-class CPU) real memory = 8290304 (2024 pages) avail memory = 7426048 (1813 pages) Probing for devices on the ISA bus: sc0 at 0x60-0x6f irq 1 on motherboard sc0: VGA mono <16 virtual consoles, flags=0x0> ed0 at 0x250-0x25f irq 3 maddr 0xc8000 msize 8192 on isa ed0: address 02:60:8c:db:63:c3, type 3c503 (16 bit) bpf: ed0 attached ed1 at 0x350-0x35f irq 4 maddr 0xcc000 msize 8192 on isa ed1: address 02:60:8c:db:64:b6, type 3c503 (16 bit) bpf: ed1 attached fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa fdc0: NEC 72065B fd0: 1.44MB 3.5in wdc0 at 0x1f0-0x1f7 irq 14 on isa wdc0: unit 0 (wd0): <WDC AC1170> wd0: 162MB (333300 sectors), 1010 cyls, 6 heads, 55 S/T, 512 B/S npx0 on motherboard npx0: INT 16 interface bpf: lo0 attached The machine is a Dell 486 desktop (ISA -- no, really). I turned off the serial ports in the CMOS configuration since I didn't need them for this system, and I wanted to free up their IRQ lines. Note that the 3c503 can only be configured to one of four possible IRQs: 2,3,4 and 5. This means you can't have more than four of them in the system at once. Also, the older 8-bit models tend to have somewhat sub-par performance; they work well enough for most things, but they can give you grief with NFS unless you reduce your NFS blocksizes from 8K to 4K. The cards I used are newer 16-bit models; they can handle NFS no problem (though I'm not using NFS with this machine). Here's the kernel config file I'm using: # # IEOR_GW -- Generic machine with WD (IDE) family disks and two # ethernet adapters. (This machine is a router.) # # machine "i386" cpu "I486_CPU" ident IEOR_GW maxusers 10 options INET #InterNETworking options FFS #Berkeley Fast Filesystem options PROCFS #Process filesystem options "COMPAT_43" #Compatible with BSD 4.3 options UCONSOLE #Allow users to grab the console options GATEWAY #We forward packets options ARP_PROXYALL #Hoo boy! config vmunix root on wd0 controller isa0 # Only one floppy drive in this machine controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr disk fd0 at fdc0 drive 0 # Only one disk in this machine controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 # Console driver device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr # FPU (math co-processor) device npx0 at isa? port "IO_NPX" irq 13 vector npxintr # Two ethernet devices device ed0 at isa? port 0x250 net irq 3 iomem 0xc8000 vector edintr device ed1 at isa? port 0x350 net irq 4 iomem 0xcc000 vector edintr pseudo-device loop pseudo-device ether pseudo-device log pseudo-device pty 32 pseudo-device bpfilter 4 # Berkeley Packet Filter (for tcpdump) pseudo-device gzip # Exec gzipped a.out's Note that I have turned on global proxy arp with ARP_PROXYALL. This is because both interfaces have IP addresses in the same subnet. This is a hack, but it's a working hack, so I'm not complaining. You'll also note that I used IRQs 3 and 4 for the ethernet cards. As I said, I disabled the serial ports so that these would be free. You can use any combination of 2,3,4 and 5 that suits you. You need to jumper the cards for seperate I/O addresses (0x250 and 0x350 in my case) and seperate shared memory base addresses (0xc800 and 0xcc00, again in my case). You do NOT jumper select the IRQ with the 3c503 adapter. You just tell the driver what IRQ you want to use and the driver will program the card to use it (as long as it's free). Only the I/O address and shared memory base address need to be set with jumpers. As a last detail, the interface that connects to the campus network (ed1) is hooked up via its AUI port. By default, the 'ed' driver configures the 3c503 to use is on-board transceiver, which means it comes up expecting to use the BNC/TP connector instead. There are two ways to make it switch to the AUI port: 1) Use the 'link2' option when ifconfig-ing the device: # ifconfig ed1 inet xxx.xxx.xxx.xxx link2 netmask 0xffffff00 2) Change the default behavior of the driver by specifying a 'flags' argument in the kernel config file (please excuse the long line): device ed1 at isa? port 0x350 net irq 4 flags 0x0001 iomem 0xcc000 vector edintr If you examine /sys/i386/isa/if_edreg.h, you'll see what flags are supported by the driver and what they do. Generally, this method is only needed if you're going to be configuring a kernel for a diskless machine that needs to have its ethernet interface working immediately. I used method 1; I tend to see one 'ed1: device timeout' error when the system starts up, but after that it works fine. If you set the option flags such that the driver initializes the AUI port by default, you don't get the timeout. -Bill -- ============================================================================= -Bill Paul (212) 854-6020 | System Manager Work: wpaul@ctr.columbia.edu | Center for Telecommunications Research Home: wpaul@skynet.ctr.columbia.edu | Columbia University, New York City ============================================================================= License error: The license for this .sig file has expired. You must obtain a new license key before any more witty phrases will appear in this space. =============================================================================