Subject: port-amiga/1478: if_ed.c bug fix for port-amiga
To: None <gnats-bugs@gnats.netbsd.org>
From: Jukka Marin <jmarin@metso.jmp.fi>
List: netbsd-bugs
Date: 09/19/1995 13:22:44
>Number: 1478
>Category: port-amiga
>Synopsis: corrupted Ethernet addresses
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: gnats-admin (GNATS administrator)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Sep 19 06:35:01 1995
>Last-Modified:
>Originator: Jukka Marin
>Organization:
JMP-Electronics
>Release: <NetBSD-current source date> 950826
>Environment:
Amiga, NetBSD-current, if_ed.c ethernet driver
System: NetBSD silakka.jmp.fi 1.0A NetBSD 1.0A (SILAKKA) #27: Mon Sep 18 15:51:26 EET DST 1995 jmarin@silakka.jmp.fi:/local/src/sys/arch/amiga/compile/SILAKKA amiga
>Description:
Hydra Ethernet driver if_ed.c gets a wrong Ethernet hardware address from
the Hydra card if there are interrupts pending on the card. This prevents
reboots using /dev/reload if the machine is connected to an active network
and the network interface hasn't been shut down first.
The cause of the problem is the fact that the interrupt output of the 8390
Ethernet chip is connected to one address line of the Ethernet address PROM.
The the interrupt is active, the address PROM supplies the name of the
Hydra card designer instead of an Ethernet address. The name doesn't
correspond to a valid Ethernet address, so the system will be inaccessible
fro the network until a reboot.
>How-To-Repeat:
Activate the network interface, start moving data in the network and do a
reboot using cp /netbsd /dev/reload. If an interrupt occurs in the 8390
chip before the Ethernet address is read, the address read is wrong. Note
the Ethernet address reported in the boot messages: 47:52:41:48:41:4d
('GRAHAM' in ASCII).
>Fix:
The 8390 chip's interrupts must be disabled and cleared before reading the
Ethernet address from PROM.
1c1
< /* $NetBSD: if_ed.c,v 1.15 1995/07/02 00:16:03 jmarin Exp $ */
---
> /* $NetBSD: if_ed.c,v 1.14 1995/07/02 00:16:03 mycroft Exp $ */
228,229d227
< NIC_PUT(sc, ED_P0_IMR, 0x00); /* disable ints */
< NIC_PUT(sc, ED_P0_ISR, 0xff); /* clear ints */
>Audit-Trail:
>Unformatted: