From 022a33775582d842aa03f4fc145ab90b8746b89b Mon Sep 17 00:00:00 2001 From: hosokawa Date: Sat, 22 Jan 2000 17:24:16 +0000 Subject: Don't execute MAC address initialization for non-pccard sn devices. --- sys/dev/sn/if_sn.c | 13 +++++++------ sys/dev/sn/if_sn_isa.c | 7 +++++++ sys/dev/sn/if_sn_pccard.c | 5 ++++- sys/dev/sn/if_snvar.h | 1 + 4 files changed, 19 insertions(+), 7 deletions(-) (limited to 'sys/dev/sn') diff --git a/sys/dev/sn/if_sn.c b/sys/dev/sn/if_sn.c index e03e868..cbc18d9 100644 --- a/sys/dev/sn/if_sn.c +++ b/sys/dev/sn/if_sn.c @@ -190,13 +190,14 @@ sn_attach(device_t dev) i = inw(BASE + CONFIG_REG_W); printf(i & CR_AUI_SELECT ? "AUI" : "UTP"); - for (j = 0; j < 3; j++) { - u_short w; + if (sc->pccard_enaddr) + for (j = 0; j < 3; j++) { + u_short w; - w = (u_short)sc->arpcom.ac_enaddr[j * 2] | - (((u_short)sc->arpcom.ac_enaddr[j * 2 + 1]) << 8); - outw(BASE + IAR_ADDR0_REG_W + j * 2, w); - } + w = (u_short)sc->arpcom.ac_enaddr[j * 2] | + (((u_short)sc->arpcom.ac_enaddr[j * 2 + 1]) << 8); + outw(BASE + IAR_ADDR0_REG_W + j * 2, w); + } /* * Read the station address from the chip. The MAC address is bank 1, diff --git a/sys/dev/sn/if_sn_isa.c b/sys/dev/sn/if_sn_isa.c index 0922d44..1ff9de4 100644 --- a/sys/dev/sn/if_sn_isa.c +++ b/sys/dev/sn/if_sn_isa.c @@ -70,6 +70,13 @@ sn_isa_probe (device_t dev) static int sn_isa_attach (device_t dev) { +#if 0 /* currently not tested */ + struct sn_softc *sc = device_get_softc(dev); +#endif + +#if 0 /* currently not tested */ + sc->pccard_enaddr = 0; +#endif return (0); } diff --git a/sys/dev/sn/if_sn_pccard.c b/sys/dev/sn/if_sn_pccard.c index 5af8405..018646e 100644 --- a/sys/dev/sn/if_sn_pccard.c +++ b/sys/dev/sn/if_sn_pccard.c @@ -72,11 +72,14 @@ sn_pccard_attach(device_t dev) u_char sum; u_char ether_addr[ETHER_ADDR_LEN]; + sc->pccard_enaddr = 0; pccard_get_ether(dev, ether_addr); for (i = 0, sum = 0; i < ETHER_ADDR_LEN; i++) sum |= ether_addr[i]; - if (sum) + if (sum) { + sc->pccard_enaddr = 1; bcopy(ether_addr, sc->arpcom.ac_enaddr, ETHER_ADDR_LEN); + } return (sn_attach(dev)); } diff --git a/sys/dev/sn/if_snvar.h b/sys/dev/sn/if_snvar.h index 105a84d..4d7b1d8 100644 --- a/sys/dev/sn/if_snvar.h +++ b/sys/dev/sn/if_snvar.h @@ -47,6 +47,7 @@ struct sn_softc { int irq_rid; struct resource *port_res; int port_rid; + int pccard_enaddr; /* MAC address in pccard CIS tupple */ }; int sn_probe(device_t, int); -- cgit v1.1