summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/clock_subr.c2
-rw-r--r--sys/dev/clock_subr.h2
-rw-r--r--sys/dev/dec/if_le_dec.c9
-rw-r--r--sys/dev/eisa/files.eisa4
-rw-r--r--sys/dev/eisa/if_ep_eisa.c6
-rw-r--r--sys/dev/eisa/if_fea.c13
-rw-r--r--sys/dev/ic/aha.c2
-rw-r--r--sys/dev/ic/ahareg.h2
-rw-r--r--sys/dev/ic/ahavar.h2
-rw-r--r--sys/dev/ic/am7990.c43
-rw-r--r--sys/dev/ic/am7990reg.h2
-rw-r--r--sys/dev/ic/am7990var.h10
-rw-r--r--sys/dev/ic/elink3.c77
-rw-r--r--sys/dev/ic/elink3var.h4
-rw-r--r--sys/dev/ic/mb86960.c72
-rw-r--r--sys/dev/ic/mb86960var.h72
-rw-r--r--sys/dev/ic/ncr53c9x.c2
-rw-r--r--sys/dev/ic/ncr53c9xreg.h2
-rw-r--r--sys/dev/ic/ncr53c9xvar.h2
-rw-r--r--sys/dev/ic/pdq_ifsubr.c37
-rw-r--r--sys/dev/ic/pdqvar.h7
-rw-r--r--sys/dev/isa/aha_isa.c2
-rw-r--r--sys/dev/isa/files.isa18
-rw-r--r--sys/dev/isa/if_ate.c72
-rw-r--r--sys/dev/isa/if_ed.c71
-rw-r--r--sys/dev/isa/if_eg.c48
-rw-r--r--sys/dev/isa/if_el.c42
-rw-r--r--sys/dev/isa/if_ep_isa.c7
-rw-r--r--sys/dev/isa/if_fe.c72
-rw-r--r--sys/dev/isa/if_fmv.c72
-rw-r--r--sys/dev/isa/if_hp.c12
-rw-r--r--sys/dev/isa/if_ie.c113
-rw-r--r--sys/dev/isa/if_iy.c298
-rw-r--r--sys/dev/isa/if_le_isa.c29
-rw-r--r--sys/dev/isa/if_levar.h4
-rw-r--r--sys/dev/ofw/files.ofw2
-rw-r--r--sys/dev/ofw/ofnet.c31
-rw-r--r--sys/dev/pci/files.pci6
-rw-r--r--sys/dev/pci/if_de.c58
-rw-r--r--sys/dev/pci/if_devar.h40
-rw-r--r--sys/dev/pci/if_ep_pci.c6
-rw-r--r--sys/dev/pci/if_fpa.c19
-rw-r--r--sys/dev/pci/if_le_pci.c9
-rw-r--r--sys/dev/pci/if_levar.h4
-rw-r--r--sys/dev/tc/files.tc4
-rw-r--r--sys/dev/tc/if_fta.c9
-rw-r--r--sys/dev/tc/if_le_dec.c9
-rw-r--r--sys/dev/tc/if_le_ibus.c4
-rw-r--r--sys/dev/tc/if_le_ioasic.c4
-rw-r--r--sys/dev/tc/if_le_tc.c4
-rw-r--r--sys/dev/tc/if_levar.h4
51 files changed, 810 insertions, 635 deletions
diff --git a/sys/dev/clock_subr.c b/sys/dev/clock_subr.c
index 087259b4894..f4a344637ba 100644
--- a/sys/dev/clock_subr.c
+++ b/sys/dev/clock_subr.c
@@ -1,4 +1,4 @@
-/* $NetBSD: clock_subr.c,v 1.2 1997/02/20 00:32:15 gwr Exp $ */
+/* $NetBSD: clock_subr.c,v 1.3 1997/03/15 18:11:16 is Exp $ */
/*
* Copyright (c) 1988 University of Utah.
diff --git a/sys/dev/clock_subr.h b/sys/dev/clock_subr.h
index 0b790f2e806..05bf362da99 100644
--- a/sys/dev/clock_subr.h
+++ b/sys/dev/clock_subr.h
@@ -1,4 +1,4 @@
-/* $NetBSD: clock_subr.h,v 1.1 1997/02/19 23:29:28 gwr Exp $ */
+/* $NetBSD: clock_subr.h,v 1.2 1997/03/15 18:11:17 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
diff --git a/sys/dev/dec/if_le_dec.c b/sys/dev/dec/if_le_dec.c
index 50094f17fdb..599c41ba526 100644
--- a/sys/dev/dec/if_le_dec.c
+++ b/sys/dev/dec/if_le_dec.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_le_dec.c,v 1.3 1996/10/13 01:38:38 christos Exp $ */
+/* $NetBSD: if_le_dec.c,v 1.4 1997/03/15 18:12:04 is Exp $ */
/*-
* Copyright (c) 1995 Charles M. Hannum. All rights reserved.
@@ -49,10 +49,11 @@
#include <sys/device.h>
#include <net/if.h>
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#include <dev/ic/am7990reg.h>
@@ -87,8 +88,8 @@ dec_le_common_attach(sc, eap)
/*
* Get the ethernet address out of rom
*/
- for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++) {
- sc->sc_arpcom.ac_enaddr[i] = *eap;
+ for (i = 0; i < sizeof(sc->sc_enaddr); i++) {
+ sc->sc_enaddr[i] = *eap;
eap += 4;
}
diff --git a/sys/dev/eisa/files.eisa b/sys/dev/eisa/files.eisa
index b7e8ad1b158..1c09760a581 100644
--- a/sys/dev/eisa/files.eisa
+++ b/sys/dev/eisa/files.eisa
@@ -1,4 +1,4 @@
-# $NetBSD: files.eisa,v 1.12 1996/09/01 00:10:55 mycroft Exp $
+# $NetBSD: files.eisa,v 1.13 1997/03/15 18:11:18 is Exp $
#
# Config.new file and device description for machine-independent EISA code.
# Included by ports that need it. Requires that the SCSI files be
@@ -34,6 +34,6 @@ attach ep at eisa with ep_eisa
file dev/eisa/if_ep_eisa.c ep_eisa
# DEC DEFEA EISA FDDI Controller
-device fea: pdq, fddi, ifnet
+device fea: pdq, fddi, ifnet, arp
attach fea at eisa
file dev/eisa/if_fea.c fea
diff --git a/sys/dev/eisa/if_ep_eisa.c b/sys/dev/eisa/if_ep_eisa.c
index f202a234214..e9d6b09f88f 100644
--- a/sys/dev/eisa/if_ep_eisa.c
+++ b/sys/dev/eisa/if_ep_eisa.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_ep_eisa.c,v 1.10 1997/02/18 10:51:06 jonathan Exp $ */
+/* $NetBSD: if_ep_eisa.c,v 1.11 1997/03/15 18:11:19 is Exp $ */
/*
* Copyright (c) 1994 Herb Peyerl <hpeyerl@beer.org>
@@ -44,15 +44,15 @@
#include <net/if.h>
#include <net/if_dl.h>
+#include <net/if_ether.h>
#include <net/if_types.h>
-#include <net/netisr.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
diff --git a/sys/dev/eisa/if_fea.c b/sys/dev/eisa/if_fea.c
index a0f1474c96d..fa83fdc63bf 100644
--- a/sys/dev/eisa/if_fea.c
+++ b/sys/dev/eisa/if_fea.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_fea.c,v 1.12 1997/03/05 08:02:03 mikel Exp $ */
+/* $NetBSD: if_fea.c,v 1.13 1997/03/15 18:11:20 is Exp $ */
/*-
* Copyright (c) 1995, 1996 Matt Thomas <matt@3am-software.com>
@@ -50,7 +50,10 @@
#include <net/if.h>
#include <net/if_types.h>
#include <net/if_dl.h>
-#include <net/route.h>
+
+#if defined(__NetBSD__)
+#include <net/if_ether.h>
+#endif
#include "bpfilter.h"
#if NBPFILTER > 0
@@ -63,8 +66,12 @@
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
+#if defined(__NetBSD__)
+#include <netinet/if_inarp.h>
+#else
#include <netinet/if_ether.h>
#endif
+#endif
#if defined(__FreeBSD__)
#include <netinet/if_fddi.h>
@@ -521,8 +528,6 @@ pdq_eisa_attach(
return;
}
- bcopy((caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes, sc->sc_ac.ac_enaddr, 6);
-
pdq_ifattach(sc, pdq_eisa_ifwatchdog);
if (eisa_intr_map(ea->ea_ec, irq, &ih)) {
diff --git a/sys/dev/ic/aha.c b/sys/dev/ic/aha.c
index 490f25c0f1f..149b2f5b5c5 100644
--- a/sys/dev/ic/aha.c
+++ b/sys/dev/ic/aha.c
@@ -1,4 +1,4 @@
-/* $NetBSD: aha.c,v 1.2 1997/02/26 04:52:13 sommerfe Exp $ */
+/* $NetBSD: aha.c,v 1.3 1997/03/15 18:11:21 is Exp $ */
#undef AHADIAG
#ifdef DDB
diff --git a/sys/dev/ic/ahareg.h b/sys/dev/ic/ahareg.h
index 922276e53d5..7b6ca0fd7ea 100644
--- a/sys/dev/ic/ahareg.h
+++ b/sys/dev/ic/ahareg.h
@@ -1,4 +1,4 @@
-/* $NetBSD: ahareg.h,v 1.1 1997/02/07 17:37:29 mycroft Exp $ */
+/* $NetBSD: ahareg.h,v 1.2 1997/03/15 18:11:23 is Exp $ */
/*
* Copyright (c) 1994, 1996 Charles M. Hannum. All rights reserved.
diff --git a/sys/dev/ic/ahavar.h b/sys/dev/ic/ahavar.h
index 541201eb99e..5e75c42ee77 100644
--- a/sys/dev/ic/ahavar.h
+++ b/sys/dev/ic/ahavar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: ahavar.h,v 1.1 1997/02/07 17:37:30 mycroft Exp $ */
+/* $NetBSD: ahavar.h,v 1.2 1997/03/15 18:11:23 is Exp $ */
/*
* Copyright (c) 1994, 1996 Charles M. Hannum. All rights reserved.
diff --git a/sys/dev/ic/am7990.c b/sys/dev/ic/am7990.c
index 862705e37bb..6ef25bf32a2 100644
--- a/sys/dev/ic/am7990.c
+++ b/sys/dev/ic/am7990.c
@@ -1,4 +1,4 @@
-/* $NetBSD: am7990.c,v 1.25 1997/03/09 21:12:39 leo Exp $ */
+/* $NetBSD: am7990.c,v 1.26 1997/03/15 18:11:25 is Exp $ */
/*-
* Copyright (c) 1995 Charles M. Hannum. All rights reserved.
@@ -52,10 +52,12 @@
#include <sys/errno.h>
#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
@@ -96,7 +98,7 @@ integrate void am7990_read __P((struct am7990_softc *, int, int));
hide void am7990_shutdown __P((void *));
-#define ifp (&sc->sc_arpcom.ac_if)
+#define ifp (&sc->sc_ethercom.ec_if)
#ifdef sun3 /* XXX what do we do about this?! --thorpej */
static inline u_int16_t ether_cmp __P((void *, void *));
@@ -162,7 +164,7 @@ am7990_config(sc)
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, sc->sc_enaddr);
#if NBPFILTER > 0
bpfattach(&ifp->if_bpf, ifp, DLT_EN10MB, sizeof(struct ether_header));
@@ -193,7 +195,7 @@ am7990_config(sc)
panic("am7990_config: weird memory size");
}
- printf(": address %s\n", ether_sprintf(sc->sc_arpcom.ac_enaddr));
+ printf(": address %s\n", ether_sprintf(sc->sc_enaddr));
printf("%s: %d receive buffers, %d transmit buffers\n",
sc->sc_dev.dv_xname, sc->sc_nrbuf, sc->sc_ntbuf);
@@ -253,12 +255,12 @@ am7990_meminit(sc)
#endif
init.init_mode = LE_MODE_NORMAL;
init.init_padr[0] =
- (sc->sc_arpcom.ac_enaddr[1] << 8) | sc->sc_arpcom.ac_enaddr[0];
+ (LLADDR(ifp->if_sadl)[1] << 8) | LLADDR(ifp->if_sadl)[0];
init.init_padr[1] =
- (sc->sc_arpcom.ac_enaddr[3] << 8) | sc->sc_arpcom.ac_enaddr[2];
+ (LLADDR(ifp->if_sadl)[3] << 8) | LLADDR(ifp->if_sadl)[2];
init.init_padr[2] =
- (sc->sc_arpcom.ac_enaddr[5] << 8) | sc->sc_arpcom.ac_enaddr[4];
- am7990_setladrf(&sc->sc_arpcom, init.init_ladrf);
+ (LLADDR(ifp->if_sadl)[5] << 8) | LLADDR(ifp->if_sadl)[4];
+ am7990_setladrf(&sc->sc_ethercom, init.init_ladrf);
sc->sc_last_rd = 0;
sc->sc_first_td = sc->sc_last_td = sc->sc_no_td = 0;
@@ -489,7 +491,7 @@ am7990_read(sc, boff, len)
*/
if ((ifp->if_flags & IFF_PROMISC) != 0 &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- ETHER_CMP(eh->ether_dhost, sc->sc_arpcom.ac_enaddr)) {
+ ETHER_CMP(eh->ether_dhost, LLADDR(ifp->if_sadl))) {
m_freem(m);
return;
}
@@ -505,7 +507,7 @@ am7990_read(sc, boff, len)
* destination address (garbage will usually not match).
* Of course, this precludes multicast support...
*/
- if (ETHER_CMP(eh->ether_dhost, sc->sc_arpcom.ac_enaddr) &&
+ if (ETHER_CMP(eh->ether_dhost, LLADDR(ifp->if_sadl)) &&
ETHER_CMP(eh->ether_dhost, etherbroadcastaddr)) {
m_freem(m);
return;
@@ -866,7 +868,7 @@ am7990_ioctl(ifp, cmd, data)
#ifdef INET
case AF_INET:
am7990_init(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -876,11 +878,12 @@ am7990_ioctl(ifp, cmd, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
- else
+ *(union ns_host *)LLADDR(ifp->if_sadl);
+ else {
bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ LLADDR(ifp->if_sadl),
+ sizeof(sc->sc_enaddr));
+ }
/* Set new address. */
am7990_init(sc);
break;
@@ -937,8 +940,8 @@ am7990_ioctl(ifp, cmd, data)
case SIOCADDMULTI:
case SIOCDELMULTI:
error = (cmd == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom) :
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom) :
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -1028,10 +1031,10 @@ am7990_xmit_print(sc, no)
*/
void
am7990_setladrf(ac, af)
- struct arpcom *ac;
+ struct ethercom *ac;
u_int16_t *af;
{
- struct ifnet *ifp = &ac->ac_if;
+ struct ifnet *ifp = &ac->ec_if;
struct ether_multi *enm;
register u_char *cp, c;
register u_int32_t crc;
diff --git a/sys/dev/ic/am7990reg.h b/sys/dev/ic/am7990reg.h
index 6c5a5e52d6a..04faaf9576b 100644
--- a/sys/dev/ic/am7990reg.h
+++ b/sys/dev/ic/am7990reg.h
@@ -1,4 +1,4 @@
-/* $NetBSD: am7990reg.h,v 1.2 1997/03/09 21:12:41 leo Exp $ */
+/* $NetBSD: am7990reg.h,v 1.3 1997/03/15 18:11:26 is Exp $ */
/*-
* Copyright (c) 1995 Charles M. Hannum. All rights reserved.
diff --git a/sys/dev/ic/am7990var.h b/sys/dev/ic/am7990var.h
index 1e65cdfbe1e..dcb4e490e7e 100644
--- a/sys/dev/ic/am7990var.h
+++ b/sys/dev/ic/am7990var.h
@@ -1,4 +1,4 @@
-/* $NetBSD: am7990var.h,v 1.10 1997/03/09 21:12:42 leo Exp $ */
+/* $NetBSD: am7990var.h,v 1.11 1997/03/15 18:11:27 is Exp $ */
/*
* Copyright (c) 1995 Charles M. Hannum. All rights reserved.
@@ -41,7 +41,7 @@
* Ethernet software status per device.
*
* Each interface is referenced by a network interface structure,
- * arpcom.ac_if, which the routing code uses to locate the interface.
+ * ethercom.ec_if, which the routing code uses to locate the interface.
* This structure contains the output queue for the interface, its address, ...
*
* NOTE: this structure MUST be the first element in machine-dependent
@@ -52,7 +52,7 @@
*/
struct am7990_softc {
struct device sc_dev; /* base device glue */
- struct arpcom sc_arpcom; /* Ethernet common part */
+ struct ethercom sc_ethercom; /* Ethernet common part */
/*
* Memory functions:
@@ -110,6 +110,8 @@ struct am7990_softc {
#ifdef LEDEBUG
int sc_debug;
#endif
+ u_int8_t sc_enaddr[6];
+ u_int8_t sc_pad[2];
};
/* Export this to machine-dependent drivers. */
@@ -120,7 +122,7 @@ void am7990_init __P((struct am7990_softc *));
int am7990_ioctl __P((struct ifnet *, u_long, caddr_t));
void am7990_meminit __P((struct am7990_softc *));
void am7990_reset __P((struct am7990_softc *));
-void am7990_setladrf __P((struct arpcom *, u_int16_t *));
+void am7990_setladrf __P((struct ethercom *, u_int16_t *));
void am7990_start __P((struct ifnet *));
void am7990_stop __P((struct am7990_softc *));
void am7990_watchdog __P((struct ifnet *));
diff --git a/sys/dev/ic/elink3.c b/sys/dev/ic/elink3.c
index c57ce59a4e7..95144d6b4d4 100644
--- a/sys/dev/ic/elink3.c
+++ b/sys/dev/ic/elink3.c
@@ -1,4 +1,4 @@
-/* $NetBSD: elink3.c,v 1.20 1997/02/18 10:51:15 jonathan Exp $ */
+/* $NetBSD: elink3.c,v 1.21 1997/03/15 18:11:29 is Exp $ */
/*
* Copyright (c) 1996, 1997 Jonathan Stone <jonathan@NetBSD.org>
@@ -44,17 +44,17 @@
#include <sys/device.h>
#include <net/if.h>
-#include <net/netisr.h>
#include <net/if_dl.h>
+#include <net/if_ether.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -143,10 +143,11 @@ epconfig(sc, chipset)
struct ep_softc *sc;
u_short chipset;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
u_int16_t i;
+ u_int8_t myla[6];
printf("%s: ", sc->sc_dev.dv_xname);
@@ -169,11 +170,11 @@ epconfig(sc, chipset)
if (epbusyeeprom(sc))
return;
x = bus_space_read_2(iot, ioh, EP_W0_EEPROM_DATA);
- sc->sc_arpcom.ac_enaddr[(i << 1)] = x >> 8;
- sc->sc_arpcom.ac_enaddr[(i << 1) + 1] = x;
+ myla[(i << 1)] = x >> 8;
+ myla[(i << 1) + 1] = x;
}
- printf("MAC address %s\n", ether_sprintf(sc->sc_arpcom.ac_enaddr));
+ printf("MAC address %s\n", ether_sprintf(myla));
/*
* Vortex-based (3c59x, eisa)? and Boomerang (3c900)cards allow
@@ -258,10 +259,10 @@ epconfig(sc, chipset)
IFF_BROADCAST | IFF_SIMPLEX | IFF_NOTRAILERS | IFF_MULTICAST;
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, myla);
#if NBPFILTER > 0
- bpfattach(&sc->sc_arpcom.ac_if.if_bpf, ifp, DLT_EN10MB,
+ bpfattach(&sc->sc_ethercom.ec_if.if_bpf, ifp, DLT_EN10MB,
sizeof(struct ether_header));
#endif
@@ -419,7 +420,7 @@ void
epinit(sc)
register struct ep_softc *sc;
{
- register struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ register struct ifnet *ifp = &sc->sc_ethercom.ec_if;
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
int i;
@@ -445,7 +446,7 @@ epinit(sc)
GO_WINDOW(2);
for (i = 0; i < 6; i++) /* Reload the ether_addr. */
bus_space_write_1(iot, ioh, EP_W2_ADDR_0 + i,
- sc->sc_arpcom.ac_enaddr[i]);
+ LLADDR(ifp->if_sadl)[i]);
/*
* Reset the station-address receive filter.
@@ -501,7 +502,7 @@ void
epsetfilter(sc)
register struct ep_softc *sc;
{
- register struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ register struct ifnet *ifp = &sc->sc_ethercom.ec_if;
GO_WINDOW(1); /* Window 1 is operating window */
bus_space_write_2(sc->sc_iot, sc->sc_ioh, EP_COMMAND, SET_RX_FILTER |
@@ -519,7 +520,7 @@ void
epsetlink(sc)
register struct ep_softc *sc;
{
- register struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ register struct ifnet *ifp = &sc->sc_ethercom.ec_if;
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
@@ -748,26 +749,26 @@ epstatus(sc)
GO_WINDOW(1);
if (fifost & FIFOS_RX_UNDERRUN) {
- if (sc->sc_arpcom.ac_if.if_flags & IFF_DEBUG)
+ if (sc->sc_ethercom.ec_if.if_flags & IFF_DEBUG)
printf("%s: RX underrun\n", sc->sc_dev.dv_xname);
epreset(sc);
return 0;
}
if (fifost & FIFOS_RX_STATUS_OVERRUN) {
- if (sc->sc_arpcom.ac_if.if_flags & IFF_DEBUG)
+ if (sc->sc_ethercom.ec_if.if_flags & IFF_DEBUG)
printf("%s: RX Status overrun\n", sc->sc_dev.dv_xname);
return 1;
}
if (fifost & FIFOS_RX_OVERRUN) {
- if (sc->sc_arpcom.ac_if.if_flags & IFF_DEBUG)
+ if (sc->sc_ethercom.ec_if.if_flags & IFF_DEBUG)
printf("%s: RX overrun\n", sc->sc_dev.dv_xname);
return 1;
}
if (fifost & FIFOS_TX_OVERRUN) {
- if (sc->sc_arpcom.ac_if.if_flags & IFF_DEBUG)
+ if (sc->sc_ethercom.ec_if.if_flags & IFF_DEBUG)
printf("%s: TX overrun\n", sc->sc_dev.dv_xname);
epreset(sc);
return 0;
@@ -793,14 +794,14 @@ eptxstat(sc)
bus_space_write_1(iot, ioh, EP_W1_TX_STATUS, 0x0);
if (i & TXS_JABBER) {
- ++sc->sc_arpcom.ac_if.if_oerrors;
- if (sc->sc_arpcom.ac_if.if_flags & IFF_DEBUG)
+ ++sc->sc_ethercom.ec_if.if_oerrors;
+ if (sc->sc_ethercom.ec_if.if_flags & IFF_DEBUG)
printf("%s: jabber (%x)\n",
sc->sc_dev.dv_xname, i);
epreset(sc);
} else if (i & TXS_UNDERRUN) {
- ++sc->sc_arpcom.ac_if.if_oerrors;
- if (sc->sc_arpcom.ac_if.if_flags & IFF_DEBUG)
+ ++sc->sc_ethercom.ec_if.if_oerrors;
+ if (sc->sc_ethercom.ec_if.if_flags & IFF_DEBUG)
printf("%s: fifo underrun (%x) @%d\n",
sc->sc_dev.dv_xname, i,
sc->tx_start_thresh);
@@ -810,9 +811,9 @@ eptxstat(sc)
sc->tx_succ_ok = 0;
epreset(sc);
} else if (i & TXS_MAX_COLLISION) {
- ++sc->sc_arpcom.ac_if.if_collisions;
+ ++sc->sc_ethercom.ec_if.if_collisions;
bus_space_write_2(iot, ioh, EP_COMMAND, TX_ENABLE);
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
} else
sc->tx_succ_ok = (sc->tx_succ_ok+1) & 127;
}
@@ -825,7 +826,7 @@ epintr(arg)
register struct ep_softc *sc = arg;
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
u_int16_t status;
int ret = 0;
@@ -851,8 +852,8 @@ epintr(arg)
if (status & S_RX_COMPLETE)
epread(sc);
if (status & S_TX_AVAIL) {
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
- epstart(&sc->sc_arpcom.ac_if);
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
+ epstart(&sc->sc_ethercom.ec_if);
}
if (status & S_CARD_FAILURE) {
printf("%s: adapter failure (%x)\n",
@@ -876,7 +877,7 @@ epread(sc)
{
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
struct mbuf *m;
struct ether_header *eh;
int len;
@@ -944,7 +945,7 @@ again:
*/
if ((ifp->if_flags & IFF_PROMISC) &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, LLADDR(sc->sc_ethercom.ec_if.if_sadl),
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return;
@@ -1000,7 +1001,7 @@ epget(sc, totlen)
{
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
struct mbuf *top, **mp, *m;
int len, remaining;
int sh;
@@ -1153,7 +1154,7 @@ epioctl(ifp, cmd, data)
#ifdef INET
case AF_INET:
epinit(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(&sc->sc_ethercom.ec_if, ifa);
break;
#endif
#ifdef NS
@@ -1162,12 +1163,12 @@ epioctl(ifp, cmd, data)
register struct ns_addr *ina = &IA_SNS(ifa)->sns_addr;
if (ns_nullhost(*ina))
- ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
+ ina->x_host = *(union ns_host *)
+ LLADDR(ifp->if_sadl);
else
bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ LLADDR(ifp->if_sadl),
+ ifp->if_addrlen);
/* Set new address. */
epinit(sc);
break;
@@ -1209,8 +1210,8 @@ epioctl(ifp, cmd, data)
case SIOCADDMULTI:
case SIOCDELMULTI:
error = (cmd == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom) :
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom) :
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -1250,7 +1251,7 @@ epwatchdog(ifp)
struct ep_softc *sc = ifp->if_softc;
log(LOG_ERR, "%s: device timeout\n", sc->sc_dev.dv_xname);
- ++sc->sc_arpcom.ac_if.if_oerrors;
+ ++sc->sc_ethercom.ec_if.if_oerrors;
epreset(sc);
}
diff --git a/sys/dev/ic/elink3var.h b/sys/dev/ic/elink3var.h
index 89617f80d15..0ddc9391fb7 100644
--- a/sys/dev/ic/elink3var.h
+++ b/sys/dev/ic/elink3var.h
@@ -1,4 +1,4 @@
-/* $NetBSD: elink3var.h,v 1.10 1997/02/18 10:51:17 jonathan Exp $ */
+/* $NetBSD: elink3var.h,v 1.11 1997/03/15 18:11:30 is Exp $ */
/*
* Copyright (c) 1994 Herb Peyerl <hpeyerl@beer.org>
@@ -37,7 +37,7 @@ struct ep_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* Ethernet common part */
+ struct ethercom sc_ethercom; /* Ethernet common part */
bus_space_tag_t sc_iot; /* bus cookie */
bus_space_handle_t sc_ioh; /* bus i/o handle */
u_int ep_connectors; /* Connectors on this card. */
diff --git a/sys/dev/ic/mb86960.c b/sys/dev/ic/mb86960.c
index e56539bdf14..1a0d48e545c 100644
--- a/sys/dev/ic/mb86960.c
+++ b/sys/dev/ic/mb86960.c
@@ -58,14 +58,15 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -167,7 +168,7 @@ struct fe_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* ethernet common */
+ struct ethercom sc_ethercom; /* ethernet common */
/* Set by probe() and not modified in later phases. */
enum fe_type type; /* interface type code */
@@ -194,10 +195,9 @@ struct fe_softc {
/* Multicast address filter management. */
u_char filter_change; /* MARs must be changed ASAP. */
u_char filter[FE_FILTER_LEN]; /* new filter value. */
-};
-/* Frequently accessed members in arpcom. */
-#define sc_enaddr sc_arpcom.ac_enaddr
+ u_int8_t sc_enaddr[ETHER_ADDR_LEN];
+};
/* Standard driver entry points. These can be static. */
int feprobe __P((struct device *, void *, void *));
@@ -224,7 +224,7 @@ void fe_xmit __P((struct fe_softc *));
void fe_write_mbufs __P((struct fe_softc *, struct mbuf *));
static inline
void fe_droppacket __P((struct fe_softc *));
-void fe_getmcaf __P((struct arpcom *, u_char *));
+void fe_getmcaf __P((struct ethercom *, u_char *));
void fe_setmode __P((struct fe_softc *));
void fe_loadmar __P((struct fe_softc *));
#if FE_DEBUG >= 1
@@ -994,7 +994,7 @@ feattach(parent, self, aux)
struct fe_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
struct cfdata *cf = sc->sc_dev.dv_cfdata;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Stop the 86960. */
fe_stop(sc);
@@ -1063,11 +1063,11 @@ feattach(parent, self, aux)
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, sc->sc_enaddr);
/* Print additional info when attached. */
printf(": address %s, type %s\n",
- ether_sprintf(sc->sc_arpcom.ac_enaddr), sc->typestr);
+ ether_sprintf(sc->sc_enaddr), sc->typestr);
#if FE_DEBUG >= 3
{
int buf, txb, bbw, sbw, ram;
@@ -1214,7 +1214,7 @@ fe_watchdog(ifp)
#endif
/* Record how many packets are lost by this accident. */
- sc->sc_arpcom.ac_if.if_oerrors += sc->txb_sched + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_oerrors += sc->txb_sched + sc->txb_count;
fe_reset(sc);
}
@@ -1237,7 +1237,7 @@ void
fe_init(sc)
struct fe_softc *sc;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int i;
#if FE_DEBUG >= 3
@@ -1399,7 +1399,7 @@ fe_xmit(sc)
* We use longer timeout for multiple packet transmission.
* I'm not sure this timer value is appropriate. FIXME.
*/
- sc->sc_arpcom.ac_if.if_timer = 1 + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_timer = 1 + sc->txb_count;
/* Update txb variables. */
sc->txb_sched = sc->txb_count;
@@ -1577,7 +1577,7 @@ fe_tint(sc, tstat)
struct fe_softc *sc;
u_char tstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int left;
int col;
@@ -1716,7 +1716,7 @@ fe_rint(sc, rstat)
struct fe_softc *sc;
u_char rstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int len;
u_char status;
int i;
@@ -1898,7 +1898,7 @@ feintr(arg)
if (sc->filter_change &&
sc->txb_count == 0 && sc->txb_sched == 0) {
fe_loadmar(sc);
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
}
/*
@@ -1907,8 +1907,8 @@ feintr(arg)
* after handling the receiver interrupt to give the
* receive operation priority.
*/
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_OACTIVE) == 0)
- fe_start(&sc->sc_arpcom.ac_if);
+ if ((sc->sc_ethercom.ec_if.if_flags & IFF_OACTIVE) == 0)
+ fe_start(&sc->sc_ethercom.ec_if);
/*
* Get interrupt conditions, masking unneeded flags.
@@ -1949,7 +1949,7 @@ fe_ioctl(ifp, command, data)
#ifdef INET
case AF_INET:
fe_init(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -1959,11 +1959,13 @@ fe_ioctl(ifp, command, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
- else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ *(union ns_host *)(sc->sc_enaddr);
+ else {
+ bcopy(ina->x_host.c_host, sc->sc_enaddr,
+ ETHER_ADDR_LEN);
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
+ }
/* Set new address. */
fe_init(sc);
break;
@@ -2011,8 +2013,8 @@ fe_ioctl(ifp, command, data)
case SIOCDELMULTI:
/* Update our multicast list. */
error = (command == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom) :
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom) :
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -2044,7 +2046,7 @@ fe_get_packet(sc, len)
{
struct ether_header *eh;
struct mbuf *m;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Allocate a header mbuf. */
MGETHDR(m, M_DONTWAIT, MT_DATA);
@@ -2105,7 +2107,7 @@ fe_get_packet(sc, len)
*/
if ((ifp->if_flags & IFF_PROMISC) != 0 &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, sc->sc_enaddr,
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return (1);
@@ -2186,7 +2188,7 @@ fe_write_mbufs(sc, m)
log(LOG_ERR, "%s: got a %s packet (%u bytes) to send\n",
sc->sc_dev.dv_xname,
totlen < ETHER_HDR_SIZE ? "partial" : "big", totlen);
- sc->sc_arpcom.ac_if.if_oerrors++;
+ sc->sc_ethercom.ec_if.if_oerrors++;
return;
}
#endif
@@ -2270,11 +2272,11 @@ fe_write_mbufs(sc, m)
* list of multicast addresses we need to listen to.
*/
void
-fe_getmcaf(ac, af)
- struct arpcom *ac;
+fe_getmcaf(ec, af)
+ struct ethercom *ec;
u_char *af;
{
- struct ifnet *ifp = &ac->ac_if;
+ struct ifnet *ifp = &ec->ec_if;
struct ether_multi *enm;
register u_char *cp, c;
register u_long crc;
@@ -2293,7 +2295,7 @@ fe_getmcaf(ac, af)
goto allmulti;
af[0] = af[1] = af[2] = af[3] = af[4] = af[5] = af[6] = af[7] = 0x00;
- ETHER_FIRST_MULTI(step, ac, enm);
+ ETHER_FIRST_MULTI(step, ec, enm);
while (enm != NULL) {
if (bcmp(enm->enm_addrlo, enm->enm_addrhi,
sizeof(enm->enm_addrlo)) != 0) {
@@ -2345,7 +2347,7 @@ void
fe_setmode(sc)
struct fe_softc *sc;
{
- int flags = sc->sc_arpcom.ac_if.if_flags;
+ int flags = sc->sc_ethercom.ec_if.if_flags;
/*
* If the interface is not running, we postpone the update
@@ -2392,7 +2394,7 @@ fe_setmode(sc)
/*
* Find the new multicast filter value.
*/
- fe_getmcaf(&sc->sc_arpcom, sc->filter);
+ fe_getmcaf(&sc->sc_ethercom, sc->filter);
sc->filter_change = 1;
#if FE_DEBUG >= 3
diff --git a/sys/dev/ic/mb86960var.h b/sys/dev/ic/mb86960var.h
index e56539bdf14..1a0d48e545c 100644
--- a/sys/dev/ic/mb86960var.h
+++ b/sys/dev/ic/mb86960var.h
@@ -58,14 +58,15 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -167,7 +168,7 @@ struct fe_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* ethernet common */
+ struct ethercom sc_ethercom; /* ethernet common */
/* Set by probe() and not modified in later phases. */
enum fe_type type; /* interface type code */
@@ -194,10 +195,9 @@ struct fe_softc {
/* Multicast address filter management. */
u_char filter_change; /* MARs must be changed ASAP. */
u_char filter[FE_FILTER_LEN]; /* new filter value. */
-};
-/* Frequently accessed members in arpcom. */
-#define sc_enaddr sc_arpcom.ac_enaddr
+ u_int8_t sc_enaddr[ETHER_ADDR_LEN];
+};
/* Standard driver entry points. These can be static. */
int feprobe __P((struct device *, void *, void *));
@@ -224,7 +224,7 @@ void fe_xmit __P((struct fe_softc *));
void fe_write_mbufs __P((struct fe_softc *, struct mbuf *));
static inline
void fe_droppacket __P((struct fe_softc *));
-void fe_getmcaf __P((struct arpcom *, u_char *));
+void fe_getmcaf __P((struct ethercom *, u_char *));
void fe_setmode __P((struct fe_softc *));
void fe_loadmar __P((struct fe_softc *));
#if FE_DEBUG >= 1
@@ -994,7 +994,7 @@ feattach(parent, self, aux)
struct fe_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
struct cfdata *cf = sc->sc_dev.dv_cfdata;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Stop the 86960. */
fe_stop(sc);
@@ -1063,11 +1063,11 @@ feattach(parent, self, aux)
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, sc->sc_enaddr);
/* Print additional info when attached. */
printf(": address %s, type %s\n",
- ether_sprintf(sc->sc_arpcom.ac_enaddr), sc->typestr);
+ ether_sprintf(sc->sc_enaddr), sc->typestr);
#if FE_DEBUG >= 3
{
int buf, txb, bbw, sbw, ram;
@@ -1214,7 +1214,7 @@ fe_watchdog(ifp)
#endif
/* Record how many packets are lost by this accident. */
- sc->sc_arpcom.ac_if.if_oerrors += sc->txb_sched + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_oerrors += sc->txb_sched + sc->txb_count;
fe_reset(sc);
}
@@ -1237,7 +1237,7 @@ void
fe_init(sc)
struct fe_softc *sc;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int i;
#if FE_DEBUG >= 3
@@ -1399,7 +1399,7 @@ fe_xmit(sc)
* We use longer timeout for multiple packet transmission.
* I'm not sure this timer value is appropriate. FIXME.
*/
- sc->sc_arpcom.ac_if.if_timer = 1 + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_timer = 1 + sc->txb_count;
/* Update txb variables. */
sc->txb_sched = sc->txb_count;
@@ -1577,7 +1577,7 @@ fe_tint(sc, tstat)
struct fe_softc *sc;
u_char tstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int left;
int col;
@@ -1716,7 +1716,7 @@ fe_rint(sc, rstat)
struct fe_softc *sc;
u_char rstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int len;
u_char status;
int i;
@@ -1898,7 +1898,7 @@ feintr(arg)
if (sc->filter_change &&
sc->txb_count == 0 && sc->txb_sched == 0) {
fe_loadmar(sc);
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
}
/*
@@ -1907,8 +1907,8 @@ feintr(arg)
* after handling the receiver interrupt to give the
* receive operation priority.
*/
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_OACTIVE) == 0)
- fe_start(&sc->sc_arpcom.ac_if);
+ if ((sc->sc_ethercom.ec_if.if_flags & IFF_OACTIVE) == 0)
+ fe_start(&sc->sc_ethercom.ec_if);
/*
* Get interrupt conditions, masking unneeded flags.
@@ -1949,7 +1949,7 @@ fe_ioctl(ifp, command, data)
#ifdef INET
case AF_INET:
fe_init(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -1959,11 +1959,13 @@ fe_ioctl(ifp, command, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
- else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ *(union ns_host *)(sc->sc_enaddr);
+ else {
+ bcopy(ina->x_host.c_host, sc->sc_enaddr,
+ ETHER_ADDR_LEN);
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
+ }
/* Set new address. */
fe_init(sc);
break;
@@ -2011,8 +2013,8 @@ fe_ioctl(ifp, command, data)
case SIOCDELMULTI:
/* Update our multicast list. */
error = (command == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom) :
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom) :
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -2044,7 +2046,7 @@ fe_get_packet(sc, len)
{
struct ether_header *eh;
struct mbuf *m;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Allocate a header mbuf. */
MGETHDR(m, M_DONTWAIT, MT_DATA);
@@ -2105,7 +2107,7 @@ fe_get_packet(sc, len)
*/
if ((ifp->if_flags & IFF_PROMISC) != 0 &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, sc->sc_enaddr,
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return (1);
@@ -2186,7 +2188,7 @@ fe_write_mbufs(sc, m)
log(LOG_ERR, "%s: got a %s packet (%u bytes) to send\n",
sc->sc_dev.dv_xname,
totlen < ETHER_HDR_SIZE ? "partial" : "big", totlen);
- sc->sc_arpcom.ac_if.if_oerrors++;
+ sc->sc_ethercom.ec_if.if_oerrors++;
return;
}
#endif
@@ -2270,11 +2272,11 @@ fe_write_mbufs(sc, m)
* list of multicast addresses we need to listen to.
*/
void
-fe_getmcaf(ac, af)
- struct arpcom *ac;
+fe_getmcaf(ec, af)
+ struct ethercom *ec;
u_char *af;
{
- struct ifnet *ifp = &ac->ac_if;
+ struct ifnet *ifp = &ec->ec_if;
struct ether_multi *enm;
register u_char *cp, c;
register u_long crc;
@@ -2293,7 +2295,7 @@ fe_getmcaf(ac, af)
goto allmulti;
af[0] = af[1] = af[2] = af[3] = af[4] = af[5] = af[6] = af[7] = 0x00;
- ETHER_FIRST_MULTI(step, ac, enm);
+ ETHER_FIRST_MULTI(step, ec, enm);
while (enm != NULL) {
if (bcmp(enm->enm_addrlo, enm->enm_addrhi,
sizeof(enm->enm_addrlo)) != 0) {
@@ -2345,7 +2347,7 @@ void
fe_setmode(sc)
struct fe_softc *sc;
{
- int flags = sc->sc_arpcom.ac_if.if_flags;
+ int flags = sc->sc_ethercom.ec_if.if_flags;
/*
* If the interface is not running, we postpone the update
@@ -2392,7 +2394,7 @@ fe_setmode(sc)
/*
* Find the new multicast filter value.
*/
- fe_getmcaf(&sc->sc_arpcom, sc->filter);
+ fe_getmcaf(&sc->sc_ethercom, sc->filter);
sc->filter_change = 1;
#if FE_DEBUG >= 3
diff --git a/sys/dev/ic/ncr53c9x.c b/sys/dev/ic/ncr53c9x.c
index e9012ce73a1..b2a8719f505 100644
--- a/sys/dev/ic/ncr53c9x.c
+++ b/sys/dev/ic/ncr53c9x.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ncr53c9x.c,v 1.2 1997/02/27 13:59:32 briggs Exp $ */
+/* $NetBSD: ncr53c9x.c,v 1.3 1997/03/15 18:11:31 is Exp $ */
/*
* Copyright (c) 1996 Charles M. Hannum. All rights reserved.
diff --git a/sys/dev/ic/ncr53c9xreg.h b/sys/dev/ic/ncr53c9xreg.h
index f704e467ad7..9ebc936a5ed 100644
--- a/sys/dev/ic/ncr53c9xreg.h
+++ b/sys/dev/ic/ncr53c9xreg.h
@@ -1,4 +1,4 @@
-/* $NetBSD: ncr53c9xreg.h,v 1.1 1997/02/27 01:12:08 thorpej Exp $ */
+/* $NetBSD: ncr53c9xreg.h,v 1.2 1997/03/15 18:11:32 is Exp $ */
/*
* Copyright (c) 1994 Peter Galbavy. All rights reserved.
diff --git a/sys/dev/ic/ncr53c9xvar.h b/sys/dev/ic/ncr53c9xvar.h
index fc909387fa5..a10dc17601d 100644
--- a/sys/dev/ic/ncr53c9xvar.h
+++ b/sys/dev/ic/ncr53c9xvar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: ncr53c9xvar.h,v 1.2 1997/02/27 13:59:34 briggs Exp $ */
+/* $NetBSD: ncr53c9xvar.h,v 1.3 1997/03/15 18:11:33 is Exp $ */
/*
* Copyright (c) 1997 Jason R. Thorpe.
diff --git a/sys/dev/ic/pdq_ifsubr.c b/sys/dev/ic/pdq_ifsubr.c
index dc77238073b..813a93e0994 100644
--- a/sys/dev/ic/pdq_ifsubr.c
+++ b/sys/dev/ic/pdq_ifsubr.c
@@ -1,4 +1,4 @@
-/* $NetBSD: pdq_ifsubr.c,v 1.7 1997/02/20 17:53:50 is Exp $ */
+/* $NetBSD: pdq_ifsubr.c,v 1.8 1997/03/15 18:11:34 is Exp $ */
/*-
* Copyright (c) 1995, 1996 Matt Thomas <matt@3am-software.com>
@@ -52,7 +52,15 @@
#include <net/if.h>
#include <net/if_types.h>
#include <net/if_dl.h>
+
+#if !defined(__NetBSD__)
#include <net/route.h>
+#endif
+
+#if defined(__NetBSD__)
+#include <net/if_ether.h>
+#endif
+
#include "bpfilter.h"
#if NBPFILTER > 0
@@ -65,8 +73,12 @@
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
+#if defined(__NetBSD__)
+#include <netinet/if_inarp.h>
+#else
#include <netinet/if_ether.h>
#endif
+#endif
#if defined(__FreeBSD__)
#include <netinet/if_fddi.h>
#else
@@ -158,7 +170,7 @@ ifnet_ret_t
pdq_ifstart(
struct ifnet *ifp)
{
- pdq_softc_t *sc = (pdq_softc_t *) ((caddr_t) ifp - offsetof(pdq_softc_t, sc_ac.ac_if));
+ pdq_softc_t *sc = (pdq_softc_t *) ((caddr_t) ifp - offsetof(pdq_softc_t, sc_ec.ec_if));
struct ifqueue *ifq = &ifp->if_snd;
struct mbuf *m;
int tx = 0;
@@ -204,7 +216,11 @@ pdq_os_receive_pdu(
if ((fh->fddi_fc & (FDDIFC_L|FDDIFC_F)) != FDDIFC_LLC_ASYNC ||
((sc->sc_if.if_flags & IFF_PROMISC) &&
(fh->fddi_dhost[0] & 1) == 0 && /* !mcast and !bcast */
+#ifdef __NetBSD__
+ bcmp(fh->fddi_dhost, LLADDR(sc->sc_ec.ec_if.if_sadl),
+#else
bcmp(fh->fddi_dhost, sc->sc_ac.ac_enaddr,
+#endif
sizeof(fh->fddi_dhost)) != 0)) {
m_freem(m);
return;
@@ -256,7 +272,7 @@ pdq_os_addr_fill(
struct ether_multistep step;
struct ether_multi *enm;
- ETHER_FIRST_MULTI(step, &sc->sc_ac, enm);
+ ETHER_FIRST_MULTI(step, &sc->sc_ec, enm);
while (enm != NULL && num_addrs > 0) {
((u_short *) addr->lanaddr_bytes)[0] = ((u_short *) enm->enm_addrlo)[0];
((u_short *) addr->lanaddr_bytes)[1] = ((u_short *) enm->enm_addrlo)[1];
@@ -273,7 +289,7 @@ pdq_ifioctl(
ioctl_cmd_t cmd,
caddr_t data)
{
- pdq_softc_t *sc = (pdq_softc_t *) ((caddr_t) ifp - offsetof(pdq_softc_t, sc_ac.ac_if));
+ pdq_softc_t *sc = (pdq_softc_t *) ((caddr_t) ifp - offsetof(pdq_softc_t, sc_ec.ec_if));
int s, error = 0;
s = splimp();
@@ -287,7 +303,7 @@ pdq_ifioctl(
#if defined(INET)
case AF_INET: {
pdq_ifinit(sc);
- arp_ifinit(&sc->sc_ac, ifa);
+ arp_ifinit(ifp, ifa);
break;
}
#endif /* INET */
@@ -300,12 +316,11 @@ pdq_ifioctl(
case AF_NS: {
struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr);
if (ns_nullhost(*ina)) {
- ina->x_host = *(union ns_host *)(sc->sc_ac.ac_enaddr);
+ ina->x_host = *(union ns_host *)LLADDR(ifp->if_sadl);
} else {
ifp->if_flags &= ~IFF_RUNNING;
bcopy((caddr_t)ina->x_host.c_host,
- (caddr_t)sc->sc_ac.ac_enaddr,
- sizeof sc->sc_ac.ac_enaddr);
+ LLADDR(ifp->if_sadl), ifp->if_data.ifi_addrlen);
}
pdq_ifinit(sc);
@@ -332,9 +347,9 @@ pdq_ifioctl(
* Update multicast listeners
*/
if (cmd == SIOCADDMULTI)
- error = ether_addmulti((struct ifreq *)data, &sc->sc_ac);
+ error = ether_addmulti((struct ifreq *)data, &sc->sc_ec);
else
- error = ether_delmulti((struct ifreq *)data, &sc->sc_ac);
+ error = ether_delmulti((struct ifreq *)data, &sc->sc_ec);
if (error == ENETRESET) {
if (sc->sc_if.if_flags & IFF_RUNNING)
@@ -378,7 +393,7 @@ pdq_ifattach(
ifp->if_start = pdq_ifstart;
if_attach(ifp);
- fddi_ifattach(ifp);
+ fddi_ifattach(ifp, (caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes);
#if NBPFILTER > 0
PDQ_BPFATTACH(sc, DLT_FDDI, sizeof(struct fddi_header));
#endif
diff --git a/sys/dev/ic/pdqvar.h b/sys/dev/ic/pdqvar.h
index 8872b28bf63..f6f00334b52 100644
--- a/sys/dev/ic/pdqvar.h
+++ b/sys/dev/ic/pdqvar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: pdqvar.h,v 1.11 1996/10/25 21:33:37 cgd Exp $ */
+/* $NetBSD: pdqvar.h,v 1.12 1997/03/15 18:11:35 is Exp $ */
/*-
* Copyright (c) 1995, 1996 Matt Thomas <matt@3am-software.com>
@@ -203,8 +203,13 @@ typedef struct {
#elif defined(__FreeBSD__)
struct kern_devconf *sc_kdc; /* freebsd cruft */
#endif
+#if defined(__NetBSD__)
+ struct ethercom sc_ec;
+#define sc_if sc_ec.ec_if
+#else
struct arpcom sc_ac;
#define sc_if sc_ac.ac_if
+#endif
pdq_t *sc_pdq;
#if !defined(__NetBSD__)
pdq_bus_ioport_t sc_iobase;
diff --git a/sys/dev/isa/aha_isa.c b/sys/dev/isa/aha_isa.c
index 91fc935c35a..c44d27e2bf8 100644
--- a/sys/dev/isa/aha_isa.c
+++ b/sys/dev/isa/aha_isa.c
@@ -1,4 +1,4 @@
-/* $NetBSD: aha_isa.c,v 1.1 1997/02/07 17:37:32 mycroft Exp $ */
+/* $NetBSD: aha_isa.c,v 1.2 1997/03/15 18:11:36 is Exp $ */
/*
* Copyright (c) 1994, 1996 Charles M. Hannum. All rights reserved.
diff --git a/sys/dev/isa/files.isa b/sys/dev/isa/files.isa
index 99fe449391b..973d09dd8c5 100644
--- a/sys/dev/isa/files.isa
+++ b/sys/dev/isa/files.isa
@@ -1,4 +1,4 @@
-# $NetBSD: files.isa,v 1.26 1997/02/07 17:37:34 mycroft Exp $
+# $NetBSD: files.isa,v 1.27 1997/03/15 18:11:37 is Exp $
#
# Config.new file and device description for machine-independent ISA code.
# Included by ports that need it. Requires that the SCSI files be
@@ -128,17 +128,17 @@ file dev/isa/elink.c elink
# National Semiconductor DS8390/WD83C690-based boards
# (WD/SMC 80x3 family, SMC Ultra [8216], 3Com 3C503, NE[12]000, and clones)
-device ed: ether, ifnet
+device ed: ether, ifnet, arp
attach ed at isa
file dev/isa/if_ed.c ed
# 3Com 3C505
-device eg: ether, ifnet
+device eg: ether, ifnet, arp
attach eg at isa
file dev/isa/if_eg.c eg
# 3Com 3C501
-device el: ether, ifnet
+device el: ether, ifnet, arp
attach el at isa
file dev/isa/if_el.c el
@@ -148,31 +148,31 @@ file dev/isa/if_ep_isa.c ep_isa
# Fujitsu MB8696[05]-based boards
# (Allied Telesis AT1700)
-device fe: ether, ifnet
+device fe: ether, ifnet, arp
attach fe at isa
file dev/isa/if_fe.c fe
# HP Lan Ethernet controllers
# XXX currently broken
-#device hp: ether, ifnet
+#device hp: ether, ifnet, arp
#attach hp at isa
#file dev/isa/if_hp.c hp
# Intel i82586-based boards
# (AT&T StarLAN 10, AT&T EN100, AT&T StarLAN Fiber, 3Com 3C507)
-device ie: ether, ifnet, elink
+device ie: ether, ifnet, elink, arp
attach ie at isa
file dev/isa/if_ie.c ie
# Intel i82595-based boards.
# (Intel EtherExpress PRO)
-device iy: ether, ifnet
+device iy: ether, ifnet, arp
attach iy at isa
file dev/isa/if_iy.c iy
# XXX ???
# XXX NOT IN TREE?
-#device ix: ether, ifnet
+#device ix: ether, ifnet, arp
#attach ix at isa
#file dev/isa/if_ix.c ix
diff --git a/sys/dev/isa/if_ate.c b/sys/dev/isa/if_ate.c
index e56539bdf14..1a0d48e545c 100644
--- a/sys/dev/isa/if_ate.c
+++ b/sys/dev/isa/if_ate.c
@@ -58,14 +58,15 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -167,7 +168,7 @@ struct fe_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* ethernet common */
+ struct ethercom sc_ethercom; /* ethernet common */
/* Set by probe() and not modified in later phases. */
enum fe_type type; /* interface type code */
@@ -194,10 +195,9 @@ struct fe_softc {
/* Multicast address filter management. */
u_char filter_change; /* MARs must be changed ASAP. */
u_char filter[FE_FILTER_LEN]; /* new filter value. */
-};
-/* Frequently accessed members in arpcom. */
-#define sc_enaddr sc_arpcom.ac_enaddr
+ u_int8_t sc_enaddr[ETHER_ADDR_LEN];
+};
/* Standard driver entry points. These can be static. */
int feprobe __P((struct device *, void *, void *));
@@ -224,7 +224,7 @@ void fe_xmit __P((struct fe_softc *));
void fe_write_mbufs __P((struct fe_softc *, struct mbuf *));
static inline
void fe_droppacket __P((struct fe_softc *));
-void fe_getmcaf __P((struct arpcom *, u_char *));
+void fe_getmcaf __P((struct ethercom *, u_char *));
void fe_setmode __P((struct fe_softc *));
void fe_loadmar __P((struct fe_softc *));
#if FE_DEBUG >= 1
@@ -994,7 +994,7 @@ feattach(parent, self, aux)
struct fe_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
struct cfdata *cf = sc->sc_dev.dv_cfdata;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Stop the 86960. */
fe_stop(sc);
@@ -1063,11 +1063,11 @@ feattach(parent, self, aux)
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, sc->sc_enaddr);
/* Print additional info when attached. */
printf(": address %s, type %s\n",
- ether_sprintf(sc->sc_arpcom.ac_enaddr), sc->typestr);
+ ether_sprintf(sc->sc_enaddr), sc->typestr);
#if FE_DEBUG >= 3
{
int buf, txb, bbw, sbw, ram;
@@ -1214,7 +1214,7 @@ fe_watchdog(ifp)
#endif
/* Record how many packets are lost by this accident. */
- sc->sc_arpcom.ac_if.if_oerrors += sc->txb_sched + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_oerrors += sc->txb_sched + sc->txb_count;
fe_reset(sc);
}
@@ -1237,7 +1237,7 @@ void
fe_init(sc)
struct fe_softc *sc;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int i;
#if FE_DEBUG >= 3
@@ -1399,7 +1399,7 @@ fe_xmit(sc)
* We use longer timeout for multiple packet transmission.
* I'm not sure this timer value is appropriate. FIXME.
*/
- sc->sc_arpcom.ac_if.if_timer = 1 + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_timer = 1 + sc->txb_count;
/* Update txb variables. */
sc->txb_sched = sc->txb_count;
@@ -1577,7 +1577,7 @@ fe_tint(sc, tstat)
struct fe_softc *sc;
u_char tstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int left;
int col;
@@ -1716,7 +1716,7 @@ fe_rint(sc, rstat)
struct fe_softc *sc;
u_char rstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int len;
u_char status;
int i;
@@ -1898,7 +1898,7 @@ feintr(arg)
if (sc->filter_change &&
sc->txb_count == 0 && sc->txb_sched == 0) {
fe_loadmar(sc);
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
}
/*
@@ -1907,8 +1907,8 @@ feintr(arg)
* after handling the receiver interrupt to give the
* receive operation priority.
*/
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_OACTIVE) == 0)
- fe_start(&sc->sc_arpcom.ac_if);
+ if ((sc->sc_ethercom.ec_if.if_flags & IFF_OACTIVE) == 0)
+ fe_start(&sc->sc_ethercom.ec_if);
/*
* Get interrupt conditions, masking unneeded flags.
@@ -1949,7 +1949,7 @@ fe_ioctl(ifp, command, data)
#ifdef INET
case AF_INET:
fe_init(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -1959,11 +1959,13 @@ fe_ioctl(ifp, command, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
- else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ *(union ns_host *)(sc->sc_enaddr);
+ else {
+ bcopy(ina->x_host.c_host, sc->sc_enaddr,
+ ETHER_ADDR_LEN);
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
+ }
/* Set new address. */
fe_init(sc);
break;
@@ -2011,8 +2013,8 @@ fe_ioctl(ifp, command, data)
case SIOCDELMULTI:
/* Update our multicast list. */
error = (command == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom) :
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom) :
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -2044,7 +2046,7 @@ fe_get_packet(sc, len)
{
struct ether_header *eh;
struct mbuf *m;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Allocate a header mbuf. */
MGETHDR(m, M_DONTWAIT, MT_DATA);
@@ -2105,7 +2107,7 @@ fe_get_packet(sc, len)
*/
if ((ifp->if_flags & IFF_PROMISC) != 0 &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, sc->sc_enaddr,
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return (1);
@@ -2186,7 +2188,7 @@ fe_write_mbufs(sc, m)
log(LOG_ERR, "%s: got a %s packet (%u bytes) to send\n",
sc->sc_dev.dv_xname,
totlen < ETHER_HDR_SIZE ? "partial" : "big", totlen);
- sc->sc_arpcom.ac_if.if_oerrors++;
+ sc->sc_ethercom.ec_if.if_oerrors++;
return;
}
#endif
@@ -2270,11 +2272,11 @@ fe_write_mbufs(sc, m)
* list of multicast addresses we need to listen to.
*/
void
-fe_getmcaf(ac, af)
- struct arpcom *ac;
+fe_getmcaf(ec, af)
+ struct ethercom *ec;
u_char *af;
{
- struct ifnet *ifp = &ac->ac_if;
+ struct ifnet *ifp = &ec->ec_if;
struct ether_multi *enm;
register u_char *cp, c;
register u_long crc;
@@ -2293,7 +2295,7 @@ fe_getmcaf(ac, af)
goto allmulti;
af[0] = af[1] = af[2] = af[3] = af[4] = af[5] = af[6] = af[7] = 0x00;
- ETHER_FIRST_MULTI(step, ac, enm);
+ ETHER_FIRST_MULTI(step, ec, enm);
while (enm != NULL) {
if (bcmp(enm->enm_addrlo, enm->enm_addrhi,
sizeof(enm->enm_addrlo)) != 0) {
@@ -2345,7 +2347,7 @@ void
fe_setmode(sc)
struct fe_softc *sc;
{
- int flags = sc->sc_arpcom.ac_if.if_flags;
+ int flags = sc->sc_ethercom.ec_if.if_flags;
/*
* If the interface is not running, we postpone the update
@@ -2392,7 +2394,7 @@ fe_setmode(sc)
/*
* Find the new multicast filter value.
*/
- fe_getmcaf(&sc->sc_arpcom, sc->filter);
+ fe_getmcaf(&sc->sc_ethercom, sc->filter);
sc->filter_change = 1;
#if FE_DEBUG >= 3
diff --git a/sys/dev/isa/if_ed.c b/sys/dev/isa/if_ed.c
index c949235c335..eaebc812edd 100644
--- a/sys/dev/isa/if_ed.c
+++ b/sys/dev/isa/if_ed.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_ed.c,v 1.106 1996/11/17 04:11:18 mikel Exp $ */
+/* $NetBSD: if_ed.c,v 1.107 1997/03/15 18:11:39 is Exp $ */
/*
* Device driver for National Semiconductor DS8390/WD83C690 based ethernet
@@ -31,14 +31,15 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -67,7 +68,7 @@ struct ed_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* ethernet common */
+ struct ethercom sc_ethercom; /* ethernet common */
char *type_str; /* pointer to type string */
u_char vendor; /* interface vendor */
@@ -112,6 +113,8 @@ struct ed_softc {
u_char rec_page_start; /* first page of RX ring-buffer */
u_char rec_page_stop; /* last page of RX ring-buffer */
u_char next_packet; /* pointer to next unread RX packet */
+
+ u_int8_t sc_enaddr[6];
};
int edprobe __P((struct device *, void *, void *));
@@ -138,7 +141,7 @@ void ed_shared_readmem __P((struct ed_softc *, int, caddr_t, int));
#define inline /* XXX for debugging porpoises */
-void ed_getmcaf __P((struct arpcom *, u_long *));
+void ed_getmcaf __P((struct ethercom *, u_long *));
void edread __P((struct ed_softc *, int, int));
struct mbuf *edget __P((struct ed_softc *, int, int));
static inline void ed_rint __P((struct ed_softc *));
@@ -529,7 +532,7 @@ ed_find_WD80x3(sc, cf, ia)
/* Get station address from on-board ROM. */
for (i = 0; i < ETHER_ADDR_LEN; ++i)
- sc->sc_arpcom.ac_enaddr[i] =
+ sc->sc_enaddr[i] =
bus_space_read_1(iot, ioh, asicbase + ED_WD_PROM + i);
/*
@@ -809,7 +812,7 @@ ed_find_3Com(sc, cf, ia)
ED_3COM_CR_EALO | ED_3COM_CR_XSEL);
for (i = 0; i < ETHER_ADDR_LEN; ++i)
- sc->sc_arpcom.ac_enaddr[i] = NIC_GET(iot, ioh, nicbase, i);
+ sc->sc_enaddr[i] = NIC_GET(iot, ioh, nicbase, i);
/*
* Unmap PROM - select NIC registers. The proper setting of the
@@ -1206,10 +1209,10 @@ ed_find_Novell(sc, cf, ia)
ed_pio_readmem(sc, 0, romdata, 16);
for (n = 0; n < ETHER_ADDR_LEN; n++)
- sc->sc_arpcom.ac_enaddr[n] = romdata[n*(sc->isa16bit+1)];
+ sc->sc_enaddr[n] = romdata[n*(sc->isa16bit+1)];
#ifdef GWETHER
- if (sc->arpcom.ac_enaddr[2] == 0x86)
+ if (sc->sc_enaddr[2] == 0x86)
sc->type_str = "Gateway AT";
#endif /* GWETHER */
@@ -1245,7 +1248,7 @@ edattach(parent, self, aux)
struct ed_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
struct cfdata *cf = sc->sc_dev.dv_cfdata;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int asicbase;
/*
@@ -1290,11 +1293,11 @@ edattach(parent, self, aux)
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, sc->sc_enaddr);
/* Print additional info when attached. */
printf("\n%s: address %s, ", sc->sc_dev.dv_xname,
- ether_sprintf(sc->sc_arpcom.ac_enaddr));
+ ether_sprintf(sc->sc_enaddr));
if (sc->type_str)
printf("type %s ", sc->type_str);
@@ -1376,7 +1379,7 @@ edwatchdog(ifp)
struct ed_softc *sc = ifp->if_softc;
log(LOG_ERR, "%s: device timeout\n", sc->sc_dev.dv_xname);
- ++sc->sc_arpcom.ac_if.if_oerrors;
+ ++sc->sc_ethercom.ec_if.if_oerrors;
edreset(sc);
}
@@ -1390,7 +1393,7 @@ edinit(sc)
{
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int nicbase = sc->nic_base, asicbase = sc->asic_base;
int i;
u_long mcaf[2];
@@ -1466,10 +1469,10 @@ edinit(sc)
/* Copy out our station address. */
for (i = 0; i < ETHER_ADDR_LEN; ++i)
NIC_PUT(iot, ioh, nicbase, ED_P1_PAR0 + i,
- sc->sc_arpcom.ac_enaddr[i]);
+ LLADDR(ifp->if_sadl)[i]);
/* Set multicast filter on chip. */
- ed_getmcaf(&sc->sc_arpcom, mcaf);
+ ed_getmcaf(&sc->sc_ethercom, mcaf);
for (i = 0; i < 8; i++)
NIC_PUT(iot, ioh, nicbase, ED_P1_MAR0 + i, ((u_char *)mcaf)[i]);
@@ -1543,7 +1546,7 @@ ed_xmit(sc)
{
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int nicbase = sc->nic_base;
u_short len;
@@ -1798,7 +1801,7 @@ loop:
log(LOG_ERR,
"%s: NIC memory corrupt - invalid packet length %d\n",
sc->sc_dev.dv_xname, len);
- ++sc->sc_arpcom.ac_if.if_ierrors;
+ ++sc->sc_ethercom.ec_if.if_ierrors;
edreset(sc);
return;
}
@@ -1827,7 +1830,7 @@ edintr(arg)
struct ed_softc *sc = arg;
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int nicbase = sc->nic_base, asicbase = sc->asic_base;
u_char isr;
@@ -2054,7 +2057,7 @@ edioctl(ifp, cmd, data)
#ifdef INET
case AF_INET:
edinit(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -2065,11 +2068,11 @@ edioctl(ifp, cmd, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
- else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ *(union ns_host *)LLADDR(ifp->if_sadl);
+ else {
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
+ }
/* Set new address. */
edinit(sc);
break;
@@ -2111,8 +2114,8 @@ edioctl(ifp, cmd, data)
case SIOCDELMULTI:
/* Update our multicast list. */
error = (cmd == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom) :
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom) :
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -2143,7 +2146,7 @@ edread(sc, buf, len)
struct ed_softc *sc;
int buf, len;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
struct mbuf *m;
struct ether_header *eh;
@@ -2174,7 +2177,7 @@ edread(sc, buf, len)
*/
if ((ifp->if_flags & IFF_PROMISC) &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, LLADDR(ifp->if_sadl),
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return;
@@ -2452,7 +2455,7 @@ edget(sc, src, total_len)
int src;
u_short total_len;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
struct mbuf *top, **mp, *m;
int len;
@@ -2494,11 +2497,11 @@ edget(sc, src, total_len)
* need to listen to.
*/
void
-ed_getmcaf(ac, af)
- struct arpcom *ac;
+ed_getmcaf(ec, af)
+ struct ethercom *ec;
u_long *af;
{
- struct ifnet *ifp = &ac->ac_if;
+ struct ifnet *ifp = &ec->ec_if;
struct ether_multi *enm;
register u_char *cp, c;
register u_long crc;
@@ -2520,7 +2523,7 @@ ed_getmcaf(ac, af)
}
af[0] = af[1] = 0;
- ETHER_FIRST_MULTI(step, ac, enm);
+ ETHER_FIRST_MULTI(step, ec, enm);
while (enm != NULL) {
if (bcmp(enm->enm_addrlo, enm->enm_addrhi,
sizeof(enm->enm_addrlo)) != 0) {
diff --git a/sys/dev/isa/if_eg.c b/sys/dev/isa/if_eg.c
index 11cb32fb61b..9a68d89a3cd 100644
--- a/sys/dev/isa/if_eg.c
+++ b/sys/dev/isa/if_eg.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_eg.c,v 1.32 1996/10/21 22:40:50 thorpej Exp $ */
+/* $NetBSD: if_eg.c,v 1.33 1997/03/15 18:11:40 is Exp $ */
/*
* Copyright (c) 1993 Dean Huxley <dean@fsa.ca>
@@ -52,17 +52,17 @@
#include <sys/device.h>
#include <net/if.h>
-#include <net/netisr.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -103,7 +103,7 @@
struct eg_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* Ethernet common part */
+ struct ethercom sc_ethercom; /* Ethernet common part */
bus_space_tag_t sc_iot; /* bus space identifier */
bus_space_handle_t sc_ioh; /* i/o handle */
u_int8_t eg_rom_major; /* Cards ROM version (major number) */
@@ -397,7 +397,8 @@ egattach(parent, self, aux)
struct isa_attach_args *ia = aux;
bus_space_tag_t iot = ia->ia_iot;
bus_space_handle_t ioh;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
+ u_int8_t myaddr[ETHER_ADDR_LEN];
printf("\n");
@@ -431,11 +432,11 @@ egattach(parent, self, aux)
egprintpcb(sc);
return;
}
- bcopy(&sc->eg_pcb[2], sc->sc_arpcom.ac_enaddr, ETHER_ADDR_LEN);
+ bcopy(&sc->eg_pcb[2], myaddr, ETHER_ADDR_LEN);
printf("%s: ROM v%d.%02d %dk address %s\n", self->dv_xname,
sc->eg_rom_major, sc->eg_rom_minor, sc->eg_ram,
- ether_sprintf(sc->sc_arpcom.ac_enaddr));
+ ether_sprintf(myaddr));
sc->eg_pcb[0] = EG_CMD_SETEADDR; /* Set station address */
if (egwritePCB(sc) != 0) {
@@ -466,7 +467,7 @@ egattach(parent, self, aux)
/* Now we can attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, myaddr);
#if NBPFILTER > 0
bpfattach(&ifp->if_bpf, ifp, DLT_EN10MB, sizeof(struct ether_header));
@@ -480,7 +481,7 @@ void
eginit(sc)
register struct eg_softc *sc;
{
- register struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ register struct ifnet *ifp = &sc->sc_ethercom.ec_if;
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
@@ -676,13 +677,13 @@ egintr(arg)
if (sc->eg_pcb[6] || sc->eg_pcb[7]) {
DPRINTF(("%s: packet dropped\n",
sc->sc_dev.dv_xname));
- sc->sc_arpcom.ac_if.if_oerrors++;
+ sc->sc_ethercom.ec_if.if_oerrors++;
} else
- sc->sc_arpcom.ac_if.if_opackets++;
- sc->sc_arpcom.ac_if.if_collisions +=
+ sc->sc_ethercom.ec_if.if_opackets++;
+ sc->sc_ethercom.ec_if.if_collisions +=
sc->eg_pcb[8] & 0xf;
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
- egstart(&sc->sc_arpcom.ac_if);
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
+ egstart(&sc->sc_ethercom.ec_if);
serviced = 1;
break;
@@ -725,7 +726,7 @@ egread(sc, buf, len)
caddr_t buf;
int len;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
struct mbuf *m;
struct ether_header *eh;
@@ -764,7 +765,7 @@ egread(sc, buf, len)
*/
if ((ifp->if_flags & IFF_PROMISC) &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, LLADDR(ifp->if_sadl),
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return;
@@ -786,7 +787,7 @@ egget(sc, buf, totlen)
caddr_t buf;
int totlen;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
struct mbuf *top, **mp, *m;
int len;
@@ -845,7 +846,7 @@ egioctl(ifp, cmd, data)
#ifdef INET
case AF_INET:
eginit(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -855,11 +856,10 @@ egioctl(ifp, cmd, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
+ *(union ns_host *)LLADDR(ifp->if_sadl);
else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
/* Set new address. */
eginit(sc);
break;
@@ -929,7 +929,7 @@ egwatchdog(ifp)
struct eg_softc *sc = ifp->if_softc;
log(LOG_ERR, "%s: device timeout\n", sc->sc_dev.dv_xname);
- sc->sc_arpcom.ac_if.if_oerrors++;
+ sc->sc_ethercom.ec_if.if_oerrors++;
egreset(sc);
}
diff --git a/sys/dev/isa/if_el.c b/sys/dev/isa/if_el.c
index 762dc9e5d82..5883e7fe937 100644
--- a/sys/dev/isa/if_el.c
+++ b/sys/dev/isa/if_el.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_el.c,v 1.43 1996/10/21 22:40:53 thorpej Exp $ */
+/* $NetBSD: if_el.c,v 1.44 1997/03/15 18:11:41 is Exp $ */
/*
* Copyright (c) 1994, Matthew E. Kimmel. Permission is hereby granted
@@ -33,12 +33,14 @@
#include <net/if_dl.h>
#include <net/if_types.h>
+#include <net/if_ether.h>
+
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -76,7 +78,7 @@ struct el_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* ethernet common */
+ struct ethercom sc_ethercom; /* ethernet common */
bus_space_tag_t sc_iot; /* bus space identifier */
bus_space_handle_t sc_ioh; /* i/o handle */
};
@@ -190,7 +192,8 @@ elattach(parent, self, aux)
struct isa_attach_args *ia = aux;
bus_space_tag_t iot = ia->ia_iot;
bus_space_handle_t ioh;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
+ u_int8_t myaddr[ETHER_ADDR_LEN];
u_int8_t i;
printf("\n");
@@ -214,7 +217,7 @@ elattach(parent, self, aux)
/* Now read the address. */
for (i = 0; i < ETHER_ADDR_LEN; i++) {
bus_space_write_1(iot, ioh, EL_GPBL, i);
- sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, EL_EAW);
+ myaddr[i] = bus_space_read_1(iot, ioh, EL_EAW);
}
/* Stop the board. */
@@ -231,11 +234,10 @@ elattach(parent, self, aux)
/* Now we can attach the interface. */
DPRINTF(("Attaching interface...\n"));
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, myaddr);
/* Print out some information for the user. */
- printf("%s: address %s\n", self->dv_xname,
- ether_sprintf(sc->sc_arpcom.ac_enaddr));
+ printf("%s: address %s\n", self->dv_xname, ether_sprintf(myaddr));
/* Finally, attach to bpf filter if it is present. */
#if NBPFILTER > 0
@@ -293,7 +295,8 @@ el_hardreset(sc)
bus_space_write_1(iot, ioh, EL_AC, 0);
for (i = 0; i < ETHER_ADDR_LEN; i++)
- bus_space_write_1(iot, ioh, i, sc->sc_arpcom.ac_enaddr[i]);
+ bus_space_write_1(iot, ioh, i,
+ LLADDR(sc->sc_ethercom.ec_if.if_sadl)[i]);
}
/*
@@ -303,7 +306,7 @@ void
elinit(sc)
struct el_softc *sc;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
@@ -517,7 +520,7 @@ elintr(arg)
DPRINTF(("overflow.\n"));
el_hardreset(sc);
/* Put board back into receive mode. */
- if (sc->sc_arpcom.ac_if.if_flags & IFF_PROMISC)
+ if (sc->sc_ethercom.ec_if.if_flags & IFF_PROMISC)
bus_space_write_1(iot, ioh, EL_RXC,
EL_RXC_AGF | EL_RXC_DSHORT | EL_RXC_DDRIB |
EL_RXC_DOFLOW | EL_RXC_PROMISC);
@@ -559,7 +562,7 @@ elread(sc, len)
register struct el_softc *sc;
int len;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
struct mbuf *m;
struct ether_header *eh;
@@ -598,7 +601,7 @@ elread(sc, len)
*/
if ((ifp->if_flags & IFF_PROMISC) &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, LLADDR(ifp->if_sadl),
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return;
@@ -621,7 +624,7 @@ elget(sc, totlen)
struct el_softc *sc;
int totlen;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
bus_space_tag_t iot = sc->sc_iot;
bus_space_handle_t ioh = sc->sc_ioh;
struct mbuf *top, **mp, *m;
@@ -690,7 +693,7 @@ elioctl(ifp, cmd, data)
#ifdef INET
case AF_INET:
elinit(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -701,11 +704,10 @@ elioctl(ifp, cmd, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
+ *(union ns_host *)LLADDR(ifp->if_sadl);
else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
/* Set new address. */
elinit(sc);
break;
@@ -761,7 +763,7 @@ elwatchdog(ifp)
struct el_softc *sc = ifp->if_softc;
log(LOG_ERR, "%s: device timeout\n", sc->sc_dev.dv_xname);
- sc->sc_arpcom.ac_if.if_oerrors++;
+ sc->sc_ethercom.ec_if.if_oerrors++;
elreset(sc);
}
diff --git a/sys/dev/isa/if_ep_isa.c b/sys/dev/isa/if_ep_isa.c
index 8e97402f70e..4f02367f4c0 100644
--- a/sys/dev/isa/if_ep_isa.c
+++ b/sys/dev/isa/if_ep_isa.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_ep_isa.c,v 1.9 1997/02/18 10:51:09 jonathan Exp $ */
+/* $NetBSD: if_ep_isa.c,v 1.10 1997/03/15 18:11:42 is Exp $ */
/*
* Copyright (c) 1996 Jason R. Thorpe <thorpej@beer.org>
@@ -47,14 +47,15 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
diff --git a/sys/dev/isa/if_fe.c b/sys/dev/isa/if_fe.c
index e56539bdf14..1a0d48e545c 100644
--- a/sys/dev/isa/if_fe.c
+++ b/sys/dev/isa/if_fe.c
@@ -58,14 +58,15 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -167,7 +168,7 @@ struct fe_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* ethernet common */
+ struct ethercom sc_ethercom; /* ethernet common */
/* Set by probe() and not modified in later phases. */
enum fe_type type; /* interface type code */
@@ -194,10 +195,9 @@ struct fe_softc {
/* Multicast address filter management. */
u_char filter_change; /* MARs must be changed ASAP. */
u_char filter[FE_FILTER_LEN]; /* new filter value. */
-};
-/* Frequently accessed members in arpcom. */
-#define sc_enaddr sc_arpcom.ac_enaddr
+ u_int8_t sc_enaddr[ETHER_ADDR_LEN];
+};
/* Standard driver entry points. These can be static. */
int feprobe __P((struct device *, void *, void *));
@@ -224,7 +224,7 @@ void fe_xmit __P((struct fe_softc *));
void fe_write_mbufs __P((struct fe_softc *, struct mbuf *));
static inline
void fe_droppacket __P((struct fe_softc *));
-void fe_getmcaf __P((struct arpcom *, u_char *));
+void fe_getmcaf __P((struct ethercom *, u_char *));
void fe_setmode __P((struct fe_softc *));
void fe_loadmar __P((struct fe_softc *));
#if FE_DEBUG >= 1
@@ -994,7 +994,7 @@ feattach(parent, self, aux)
struct fe_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
struct cfdata *cf = sc->sc_dev.dv_cfdata;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Stop the 86960. */
fe_stop(sc);
@@ -1063,11 +1063,11 @@ feattach(parent, self, aux)
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, sc->sc_enaddr);
/* Print additional info when attached. */
printf(": address %s, type %s\n",
- ether_sprintf(sc->sc_arpcom.ac_enaddr), sc->typestr);
+ ether_sprintf(sc->sc_enaddr), sc->typestr);
#if FE_DEBUG >= 3
{
int buf, txb, bbw, sbw, ram;
@@ -1214,7 +1214,7 @@ fe_watchdog(ifp)
#endif
/* Record how many packets are lost by this accident. */
- sc->sc_arpcom.ac_if.if_oerrors += sc->txb_sched + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_oerrors += sc->txb_sched + sc->txb_count;
fe_reset(sc);
}
@@ -1237,7 +1237,7 @@ void
fe_init(sc)
struct fe_softc *sc;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int i;
#if FE_DEBUG >= 3
@@ -1399,7 +1399,7 @@ fe_xmit(sc)
* We use longer timeout for multiple packet transmission.
* I'm not sure this timer value is appropriate. FIXME.
*/
- sc->sc_arpcom.ac_if.if_timer = 1 + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_timer = 1 + sc->txb_count;
/* Update txb variables. */
sc->txb_sched = sc->txb_count;
@@ -1577,7 +1577,7 @@ fe_tint(sc, tstat)
struct fe_softc *sc;
u_char tstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int left;
int col;
@@ -1716,7 +1716,7 @@ fe_rint(sc, rstat)
struct fe_softc *sc;
u_char rstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int len;
u_char status;
int i;
@@ -1898,7 +1898,7 @@ feintr(arg)
if (sc->filter_change &&
sc->txb_count == 0 && sc->txb_sched == 0) {
fe_loadmar(sc);
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
}
/*
@@ -1907,8 +1907,8 @@ feintr(arg)
* after handling the receiver interrupt to give the
* receive operation priority.
*/
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_OACTIVE) == 0)
- fe_start(&sc->sc_arpcom.ac_if);
+ if ((sc->sc_ethercom.ec_if.if_flags & IFF_OACTIVE) == 0)
+ fe_start(&sc->sc_ethercom.ec_if);
/*
* Get interrupt conditions, masking unneeded flags.
@@ -1949,7 +1949,7 @@ fe_ioctl(ifp, command, data)
#ifdef INET
case AF_INET:
fe_init(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -1959,11 +1959,13 @@ fe_ioctl(ifp, command, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
- else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ *(union ns_host *)(sc->sc_enaddr);
+ else {
+ bcopy(ina->x_host.c_host, sc->sc_enaddr,
+ ETHER_ADDR_LEN);
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
+ }
/* Set new address. */
fe_init(sc);
break;
@@ -2011,8 +2013,8 @@ fe_ioctl(ifp, command, data)
case SIOCDELMULTI:
/* Update our multicast list. */
error = (command == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom) :
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom) :
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -2044,7 +2046,7 @@ fe_get_packet(sc, len)
{
struct ether_header *eh;
struct mbuf *m;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Allocate a header mbuf. */
MGETHDR(m, M_DONTWAIT, MT_DATA);
@@ -2105,7 +2107,7 @@ fe_get_packet(sc, len)
*/
if ((ifp->if_flags & IFF_PROMISC) != 0 &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, sc->sc_enaddr,
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return (1);
@@ -2186,7 +2188,7 @@ fe_write_mbufs(sc, m)
log(LOG_ERR, "%s: got a %s packet (%u bytes) to send\n",
sc->sc_dev.dv_xname,
totlen < ETHER_HDR_SIZE ? "partial" : "big", totlen);
- sc->sc_arpcom.ac_if.if_oerrors++;
+ sc->sc_ethercom.ec_if.if_oerrors++;
return;
}
#endif
@@ -2270,11 +2272,11 @@ fe_write_mbufs(sc, m)
* list of multicast addresses we need to listen to.
*/
void
-fe_getmcaf(ac, af)
- struct arpcom *ac;
+fe_getmcaf(ec, af)
+ struct ethercom *ec;
u_char *af;
{
- struct ifnet *ifp = &ac->ac_if;
+ struct ifnet *ifp = &ec->ec_if;
struct ether_multi *enm;
register u_char *cp, c;
register u_long crc;
@@ -2293,7 +2295,7 @@ fe_getmcaf(ac, af)
goto allmulti;
af[0] = af[1] = af[2] = af[3] = af[4] = af[5] = af[6] = af[7] = 0x00;
- ETHER_FIRST_MULTI(step, ac, enm);
+ ETHER_FIRST_MULTI(step, ec, enm);
while (enm != NULL) {
if (bcmp(enm->enm_addrlo, enm->enm_addrhi,
sizeof(enm->enm_addrlo)) != 0) {
@@ -2345,7 +2347,7 @@ void
fe_setmode(sc)
struct fe_softc *sc;
{
- int flags = sc->sc_arpcom.ac_if.if_flags;
+ int flags = sc->sc_ethercom.ec_if.if_flags;
/*
* If the interface is not running, we postpone the update
@@ -2392,7 +2394,7 @@ fe_setmode(sc)
/*
* Find the new multicast filter value.
*/
- fe_getmcaf(&sc->sc_arpcom, sc->filter);
+ fe_getmcaf(&sc->sc_ethercom, sc->filter);
sc->filter_change = 1;
#if FE_DEBUG >= 3
diff --git a/sys/dev/isa/if_fmv.c b/sys/dev/isa/if_fmv.c
index e56539bdf14..1a0d48e545c 100644
--- a/sys/dev/isa/if_fmv.c
+++ b/sys/dev/isa/if_fmv.c
@@ -58,14 +58,15 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_types.h>
-#include <net/netisr.h>
+
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -167,7 +168,7 @@ struct fe_softc {
struct device sc_dev;
void *sc_ih;
- struct arpcom sc_arpcom; /* ethernet common */
+ struct ethercom sc_ethercom; /* ethernet common */
/* Set by probe() and not modified in later phases. */
enum fe_type type; /* interface type code */
@@ -194,10 +195,9 @@ struct fe_softc {
/* Multicast address filter management. */
u_char filter_change; /* MARs must be changed ASAP. */
u_char filter[FE_FILTER_LEN]; /* new filter value. */
-};
-/* Frequently accessed members in arpcom. */
-#define sc_enaddr sc_arpcom.ac_enaddr
+ u_int8_t sc_enaddr[ETHER_ADDR_LEN];
+};
/* Standard driver entry points. These can be static. */
int feprobe __P((struct device *, void *, void *));
@@ -224,7 +224,7 @@ void fe_xmit __P((struct fe_softc *));
void fe_write_mbufs __P((struct fe_softc *, struct mbuf *));
static inline
void fe_droppacket __P((struct fe_softc *));
-void fe_getmcaf __P((struct arpcom *, u_char *));
+void fe_getmcaf __P((struct ethercom *, u_char *));
void fe_setmode __P((struct fe_softc *));
void fe_loadmar __P((struct fe_softc *));
#if FE_DEBUG >= 1
@@ -994,7 +994,7 @@ feattach(parent, self, aux)
struct fe_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
struct cfdata *cf = sc->sc_dev.dv_cfdata;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Stop the 86960. */
fe_stop(sc);
@@ -1063,11 +1063,11 @@ feattach(parent, self, aux)
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, sc->sc_enaddr);
/* Print additional info when attached. */
printf(": address %s, type %s\n",
- ether_sprintf(sc->sc_arpcom.ac_enaddr), sc->typestr);
+ ether_sprintf(sc->sc_enaddr), sc->typestr);
#if FE_DEBUG >= 3
{
int buf, txb, bbw, sbw, ram;
@@ -1214,7 +1214,7 @@ fe_watchdog(ifp)
#endif
/* Record how many packets are lost by this accident. */
- sc->sc_arpcom.ac_if.if_oerrors += sc->txb_sched + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_oerrors += sc->txb_sched + sc->txb_count;
fe_reset(sc);
}
@@ -1237,7 +1237,7 @@ void
fe_init(sc)
struct fe_softc *sc;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int i;
#if FE_DEBUG >= 3
@@ -1399,7 +1399,7 @@ fe_xmit(sc)
* We use longer timeout for multiple packet transmission.
* I'm not sure this timer value is appropriate. FIXME.
*/
- sc->sc_arpcom.ac_if.if_timer = 1 + sc->txb_count;
+ sc->sc_ethercom.ec_if.if_timer = 1 + sc->txb_count;
/* Update txb variables. */
sc->txb_sched = sc->txb_count;
@@ -1577,7 +1577,7 @@ fe_tint(sc, tstat)
struct fe_softc *sc;
u_char tstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int left;
int col;
@@ -1716,7 +1716,7 @@ fe_rint(sc, rstat)
struct fe_softc *sc;
u_char rstat;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int len;
u_char status;
int i;
@@ -1898,7 +1898,7 @@ feintr(arg)
if (sc->filter_change &&
sc->txb_count == 0 && sc->txb_sched == 0) {
fe_loadmar(sc);
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
}
/*
@@ -1907,8 +1907,8 @@ feintr(arg)
* after handling the receiver interrupt to give the
* receive operation priority.
*/
- if ((sc->sc_arpcom.ac_if.if_flags & IFF_OACTIVE) == 0)
- fe_start(&sc->sc_arpcom.ac_if);
+ if ((sc->sc_ethercom.ec_if.if_flags & IFF_OACTIVE) == 0)
+ fe_start(&sc->sc_ethercom.ec_if);
/*
* Get interrupt conditions, masking unneeded flags.
@@ -1949,7 +1949,7 @@ fe_ioctl(ifp, command, data)
#ifdef INET
case AF_INET:
fe_init(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -1959,11 +1959,13 @@ fe_ioctl(ifp, command, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
- else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ *(union ns_host *)(sc->sc_enaddr);
+ else {
+ bcopy(ina->x_host.c_host, sc->sc_enaddr,
+ ETHER_ADDR_LEN);
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
+ }
/* Set new address. */
fe_init(sc);
break;
@@ -2011,8 +2013,8 @@ fe_ioctl(ifp, command, data)
case SIOCDELMULTI:
/* Update our multicast list. */
error = (command == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom) :
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom) :
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -2044,7 +2046,7 @@ fe_get_packet(sc, len)
{
struct ether_header *eh;
struct mbuf *m;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
/* Allocate a header mbuf. */
MGETHDR(m, M_DONTWAIT, MT_DATA);
@@ -2105,7 +2107,7 @@ fe_get_packet(sc, len)
*/
if ((ifp->if_flags & IFF_PROMISC) != 0 &&
(eh->ether_dhost[0] & 1) == 0 && /* !mcast and !bcast */
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
+ bcmp(eh->ether_dhost, sc->sc_enaddr,
sizeof(eh->ether_dhost)) != 0) {
m_freem(m);
return (1);
@@ -2186,7 +2188,7 @@ fe_write_mbufs(sc, m)
log(LOG_ERR, "%s: got a %s packet (%u bytes) to send\n",
sc->sc_dev.dv_xname,
totlen < ETHER_HDR_SIZE ? "partial" : "big", totlen);
- sc->sc_arpcom.ac_if.if_oerrors++;
+ sc->sc_ethercom.ec_if.if_oerrors++;
return;
}
#endif
@@ -2270,11 +2272,11 @@ fe_write_mbufs(sc, m)
* list of multicast addresses we need to listen to.
*/
void
-fe_getmcaf(ac, af)
- struct arpcom *ac;
+fe_getmcaf(ec, af)
+ struct ethercom *ec;
u_char *af;
{
- struct ifnet *ifp = &ac->ac_if;
+ struct ifnet *ifp = &ec->ec_if;
struct ether_multi *enm;
register u_char *cp, c;
register u_long crc;
@@ -2293,7 +2295,7 @@ fe_getmcaf(ac, af)
goto allmulti;
af[0] = af[1] = af[2] = af[3] = af[4] = af[5] = af[6] = af[7] = 0x00;
- ETHER_FIRST_MULTI(step, ac, enm);
+ ETHER_FIRST_MULTI(step, ec, enm);
while (enm != NULL) {
if (bcmp(enm->enm_addrlo, enm->enm_addrhi,
sizeof(enm->enm_addrlo)) != 0) {
@@ -2345,7 +2347,7 @@ void
fe_setmode(sc)
struct fe_softc *sc;
{
- int flags = sc->sc_arpcom.ac_if.if_flags;
+ int flags = sc->sc_ethercom.ec_if.if_flags;
/*
* If the interface is not running, we postpone the update
@@ -2392,7 +2394,7 @@ fe_setmode(sc)
/*
* Find the new multicast filter value.
*/
- fe_getmcaf(&sc->sc_arpcom, sc->filter);
+ fe_getmcaf(&sc->sc_ethercom, sc->filter);
sc->filter_change = 1;
#if FE_DEBUG >= 3
diff --git a/sys/dev/isa/if_hp.c b/sys/dev/isa/if_hp.c
index 35b1f6f43ed..8ef46e3b9bf 100644
--- a/sys/dev/isa/if_hp.c
+++ b/sys/dev/isa/if_hp.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_hp.c,v 1.23 1996/10/13 01:37:49 christos Exp $ */
+/* $NetBSD: if_hp.c,v 1.24 1997/03/15 18:11:44 is Exp $ */
/* XXX THIS DRIVER IS BROKEN. IT WILL NOT EVEN COMPILE. */
@@ -66,15 +66,14 @@
#include <sys/syslog.h>
#include <net/if.h>
-#include <net/netisr.h>
-#include <net/route.h>
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -117,9 +116,8 @@ struct mbuf *hpget();
* This structure contains the output queue for the interface, its address, ...
*/
struct hp_softc {
- struct arpcom ns_ac; /* Ethernet common part */
+ struct ethercom ns_ec; /* Ethernet common part */
#define ns_if ns_ac.ac_if /* network-visible interface */
-#define ns_addrp ns_ac.ac_enaddr /* hardware Ethernet address */
int ns_flags;
#define DSF_LOCK 1 /* block re-entering enstart */
int ns_oactive;
@@ -137,6 +135,8 @@ struct hp_softc {
#if NBPFILTER > 0
caddr_t ns_bpf;
#endif
+ u_int8_t ns_addrp[ETHER_ADDR_LEN]; /* hardware Ethernet address */
+
}
hp_softc[NHP];
#define ENBUFSIZE (sizeof(struct ether_header) + ETHERMTU + 2 + ETHER_MIN_LEN)
diff --git a/sys/dev/isa/if_ie.c b/sys/dev/isa/if_ie.c
index 0bb53d911ec..2084f91d60f 100644
--- a/sys/dev/isa/if_ie.c
+++ b/sys/dev/isa/if_ie.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_ie.c,v 1.56 1996/11/05 07:17:23 mikel Exp $ */
+/* $NetBSD: if_ie.c,v 1.57 1997/03/15 18:11:46 is Exp $ */
/*-
* Copyright (c) 1993, 1994, 1995 Charles Hannum.
@@ -121,8 +121,8 @@ iomem, and to make 16-pointers, we subtract sc_maddr and and with 0xffff.
#include <net/if.h>
#include <net/if_types.h>
#include <net/if_dl.h>
-#include <net/netisr.h>
-#include <net/route.h>
+#include <net/if_ether.h>
+
#if NBPFILTER > 0
#include <net/bpf.h>
@@ -134,7 +134,7 @@ iomem, and to make 16-pointers, we subtract sc_maddr and and with 0xffff.
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -232,7 +232,7 @@ struct ie_softc {
caddr_t sc_maddr;
u_int sc_msize;
- struct arpcom sc_arpcom;
+ struct ethercom sc_ethercom;
void (*reset_586) __P((struct ie_softc *));
void (*chan_attn) __P((struct ie_softc *));
@@ -264,6 +264,8 @@ struct ie_softc {
#ifdef IEDEBUG
int sc_debug;
#endif
+ u_int8_t sc_enaddr[6];
+ u_int8_t sc_pad[2];
};
void iewatchdog __P((struct ifnet *));
@@ -749,14 +751,14 @@ ee16_probe(sc, ia)
* save it in the softc for use by the 586 setup code.
*/
eaddrtemp = ee16_read_eeprom(sc, IEE16_EEPROM_ENET_HIGH);
- sc->sc_arpcom.ac_enaddr[1] = eaddrtemp & 0xFF;
- sc->sc_arpcom.ac_enaddr[0] = eaddrtemp >> 8;
+ sc->sc_enaddr[1] = eaddrtemp & 0xFF;
+ sc->sc_enaddr[0] = eaddrtemp >> 8;
eaddrtemp = ee16_read_eeprom(sc, IEE16_EEPROM_ENET_MID);
- sc->sc_arpcom.ac_enaddr[3] = eaddrtemp & 0xFF;
- sc->sc_arpcom.ac_enaddr[2] = eaddrtemp >> 8;
+ sc->sc_enaddr[3] = eaddrtemp & 0xFF;
+ sc->sc_enaddr[2] = eaddrtemp >> 8;
eaddrtemp = ee16_read_eeprom(sc, IEE16_EEPROM_ENET_LOW);
- sc->sc_arpcom.ac_enaddr[5] = eaddrtemp & 0xFF;
- sc->sc_arpcom.ac_enaddr[4] = eaddrtemp >> 8;
+ sc->sc_enaddr[5] = eaddrtemp & 0xFF;
+ sc->sc_enaddr[4] = eaddrtemp >> 8;
/* disable the board interrupts */
outb(PORT + IEE16_IRQ, sc->irq_encoded);
@@ -789,7 +791,7 @@ ieattach(parent, self, aux)
{
struct ie_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
bcopy(sc->sc_dev.dv_xname, ifp->if_xname, IFNAMSIZ);
ifp->if_softc = sc;
@@ -801,14 +803,14 @@ ieattach(parent, self, aux)
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, sc->sc_enaddr);
printf(": address %s, type %s R%d\n",
- ether_sprintf(sc->sc_arpcom.ac_enaddr),
+ ether_sprintf(sc->sc_enaddr),
ie_hardware_names[sc->hard_type], sc->hard_vers + 1);
#if NBPFILTER > 0
- bpfattach(&sc->sc_arpcom.ac_if.if_bpf, ifp, DLT_EN10MB,
+ bpfattach(&ifp->if_bpf, ifp, DLT_EN10MB,
sizeof(struct ether_header));
#endif
@@ -827,7 +829,7 @@ iewatchdog(ifp)
struct ie_softc *sc = ifp->if_softc;
log(LOG_ERR, "%s: device timeout\n", sc->sc_dev.dv_xname);
- ++sc->sc_arpcom.ac_if.if_oerrors;
+ ++ifp->if_oerrors;
iereset(sc);
}
@@ -839,6 +841,7 @@ ieintr(arg)
void *arg;
{
struct ie_softc *sc = arg;
+ struct ifnet *ifp = arg;
register u_short status;
/* Clear the interrupt latch on the 3C507. */
@@ -883,7 +886,7 @@ loop:
if (status & IE_ST_RNR) {
printf("%s: receiver not ready\n", sc->sc_dev.dv_xname);
- sc->sc_arpcom.ac_if.if_ierrors++;
+ ifp->if_ierrors++;
iereset(sc);
}
@@ -915,16 +918,19 @@ ierint(sc)
struct ie_softc *sc;
{
volatile struct ie_sys_ctl_block *scb = sc->scb;
+ struct ifnet *ifp;
int i, status;
static int timesthru = 1024;
+ ifp = &sc->sc_ethercom.ec_if;
+
i = sc->rfhead;
for (;;) {
status = sc->rframes[i]->ie_fd_status;
if ((status & IE_FD_COMPLETE) && (status & IE_FD_OK)) {
if (!--timesthru) {
- sc->sc_arpcom.ac_if.if_ierrors +=
+ ifp->if_ierrors +=
scb->ie_err_crc + scb->ie_err_align +
scb->ie_err_resource + scb->ie_err_overrun;
scb->ie_err_crc = scb->ie_err_align =
@@ -956,7 +962,7 @@ void
ietint(sc)
struct ie_softc *sc;
{
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
int status;
ifp->if_timer = 0;
@@ -1047,8 +1053,11 @@ check_eh(sc, eh, to_bpf)
struct ether_header *eh;
int *to_bpf;
{
+ struct ifnet *ifp;
int i;
+ ifp = &sc->sc_ethercom.ec_if;
+
switch (sc->promisc) {
case IFF_ALLMULTI:
/*
@@ -1056,11 +1065,11 @@ check_eh(sc, eh, to_bpf)
* destined for us.
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.if_bpf != 0); /* BPF gets this packet if anybody cares */
+ *to_bpf = (ifp->if_bpf != 0); /* BPF gets this packet if anybody cares */
#endif
if (eh->ether_dhost[0] & 1)
return 1;
- if (ether_equal(eh->ether_dhost, sc->sc_arpcom.ac_enaddr))
+ if (ether_equal(eh->ether_dhost, LLADDR(ifp->if_sadl)))
return 1;
return 0;
@@ -1069,10 +1078,10 @@ check_eh(sc, eh, to_bpf)
* Receiving all packets. These need to be passed on to BPF.
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.if_bpf != 0);
+ *to_bpf = (ifp->if_bpf != 0);
#endif
/* If for us, accept and hand up to BPF */
- if (ether_equal(eh->ether_dhost, sc->sc_arpcom.ac_enaddr))
+ if (ether_equal(eh->ether_dhost, LLADDR(ifp->if_sadl)))
return 1;
#if NBPFILTER > 0
@@ -1107,14 +1116,14 @@ check_eh(sc, eh, to_bpf)
* time. Whew! (Hope this is a fast machine...)
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.if_bpf != 0);
+ *to_bpf = (sc->sc_ethercom.ec_if.if_bpf != 0);
#endif
/* We want to see multicasts. */
if (eh->ether_dhost[0] & 1)
return 1;
/* We want to see our own packets */
- if (ether_equal(eh->ether_dhost, sc->sc_arpcom.ac_enaddr))
+ if (ether_equal(eh->ether_dhost, LLADDR(ifp->if_sadl)))
return 1;
/* Anything else goes to BPF but nothing else. */
@@ -1134,7 +1143,7 @@ check_eh(sc, eh, to_bpf)
* of here as quickly as possible.
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.if_bpf != 0);
+ *to_bpf = (sc->sc_ethercom.ec_if.if_bpf != 0);
#endif
return 1;
}
@@ -1203,8 +1212,8 @@ iexmit(sc)
* If BPF is listening on this interface, let it see the packet before
* we push it on the wire.
*/
- if (sc->sc_arpcom.ac_if.if_bpf)
- bpf_tap(sc->sc_arpcom.ac_if.if_bpf,
+ if (sc->sc_ethercom.ec_if.if_bpf)
+ bpf_tap(sc->sc_ethercom.ec_if.if_bpf,
sc->xmit_cbuffs[sc->xctail],
sc->xmit_buffs[sc->xctail]->ie_xmit_flags);
#endif
@@ -1225,7 +1234,7 @@ iexmit(sc)
sc->scb->ie_command_list = MK_16(MEM, sc->xmit_cmds[sc->xctail]);
command_and_wait(sc, IE_CU_START, 0, 0);
- sc->sc_arpcom.ac_if.if_timer = 5;
+ sc->sc_ethercom.ec_if.if_timer = 5;
}
/*
@@ -1268,7 +1277,7 @@ ieget(sc, ehp, to_bpf)
* we are either running BPF or doing multicasting.
*/
if (!check_eh(sc, ehp, to_bpf)) {
- sc->sc_arpcom.ac_if.if_ierrors--; /* just this case, it's not an error */
+ sc->sc_ethercom.ec_if.if_ierrors--; /* just this case, it's not an error */
return 0;
}
@@ -1277,7 +1286,7 @@ ieget(sc, ehp, to_bpf)
MGETHDR(m, M_DONTWAIT, MT_DATA);
if (m == 0)
return 0;
- m->m_pkthdr.rcvif = &sc->sc_arpcom.ac_if;
+ m->m_pkthdr.rcvif = &sc->sc_ethercom.ec_if;
m->m_pkthdr.len = totlen;
len = MHLEN;
top = 0;
@@ -1384,7 +1393,7 @@ ie_readframe(sc, num)
ie_drop_packet_buffer(sc);
}
if (m == 0) {
- sc->sc_arpcom.ac_if.if_ierrors++;
+ sc->sc_ethercom.ec_if.if_ierrors++;
return;
}
@@ -1410,7 +1419,7 @@ ie_readframe(sc, num)
m0.m_next = m;
/* Pass it up. */
- bpf_mtap(sc->sc_arpcom.ac_if.if_bpf, &m0);
+ bpf_mtap(sc->sc_ethercom.ec_if.if_bpf, &m0);
/*
* A signal passed up from the filtering code indicating that
@@ -1436,8 +1445,8 @@ ie_readframe(sc, num)
/*
* Finally pass this packet up to higher layers.
*/
- ether_input(&sc->sc_arpcom.ac_if, &eh, m);
- sc->sc_arpcom.ac_if.if_ipackets++;
+ ether_input(&sc->sc_ethercom.ec_if, &eh, m);
+ sc->sc_ethercom.ec_if.if_ipackets++;
}
void
@@ -1786,7 +1795,7 @@ void
slel_get_address(sc)
struct ie_softc *sc;
{
- u_char *addr = sc->sc_arpcom.ac_enaddr;
+ u_char *addr = sc->sc_enaddr;
int i;
for (i = 0; i < ETHER_ADDR_LEN; i++)
@@ -2046,6 +2055,7 @@ ieinit(sc)
struct ie_softc *sc;
{
volatile struct ie_sys_ctl_block *scb = sc->scb;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
void *ptr;
ptr = (void *)ALIGN(scb + 1);
@@ -2083,7 +2093,7 @@ ieinit(sc)
cmd->com.ie_cmd_cmd = IE_CMD_IASETUP | IE_CMD_LAST;
cmd->com.ie_cmd_link = 0xffff;
- bcopy(sc->sc_arpcom.ac_enaddr, (caddr_t)&cmd->ie_address,
+ bcopy(LLADDR(ifp->if_sadl), (caddr_t)&cmd->ie_address,
sizeof cmd->ie_address);
if (command_and_wait(sc, IE_CU_START, cmd, IE_STAT_COMPL) ||
@@ -2109,8 +2119,8 @@ ieinit(sc)
*/
iememinit(ptr, sc);
- sc->sc_arpcom.ac_if.if_flags |= IFF_RUNNING;
- sc->sc_arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
+ sc->sc_ethercom.ec_if.if_flags |= IFF_RUNNING;
+ sc->sc_ethercom.ec_if.if_flags &= ~IFF_OACTIVE;
sc->scb->ie_recv_list = MK_16(MEM, sc->rframes[0]);
command_and_wait(sc, IE_RU_START, 0, 0);
@@ -2163,7 +2173,7 @@ ieioctl(ifp, cmd, data)
#ifdef INET
case AF_INET:
ieinit(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -2174,11 +2184,11 @@ ieioctl(ifp, cmd, data)
if (ns_nullhost(*ina))
ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
- else
- bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ *(union ns_host *)LLADDR(ifp->if_sadl);
+ else {
+ bcopy(ina->x_host.c_host, LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
+ }
/* Set new address. */
ieinit(sc);
break;
@@ -2226,8 +2236,8 @@ ieioctl(ifp, cmd, data)
case SIOCADDMULTI:
case SIOCDELMULTI:
error = (cmd == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom):
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom):
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -2252,17 +2262,20 @@ mc_reset(sc)
{
struct ether_multi *enm;
struct ether_multistep step;
+ struct ifnet *ifp;
+
+ ifp = &sc->sc_ethercom.ec_if;
/*
* Step through the list of addresses.
*/
sc->mcast_count = 0;
- ETHER_FIRST_MULTI(step, &sc->sc_arpcom, enm);
+ ETHER_FIRST_MULTI(step, &sc->sc_ethercom, enm);
while (enm) {
if (sc->mcast_count >= MAXMCAST ||
bcmp(enm->enm_addrlo, enm->enm_addrhi, 6) != 0) {
- sc->sc_arpcom.ac_if.if_flags |= IFF_ALLMULTI;
- ieioctl(&sc->sc_arpcom.ac_if, SIOCSIFFLAGS, (void *)0);
+ ifp->if_flags |= IFF_ALLMULTI;
+ ieioctl(ifp, SIOCSIFFLAGS, (void *)0);
goto setflag;
}
diff --git a/sys/dev/isa/if_iy.c b/sys/dev/isa/if_iy.c
index 46e40d20a32..eaae196b415 100644
--- a/sys/dev/isa/if_iy.c
+++ b/sys/dev/isa/if_iy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_iy.c,v 1.9 1996/10/21 22:41:03 thorpej Exp $ */
+/* $NetBSD: if_iy.c,v 1.10 1997/03/15 18:11:47 is Exp $ */
/* #define IYDEBUG */
/* #define IYMEMDEBUG */
/*-
@@ -49,8 +49,8 @@
#include <net/if.h>
#include <net/if_types.h>
#include <net/if_dl.h>
-#include <net/netisr.h>
-#include <net/route.h>
+
+#include <net/if_ether.h>
#if NBPFILTER > 0
#include <net/bpf.h>
@@ -62,7 +62,7 @@
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
@@ -80,8 +80,8 @@
#include <dev/isa/isavar.h>
#include <dev/ic/i82595reg.h>
-#define ETHER_MIN_LEN 64
-#define ETHER_MAX_LEN 1518
+#define ETHER_MIN_LEN (ETHERMIN + sizeof(struct ether_header) + 4)
+#define ETHER_MAX_LEN (ETHERMTU + sizeof(struct ether_header) + 4)
/*
* Ethernet status, per interface.
@@ -93,7 +93,7 @@ struct iy_softc {
bus_space_tag_t sc_iot;
bus_space_handle_t sc_ioh;
- struct arpcom sc_arpcom;
+ struct ethercom sc_ethercom;
#define MAX_MBS 8
struct mbuf *mb[MAX_MBS];
@@ -124,9 +124,6 @@ void iystart __P((struct ifnet *));
void iy_intr_rx __P((struct iy_softc *));
void iy_intr_tx __P((struct iy_softc *));
-void eepro_reset_595 __P((struct iy_softc *));
-int eepro_probe __P((struct iy_softc *, struct isa_attach_args *));
-u_short eepro_read_eeprom __P((struct iy_softc *, int));
void iyreset __P((struct iy_softc *));
void iy_readframe __P((struct iy_softc *, int));
@@ -139,7 +136,9 @@ void iyget __P((struct iy_softc *, bus_space_tag_t, bus_space_handle_t, int));
void iymbuffill __P((void *));
void iymbufempty __P((void *));
void iyprobemem __P((struct iy_softc *));
-
+static __inline void eepromwritebit __P((bus_space_tag_t, bus_space_handle_t,
+ int));
+static __inline int eepromreadbit __P((bus_space_tag_t, bus_space_handle_t));
/*
* void iymeminit __P((void *, struct iy_softc *));
* static int iy_mc_setup __P((struct iy_softc *, void *));
@@ -155,8 +154,10 @@ int in_iftint = 0;
int iyprobe __P((struct device *, void *, void *));
void iyattach __P((struct device *, struct device *, void *));
-static u_int16_t eepromread __P((bus_space_tag_t, bus_space_handle_t,
- bus_size_t, int));
+static u_int16_t eepromread __P((bus_space_tag_t, bus_space_handle_t, int));
+
+static int eepromreadall __P((bus_space_tag_t, bus_space_handle_t, u_int16_t *,
+ int));
struct cfattach iy_ca = {
sizeof(struct iy_softc), iyprobe, iyattach
@@ -174,88 +175,59 @@ iyprobe(parent, match, aux)
struct device *parent;
void *match, *aux;
{
- struct iy_softc *sc = match;
struct isa_attach_args *ia = aux;
-
u_int16_t eaddr[8];
bus_space_tag_t iot;
bus_space_handle_t ioh;
- int i;
-
- u_int16_t checksum = 0;
- u_int16_t eepromtmp;
u_int8_t c, d;
iot = ia->ia_iot;
if (bus_space_map(iot, ia->ia_iobase, 16, 0, &ioh))
- goto out;
-
- /* check here for addresses already given to other devices */
-
+ return 0;
/* try to find the round robin sig: */
c = bus_space_read_1(iot, ioh, ID_REG);
- if (c & ID_REG_MASK != ID_REG_SIG)
+ if ((c & ID_REG_MASK) != ID_REG_SIG)
goto out;
d = bus_space_read_1(iot, ioh, ID_REG);
- if (d & ID_REG_MASK != ID_REG_SIG)
+ if ((d & ID_REG_MASK) != ID_REG_SIG)
goto out;
if (((d-c) & R_ROBIN_BITS) != 0x40)
goto out;
d = bus_space_read_1(iot, ioh, ID_REG);
- if (d & ID_REG_MASK != ID_REG_SIG)
+ if ((d & ID_REG_MASK) != ID_REG_SIG)
goto out;
if (((d-c) & R_ROBIN_BITS) != 0x80)
goto out;
d = bus_space_read_1(iot, ioh, ID_REG);
- if (d & ID_REG_MASK != ID_REG_SIG)
+ if ((d & ID_REG_MASK) != ID_REG_SIG)
goto out;
if (((d-c) & R_ROBIN_BITS) != 0xC0)
goto out;
d = bus_space_read_1(iot, ioh, ID_REG);
- if (d & ID_REG_MASK != ID_REG_SIG)
+ if ((d & ID_REG_MASK) != ID_REG_SIG)
goto out;
if (((d-c) & R_ROBIN_BITS) != 0x00)
goto out;
#ifdef IYDEBUG
- printf("eepro_probe verified working ID reg.\n");
+ printf("iyprobe verified working ID reg.\n");
#endif
- for (i=0; i<64; ++i) {
- eepromtmp = eepromread(iot, ioh, EEPROM_REG, i);
- checksum += eepromtmp;
- if (i<(sizeof(eaddr)/sizeof(*eaddr)))
- eaddr[i] = eepromtmp;
- }
- if (checksum != EEPP_CHKSUM)
- printf("wrong EEPROM checksum 0x%x should be 0x%x\n",
- checksum, EEPP_CHKSUM);
-
-
- if ((eaddr[EEPPEther0] != eepromread(iot, ioh, EEPROM_REG, EEPPEther0a)) &&
- (eaddr[EEPPEther1] != eepromread(iot, ioh, EEPROM_REG, EEPPEther1a)) &&
- (eaddr[EEPPEther2] != eepromread(iot, ioh, EEPROM_REG, EEPPEther2a)))
- printf("EEPROM Ethernet address differs from copy\n");
-
- sc->sc_arpcom.ac_enaddr[1] = eaddr[EEPPEther0] & 0xFF;
- sc->sc_arpcom.ac_enaddr[0] = eaddr[EEPPEther0] >> 8;
- sc->sc_arpcom.ac_enaddr[3] = eaddr[EEPPEther1] & 0xFF;
- sc->sc_arpcom.ac_enaddr[2] = eaddr[EEPPEther1] >> 8;
- sc->sc_arpcom.ac_enaddr[5] = eaddr[EEPPEther2] & 0xFF;
- sc->sc_arpcom.ac_enaddr[4] = eaddr[EEPPEther2] >> 8;
+ if (eepromreadall(iot, ioh, eaddr, 8))
+ goto out;
if (ia->ia_irq == IRQUNK)
ia->ia_irq = eepro_irqmap[eaddr[EEPPW1] & EEPP_Int];
@@ -263,24 +235,17 @@ iyprobe(parent, match, aux)
if (ia->ia_irq >= sizeof(eepro_revirqmap))
goto out;
- if ((sc->mappedirq = eepro_revirqmap[ia->ia_irq]) == -1)
+ if (eepro_revirqmap[ia->ia_irq] == 0xff)
goto out;
- sc->hard_vers = eaddr[EEPW6] & EEPP_BoardRev;
-
/* now lets reset the chip */
bus_space_write_1(iot, ioh, COMMAND_REG, RESET_CMD);
delay(200);
- /*
- * XXX Sould always unmap, but we can't yet.
- * XXX Need to squish "indirect" first.
- */
ia->ia_iosize = 16;
- sc->sc_iot = iot;
- sc->sc_ioh = ioh;
+ bus_space_unmap(iot, ioh, 16);
return 1; /* found */
out:
bus_space_unmap(iot, ioh, 16);
@@ -294,16 +259,30 @@ iyattach(parent, self, aux)
{
struct iy_softc *sc = (void *)self;
struct isa_attach_args *ia = aux;
- struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+ struct ifnet *ifp = &sc->sc_ethercom.ec_if;
bus_space_tag_t iot;
bus_space_handle_t ioh;
+ unsigned temp;
+ u_int16_t eaddr[8];
+ u_int8_t myaddr[ETHER_ADDR_LEN];
+ int eirq;
- /*
- * XXX Should re-map io and mem, but can't
- * XXX until we squish "indirect" brokenness.
- */
- iot = sc->sc_iot; /* XXX */
- ioh = sc->sc_ioh; /* XXX */
+ iot = ia->ia_iot;
+
+ if (bus_space_map(iot, ia->ia_iobase, 16, 0, &ioh))
+ panic("Can't bus_space_map in iyattach");
+
+ sc->sc_iot = iot;
+ sc->sc_ioh = ioh;
+
+ sc->mappedirq = eepro_revirqmap[ia->ia_irq];
+
+ /* now let's reset the chip */
+
+ bus_space_write_1(iot, ioh, COMMAND_REG, RESET_CMD);
+ delay(200);
+
+ iyprobemem(sc);
bcopy(sc->sc_dev.dv_xname, ifp->if_xname, IFNAMSIZ);
ifp->if_softc = sc;
@@ -311,24 +290,51 @@ iyattach(parent, self, aux)
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_NOTRAILERS;
/* XXX todo: | IFF_MULTICAST */
- iyprobemem(sc);
-
ifp->if_ioctl = iyioctl;
ifp->if_watchdog = iywatchdog;
+ (void)eepromreadall(iot, ioh, eaddr, 8);
+ sc->hard_vers = eaddr[EEPW6] & EEPP_BoardRev;
+
+#ifdef DIAGNOSTICS
+ if ((eaddr[EEPPEther0] !=
+ eepromread(iot, ioh, EEPPEther0a)) &&
+ (eaddr[EEPPEther1] !=
+ eepromread(iot, ioh, EEPPEther1a)) &&
+ (eaddr[EEPPEther2] !=
+ eepromread(iot, ioh, EEPPEther2a)))
+
+ printf("EEPROM Ethernet address differs from copy\n");
+#endif
+
+ myaddr[1] = eaddr[EEPPEther0] & 0xFF;
+ myaddr[0] = eaddr[EEPPEther0] >> 8;
+ myaddr[3] = eaddr[EEPPEther1] & 0xFF;
+ myaddr[2] = eaddr[EEPPEther1] >> 8;
+ myaddr[5] = eaddr[EEPPEther2] & 0xFF;
+ myaddr[4] = eaddr[EEPPEther2] >> 8;
+
/* Attach the interface. */
if_attach(ifp);
- ether_ifattach(ifp);
- printf(": address %s, chip rev. %d, %d kB SRAM\n",
- ether_sprintf(sc->sc_arpcom.ac_enaddr),
+ ether_ifattach(ifp, myaddr);
+ printf(": address %s, rev. %d, %d kB\n",
+ ether_sprintf(myaddr),
sc->hard_vers, sc->sram/1024);
+
+ eirq = eepro_irqmap[eaddr[EEPPW1] & EEPP_Int];
+ if (eirq != ia->ia_irq)
+ printf("%s: EEPROM irq setting %d ignored\n",
+ sc->sc_dev.dv_xname, eirq);
+
#if NBPFILTER > 0
- bpfattach(&sc->sc_arpcom.ac_if.if_bpf, ifp, DLT_EN10MB,
- sizeof(struct ether_header));
+ bpfattach(&ifp->if_bpf, ifp, DLT_EN10MB, sizeof(struct ether_header));
#endif
sc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq, IST_EDGE,
IPL_NET, iyintr, sc);
+
+ temp = bus_space_read_1(iot, ioh, INT_NO_REG);
+ bus_space_write_1(iot, ioh, INT_NO_REG, (temp & 0xf8) | sc->mappedirq);
}
void
@@ -372,7 +378,7 @@ struct iy_softc *sc;
#endif
sc->tx_start = sc->tx_end = sc->rx_size;
sc->tx_last = 0;
- sc->sc_arpcom.ac_if.if_flags &= ~(IFF_RUNNING|IFF_OACTIVE);
+ sc->sc_ethercom.ec_if.if_flags &= ~(IFF_RUNNING|IFF_OACTIVE);
iymbufempty((void *)sc);
}
@@ -401,7 +407,7 @@ struct iy_softc *sc;
iot = sc->sc_iot;
ioh = sc->sc_ioh;
- ifp = &sc->sc_arpcom.ac_if;
+ ifp = &sc->sc_ethercom.ec_if;
#ifdef IYDEBUG
printf("ifp is %p\n", ifp);
#endif
@@ -413,12 +419,12 @@ struct iy_softc *sc;
bus_space_write_1(iot, ioh, EEPROM_REG, temp & ~0x10);
for (i=0; i<6; ++i) {
- bus_space_write_1(iot, ioh, I_ADD(i), sc->sc_arpcom.ac_enaddr[i]);
+ bus_space_write_1(iot, ioh, I_ADD(i), LLADDR(ifp->if_sadl)[i]);
}
temp = bus_space_read_1(iot, ioh, REG1);
- bus_space_write_1(iot, ioh, REG1, temp | XMT_CHAIN_INT | XMT_CHAIN_ERRSTOP |
- RCV_DISCARD_BAD);
+ bus_space_write_1(iot, ioh, REG1,
+ temp | XMT_CHAIN_INT | XMT_CHAIN_ERRSTOP | RCV_DISCARD_BAD);
temp = bus_space_read_1(iot, ioh, RECV_MODES_REG);
bus_space_write_1(iot, ioh, RECV_MODES_REG, temp | MATCH_BRDCST);
@@ -431,7 +437,7 @@ struct iy_softc *sc;
#endif
- DELAY(500000); /* for the hardware to test for the connector */
+ delay(500000); /* for the hardware to test for the connector */
temp = bus_space_read_1(iot, ioh, MEDIA_SELECT);
#ifdef IYDEBUG
@@ -446,11 +452,11 @@ struct iy_softc *sc;
break;
case IFF_LINK1:
- temp = temp & ~TPE_BIT | BNC_BIT;
+ temp = (temp & ~TPE_BIT) | BNC_BIT;
break;
case IFF_LINK0|IFF_LINK1:
- temp = temp & ~BNC_BIT | TPE_BIT;
+ temp = (temp & ~BNC_BIT) | TPE_BIT;
break;
default:
/* nothing; leave as it is */
@@ -463,6 +469,8 @@ struct iy_softc *sc;
temp, "\020\1LnkInDis\2PolCor\3TPE\4JabberDis\5NoAport\6BNC");
#endif
+ bus_space_write_1(iot, ioh, 0, BANK_SEL(0));
+ bus_space_write_1(iot, ioh, INT_MASK_REG, ALL_INTS);
bus_space_write_1(iot, ioh, 0, BANK_SEL(1));
temp = bus_space_read_1(iot, ioh, INT_NO_REG);
@@ -505,7 +513,7 @@ struct iy_softc *sc;
sc->rx_start = 0;
bus_space_write_1(iot, ioh, 0, SEL_RESET_CMD);
- DELAY(200);
+ delay(200);
bus_space_write_2(iot, ioh, XMT_ADDR_REG, sc->rx_size);
@@ -704,42 +712,39 @@ struct ifnet *ifp;
static __inline void
-eepromwritebit(iot, ioh, ioff, what)
+eepromwritebit(iot, ioh, what)
bus_space_tag_t iot;
bus_space_handle_t ioh;
- bus_size_t ioff;
int what;
{
- bus_space_write_1(iot, ioh, ioff, what);
+ bus_space_write_1(iot, ioh, EEPROM_REG, what);
delay(1);
- bus_space_write_1(iot, ioh, ioff, what|EESK);
+ bus_space_write_1(iot, ioh, EEPROM_REG, what|EESK);
delay(1);
- bus_space_write_1(iot, ioh, ioff, what);
+ bus_space_write_1(iot, ioh, EEPROM_REG, what);
delay(1);
}
static __inline int
-eepromreadbit(iot, ioh, ioff)
+eepromreadbit(iot, ioh)
bus_space_tag_t iot;
bus_space_handle_t ioh;
- bus_size_t ioff;
{
int b;
- bus_space_write_1(iot, ioh, ioff, EECS|EESK);
+ bus_space_write_1(iot, ioh, EEPROM_REG, EECS|EESK);
delay(1);
- b = bus_space_read_1(iot, ioh, ioff);
- bus_space_write_1(iot, ioh, ioff, EECS);
+ b = bus_space_read_1(iot, ioh, EEPROM_REG);
+ bus_space_write_1(iot, ioh, EEPROM_REG, EECS);
delay(1);
return ((b & EEDO) != 0);
}
static u_int16_t
-eepromread(iot, ioh, ioff, offset)
+eepromread(iot, ioh, offset)
bus_space_tag_t iot;
bus_space_handle_t ioh;
- bus_size_t ioff;
int offset;
{
volatile int i;
@@ -748,30 +753,30 @@ eepromread(iot, ioh, ioff, offset)
bus_space_write_1(iot, ioh, 0, BANK_SEL(2));
delay(1);
- bus_space_write_1(iot, ioh, ioff, EECS); /* XXXX??? */
+ bus_space_write_1(iot, ioh, EEPROM_REG, EECS); /* XXXX??? */
delay(1);
- eepromwritebit(iot, ioh, ioff, EECS|EEDI);
- eepromwritebit(iot, ioh, ioff, EECS|EEDI);
- eepromwritebit(iot, ioh, ioff, EECS);
+ eepromwritebit(iot, ioh, EECS|EEDI);
+ eepromwritebit(iot, ioh, EECS|EEDI);
+ eepromwritebit(iot, ioh, EECS);
for (j=5; j>=0; --j) {
if ((offset>>j) & 1)
- eepromwritebit(iot, ioh, ioff, EECS|EEDI);
+ eepromwritebit(iot, ioh, EECS|EEDI);
else
- eepromwritebit(iot, ioh, ioff, EECS);
+ eepromwritebit(iot, ioh, EECS);
}
for (readval=0, i=0; i<16; ++i) {
readval<<=1;
- readval |= eepromreadbit(iot, ioh, ioff);
+ readval |= eepromreadbit(iot, ioh);
}
- bus_space_write_1(iot, ioh, ioff, 0|EESK);
+ bus_space_write_1(iot, ioh, EEPROM_REG, 0|EESK);
delay(1);
- bus_space_write_1(iot, ioh, ioff, 0);
+ bus_space_write_1(iot, ioh, EEPROM_REG, 0);
- bus_space_write_1(iot, ioh, ioff, BANK_SEL(0));
+ bus_space_write_1(iot, ioh, COMMAND_REG, BANK_SEL(0));
return readval;
}
@@ -787,7 +792,7 @@ iywatchdog(ifp)
struct iy_softc *sc = ifp->if_softc;
log(LOG_ERR, "%s: device timeout\n", sc->sc_dev.dv_xname);
- ++sc->sc_arpcom.ac_if.if_oerrors;
+ ++sc->sc_ethercom.ec_if.if_oerrors;
iyreset(sc);
}
@@ -819,7 +824,7 @@ iyintr(arg)
printf("\n");
}
#endif
- if ((status & (RX_INT | TX_INT) == 0))
+ if (((status & (RX_INT | TX_INT)) == 0))
return 0;
if (status & RX_INT) {
@@ -844,7 +849,7 @@ iyget(sc, iot, ioh, rxlen)
struct ifnet *ifp;
int len;
- ifp = &sc->sc_arpcom.ac_if;
+ ifp = &sc->sc_ethercom.ec_if;
m = sc->mb[sc->next_mb];
sc->mb[sc->next_mb] = 0;
@@ -913,8 +918,10 @@ iyget(sc, iot, ioh, rxlen)
bpf_mtap(ifp->if_bpf, top);
if ((ifp->if_flags & IFF_PROMISC) &&
(eh->ether_dhost[0] & 1) == 0 &&
- bcmp(eh->ether_dhost, sc->sc_arpcom.ac_enaddr,
- sizeof(eh->ether_dhost)) != 0) {
+ bcmp(eh->ether_dhost,
+ LLADDR(sc->sc_ethercom.ec_if.if_sadl),
+ sizeof(eh->ether_dhost)) != 0) {
+
m_freem(top);
return;
}
@@ -940,7 +947,7 @@ struct iy_softc *sc;
iot = sc->sc_iot;
ioh = sc->sc_ioh;
- ifp = &sc->sc_arpcom.ac_if;
+ ifp = &sc->sc_ethercom.ec_if;
rxadrs = sc->rx_start;
bus_space_write_2(iot, ioh, HOST_ADDR_REG, rxadrs);
@@ -980,7 +987,7 @@ struct iy_softc *sc;
struct ifnet *ifp;
u_int txstatus, txstat2, txlen, txnext;
- ifp = &sc->sc_arpcom.ac_if;
+ ifp = &sc->sc_ethercom.ec_if;
iot = sc->sc_iot;
ioh = sc->sc_ioh;
@@ -1056,11 +1063,12 @@ check_eh(sc, eh, to_bpf)
* destined for us.
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.iy_bpf != 0); /* BPF gets this packet if anybody cares */
+ *to_bpf = (sc->sc_ethercom.ec_if.iy_bpf != 0); /* BPF gets this packet if anybody cares */
#endif
if (eh->ether_dhost[0] & 1)
return 1;
- if (ether_equal(eh->ether_dhost, sc->sc_arpcom.ac_enaddr))
+ if (ether_equal(eh->ether_dhost,
+ LLADDR(sc->sc_ethercom.ec_if.if_sadl)))
return 1;
return 0;
@@ -1069,10 +1077,10 @@ check_eh(sc, eh, to_bpf)
* Receiving all packets. These need to be passed on to BPF.
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.iy_bpf != 0);
+ *to_bpf = (sc->sc_ethercom.ec_if.iy_bpf != 0);
#endif
/* If for us, accept and hand up to BPF */
- if (ether_equal(eh->ether_dhost, sc->sc_arpcom.ac_enaddr))
+ if (ether_equal(eh->ether_dhost, LLADDR(sc->sc_ethercom.ec_if.if_sadl)))
return 1;
#if NBPFILTER > 0
@@ -1107,14 +1115,14 @@ check_eh(sc, eh, to_bpf)
* time. Whew! (Hope this is a fast machine...)
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.iy_bpf != 0);
+ *to_bpf = (sc->sc_ethercom.ec_if.iy_bpf != 0);
#endif
/* We want to see multicasts. */
if (eh->ether_dhost[0] & 1)
return 1;
/* We want to see our own packets */
- if (ether_equal(eh->ether_dhost, sc->sc_arpcom.ac_enaddr))
+ if (ether_equal(eh->ether_dhost, LLADDR(sc->sc_ethercom.ec_if.if_sadl)))
return 1;
/* Anything else goes to BPF but nothing else. */
@@ -1134,7 +1142,7 @@ check_eh(sc, eh, to_bpf)
* of here as quickly as possible.
*/
#if NBPFILTER > 0
- *to_bpf = (sc->sc_arpcom.ac_if.iy_bpf != 0);
+ *to_bpf = (sc->sc_ethercom.ec_if.iy_bpf != 0);
#endif
return 1;
}
@@ -1176,7 +1184,7 @@ iyioctl(ifp, cmd, data)
#ifdef INET
case AF_INET:
iyinit(sc);
- arp_ifinit(&sc->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
#ifdef NS
@@ -1186,12 +1194,12 @@ iyioctl(ifp, cmd, data)
struct ns_addr *ina = &IA_SNS(ifa)->sns_addr;
if (ns_nullhost(*ina))
- ina->x_host =
- *(union ns_host *)(sc->sc_arpcom.ac_enaddr);
+ ina->x_host = *(union ns_host *)
+ LLADDR(sc->sc_ethercom.ec_if.if_sadl);
else
bcopy(ina->x_host.c_host,
- sc->sc_arpcom.ac_enaddr,
- sizeof(sc->sc_arpcom.ac_enaddr));
+ LLADDR(sc->sc_ethercom.ec_if.if_sadl),
+ ETHER_ADDR_LEN);
/* Set new address. */
iyinit(sc);
break;
@@ -1240,8 +1248,8 @@ iyioctl(ifp, cmd, data)
case SIOCADDMULTI:
case SIOCDELMULTI:
error = (cmd == SIOCADDMULTI) ?
- ether_addmulti(ifr, &sc->sc_arpcom):
- ether_delmulti(ifr, &sc->sc_arpcom);
+ ether_addmulti(ifr, &sc->sc_ethercom):
+ ether_delmulti(ifr, &sc->sc_ethercom);
if (error == ENETRESET) {
/*
@@ -1272,12 +1280,13 @@ iy_mc_reset(sc)
* Step through the list of addresses.
*/
sc->mcast_count = 0;
- ETHER_FIRST_MULTI(step, &sc->sc_arpcom, enm);
+ ETHER_FIRST_MULTI(step, &sc->sc_ethercom, enm);
while (enm) {
if (sc->mcast_count >= MAXMCAST ||
bcmp(enm->enm_addrlo, enm->enm_addrhi, 6) != 0) {
- sc->sc_arpcom.ac_if.if_flags |= IFF_ALLMULTI;
- iyioctl(&sc->sc_arpcom.ac_if, SIOCSIFFLAGS, (void *)0);
+ sc->sc_ethercom.ec_if.if_flags |= IFF_ALLMULTI;
+ iyioctl(&sc->sc_ethercom.ec_if, SIOCSIFFLAGS,
+ (void *)0);
goto setflag;
}
@@ -1357,6 +1366,8 @@ iyprobemem(sc)
iot = sc->sc_iot;
ioh = sc->sc_ioh;
+ bus_space_write_1(iot, ioh, COMMAND_REG, BANK_SEL(0));
+ delay(1);
bus_space_write_2(iot, ioh, HOST_ADDR_REG, 4096-2);
bus_space_write_2(iot, ioh, MEM_PORT_REG, 0);
@@ -1422,3 +1433,32 @@ iyprobemem(sc)
}
sc->tx_size = testing - sc->rx_size;
}
+
+static int
+eepromreadall(iot, ioh, wordp, maxi)
+ bus_space_tag_t iot;
+ bus_space_handle_t ioh;
+ u_int16_t *wordp;
+ int maxi;
+{
+ int i;
+ u_int16_t checksum, tmp;
+
+ checksum = 0;
+
+ for (i=0; i<EEPP_LENGTH; ++i) {
+ tmp = eepromread(iot, ioh, i);
+ checksum += tmp;
+ if (i<maxi)
+ wordp[i] = tmp;
+ }
+
+ if (checksum != EEPP_CHKSUM) {
+#ifdef IYDEBUG
+ printf("wrong EEPROM checksum 0x%x should be 0x%x\n",
+ checksum, EEPP_CHKSUM);
+#endif
+ return 1;
+ }
+ return 0;
+}
diff --git a/sys/dev/isa/if_le_isa.c b/sys/dev/isa/if_le_isa.c
index 6f4f91e5b8c..fcd750772ed 100644
--- a/sys/dev/isa/if_le_isa.c
+++ b/sys/dev/isa/if_le_isa.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_le_isa.c,v 1.8 1997/02/12 23:36:04 thorpej Exp $ */
+/* $NetBSD: if_le_isa.c,v 1.9 1997/03/15 18:11:48 is Exp $ */
/*-
* Copyright (c) 1995 Charles M. Hannum. All rights reserved.
@@ -49,10 +49,11 @@
#include <sys/device.h>
#include <net/if.h>
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#include <vm/vm.h>
@@ -221,17 +222,17 @@ depca_isa_probe(lesc, ia)
goto bad;
found:
- for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++)
- sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, port);
+ for (i = 0; i < sizeof(sc->sc_enaddr); i++)
+ sc->sc_enaddr[i] = bus_space_read_1(iot, ioh, port);
#if 0
sum =
- (sc->sc_arpcom.ac_enaddr[0] << 2) +
- (sc->sc_arpcom.ac_enaddr[1] << 10) +
- (sc->sc_arpcom.ac_enaddr[2] << 1) +
- (sc->sc_arpcom.ac_enaddr[3] << 9) +
- (sc->sc_arpcom.ac_enaddr[4] << 0) +
- (sc->sc_arpcom.ac_enaddr[5] << 8);
+ (sc->sc_enaddr[0] << 2) +
+ (sc->sc_enaddr[1] << 10) +
+ (sc->sc_enaddr[2] << 1) +
+ (sc->sc_enaddr[3] << 9) +
+ (sc->sc_enaddr[4] << 0) +
+ (sc->sc_enaddr[5] << 8);
sum = (sum & 0xffff) + (sum >> 16);
sum = (sum & 0xffff) + (sum >> 16);
@@ -290,8 +291,8 @@ ne2100_isa_probe(lesc, ia)
/*
* Extract the physical MAC address from the ROM.
*/
- for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++)
- sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, i);
+ for (i = 0; i < sizeof(sc->sc_enaddr); i++)
+ sc->sc_enaddr[i] = bus_space_read_1(iot, ioh, i);
/*
* XXX INDIRECT BROKENNESS!
@@ -331,8 +332,8 @@ bicc_isa_probe(lesc, ia)
/*
* Extract the physical MAC address from the ROM.
*/
- for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++)
- sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, i * 2);
+ for (i = 0; i < sizeof(sc->sc_enaddr); i++)
+ sc->sc_enaddr[i] = bus_space_read_1(iot, ioh, i * 2);
/*
* XXX INDIRECT BROKENNESS!
diff --git a/sys/dev/isa/if_levar.h b/sys/dev/isa/if_levar.h
index de472806548..65d0126fe9b 100644
--- a/sys/dev/isa/if_levar.h
+++ b/sys/dev/isa/if_levar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: if_levar.h,v 1.7 1996/12/02 05:44:18 thorpej Exp $ */
+/* $NetBSD: if_levar.h,v 1.8 1997/03/15 18:11:49 is Exp $ */
/*
* LANCE Ethernet driver header file
@@ -40,7 +40,7 @@
* Ethernet software status per interface.
*
* Each interface is referenced by a network interface structure,
- * arpcom.ac_if, which the routing code uses to locate the interface.
+ * ethercom.ec_if, which the routing code uses to locate the interface.
* This structure contains the output queue for the interface, its address, ...
*/
struct le_softc {
diff --git a/sys/dev/ofw/files.ofw b/sys/dev/ofw/files.ofw
index db1d7795cc6..4b00bd01352 100644
--- a/sys/dev/ofw/files.ofw
+++ b/sys/dev/ofw/files.ofw
@@ -11,7 +11,7 @@ file dev/ofw/ofdisk.c ofdisk needs-flag
# Generic net support
define ipkdbofn { [ disable = 0 ] }
-device ofnet: ether, ifnet, ipkdbofn
+device ofnet: ether, ifnet, ipkdbofn, arp
attach ofnet at openfirm
file dev/ofw/ofnet.c ofnet | ipkdb_ofn needs-flag
attach ipkdbif at ipkdbofn with ipkdb_ofn
diff --git a/sys/dev/ofw/ofnet.c b/sys/dev/ofw/ofnet.c
index 6dc62575198..4334f457e53 100644
--- a/sys/dev/ofw/ofnet.c
+++ b/sys/dev/ofw/ofnet.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ofnet.c,v 1.4 1996/10/16 19:33:21 ws Exp $ */
+/* $NetBSD: ofnet.c,v 1.5 1997/03/15 18:11:51 is Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -41,10 +41,11 @@
#include <sys/syslog.h>
#include <net/if.h>
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#include <dev/ofw/openfirm.h>
@@ -67,7 +68,7 @@ struct ofn_softc {
struct device sc_dev;
int sc_phandle;
int sc_ihandle;
- struct arpcom sc_arpcom;
+ struct ethercom sc_ethercom;
};
static int ofnprobe __P((struct device *, void *, void *));
@@ -119,10 +120,11 @@ ofnattach(parent, self, aux)
void *aux;
{
struct ofn_softc *of = (void *)self;
- struct ifnet *ifp = &of->sc_arpcom.ac_if;
+ struct ifnet *ifp = &of->sc_ethercom.ec_if;
struct ofprobe *ofp = aux;
char path[256];
int l;
+ u_int8_t myaddr[ETHER_ADDR_LEN];
of->sc_phandle = ofp->phandle;
#if NIPKDB_OFN > 0
@@ -138,10 +140,10 @@ ofnattach(parent, self, aux)
|| (path[l] = 0, !(of->sc_ihandle = OF_open(path))))
panic("ofnattach: unable to open");
if (OF_getprop(ofp->phandle, "mac-address",
- of->sc_arpcom.ac_enaddr, sizeof of->sc_arpcom.ac_enaddr)
+ myaddr, sizeof myaddr)
< 0)
panic("ofnattach: no max-address");
- printf(": address %s\n", ether_sprintf(of->sc_arpcom.ac_enaddr));
+ printf(": address %s\n", ether_sprintf(myaddr));
bcopy(of->sc_dev.dv_xname, ifp->if_xname, IFNAMSIZ);
ifp->if_softc = of;
@@ -151,11 +153,10 @@ ofnattach(parent, self, aux)
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_NOTRAILERS;
if_attach(ifp);
- ether_ifattach(ifp);
+ ether_ifattach(ifp, myaddr);
#if NBPFILTER > 0
- bpfattach(&of->sc_arpcom.ac_if.if_bpf, ifp, DLT_EN10MB,
- sizeof(struct ether_header));
+ bpfattach(&ifp->if_bpf, ifp, DLT_EN10MB, sizeof(struct ether_header));
#endif
dk_establish(0, self); /* XXX */
@@ -167,7 +168,7 @@ static void
ofnread(of)
struct ofn_softc *of;
{
- struct ifnet *ifp = &of->sc_arpcom.ac_if;
+ struct ifnet *ifp = &of->sc_ethercom.ec_if;
struct ether_header *eh;
struct mbuf *m, **mp, *head;
int l, len;
@@ -250,7 +251,7 @@ static void
ofninit(of)
struct ofn_softc *of;
{
- struct ifnet *ifp = &of->sc_arpcom.ac_if;
+ struct ifnet *ifp = &of->sc_ethercom.ec_if;
if (ifp->if_flags & IFF_RUNNING)
return;
@@ -267,7 +268,7 @@ ofnstop(of)
struct ofn_softc *of;
{
untimeout(ofntimer, of);
- of->sc_arpcom.ac_if.if_flags &= ~IFF_RUNNING;
+ of->sc_ethercom.ec_if.if_flags &= ~IFF_RUNNING;
}
static void
@@ -336,7 +337,7 @@ ofnioctl(ifp, cmd, data)
switch (ifa->ifa_addr->sa_family) {
#ifdef INET
case AF_INET:
- arp_ifinit(&of->sc_arpcom, ifa);
+ arp_ifinit(ifp, ifa);
break;
#endif
default:
@@ -371,7 +372,7 @@ ofnwatchdog(ifp)
struct ofn_softc *of = ifp->if_softc;
log(LOG_ERR, "%s: device timeout\n", of->sc_dev.dv_xname);
- of->sc_arpcom.ac_if.if_oerrors++;
+ ifp->if_oerrors++;
ofnstop(of);
ofninit(of);
}
@@ -384,7 +385,7 @@ ipkdbofstart(kip)
int unit = kip->unit - 1;
if (ipkdb_of)
- ipkdbattach(kip, &ipkdb_of->sc_arpcom);
+ ipkdbattach(kip, &ipkdb_of->sc_ethercom);
}
static void
diff --git a/sys/dev/pci/files.pci b/sys/dev/pci/files.pci
index 7d0fd79d676..f9df1d3d76e 100644
--- a/sys/dev/pci/files.pci
+++ b/sys/dev/pci/files.pci
@@ -1,4 +1,4 @@
-# $NetBSD: files.pci,v 1.22 1997/03/12 06:39:47 cgd Exp $
+# $NetBSD: files.pci,v 1.23 1997/03/15 18:11:53 is Exp $
#
# Config.new file and device description for machine-independent PCI code.
# Included by ports that need it. Requires that the SCSI files be
@@ -26,7 +26,7 @@ attach isp at pci with isp_pci
file dev/pci/isp_pci.c isp_pci
# Ethernet driver for DC21040-based boards
-device de: ether, ifnet
+device de: ether, ifnet, arp
attach de at pci
file dev/pci/if_de.c de
@@ -41,7 +41,7 @@ attach ep at pci with ep_pci
file dev/pci/if_ep_pci.c ep_pci
# Digital DEFPA PCI FDDI Controller
-device fpa: pdq, fddi, ifnet
+device fpa: pdq, fddi, ifnet, arp
attach fpa at pci
file dev/pci/if_fpa.c fpa
diff --git a/sys/dev/pci/if_de.c b/sys/dev/pci/if_de.c
index 8ef50086184..b547a6348d9 100644
--- a/sys/dev/pci/if_de.c
+++ b/sys/dev/pci/if_de.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_de.c,v 1.33 1997/03/06 22:32:20 thorpej Exp $ */
+/* $NetBSD: if_de.c,v 1.34 1997/03/15 18:11:55 is Exp $ */
/*-
* Copyright (c) 1994-1997 Matt Thomas (matt@3am-software.com)
@@ -57,8 +57,15 @@
#include <net/if.h>
#include <net/if_types.h>
#include <net/if_dl.h>
+
+#if defined(__NetBSD__)
+#include <net/if_ether.h>
+#endif
+
+#if !defined(__NetBSD__)
#include <net/route.h>
#include <net/netisr.h>
+#endif
#include "bpfilter.h"
#if NBPFILTER > 0
@@ -71,8 +78,12 @@
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
+#if defined(__NetBSD__)
+#include <netinet/if_inarp.h>
+#else
#include <netinet/if_ether.h>
#endif
+#endif
#ifdef NS
#include <netns/ns.h>
@@ -2634,7 +2645,7 @@ tulip_addr_filter(
sc->tulip_flags |= TULIP_WANTSETUP;
sc->tulip_cmdmode &= ~TULIP_CMD_RXRUN;
sc->tulip_intrmask &= ~TULIP_STS_RXSTOPPED;
- if (sc->tulip_ac.ac_multicnt > 14) {
+ if (TULIP_MULTICAST_CNT > 14) {
unsigned hash;
/*
* If we have more than 14 multicasts, we have
@@ -2645,21 +2656,21 @@ tulip_addr_filter(
bzero(sc->tulip_setupdata, sizeof(sc->tulip_setupdata));
hash = tulip_mchash(etherbroadcastaddr);
sp[hash >> 4] |= 1 << (hash & 0xF);
- ETHER_FIRST_MULTI(step, &sc->tulip_ac, enm);
+ ETHER_FIRST_MULTI(step, &TULIP_ETHERCOM, enm);
while (enm != NULL) {
hash = tulip_mchash(enm->enm_addrlo);
sp[hash >> 4] |= 1 << (hash & 0xF);
ETHER_NEXT_MULTI(step, enm);
}
sc->tulip_flags |= TULIP_WANTHASH;
- sp[39] = ((u_int16_t *) sc->tulip_ac.ac_enaddr)[0];
- sp[40] = ((u_int16_t *) sc->tulip_ac.ac_enaddr)[1];
- sp[41] = ((u_int16_t *) sc->tulip_ac.ac_enaddr)[2];
+ sp[39] = ((u_int16_t *) sc->tulip_hwaddr)[0];
+ sp[40] = ((u_int16_t *) sc->tulip_hwaddr)[1];
+ sp[41] = ((u_int16_t *) sc->tulip_hwaddr)[2];
} else {
/*
* Else can get perfect filtering for 16 addresses.
*/
- ETHER_FIRST_MULTI(step, &sc->tulip_ac, enm);
+ ETHER_FIRST_MULTI(step, &TULIP_ETHERCOM, enm);
for (; enm != NULL; i++) {
*sp++ = ((u_int16_t *) enm->enm_addrlo)[0];
*sp++ = ((u_int16_t *) enm->enm_addrlo)[1];
@@ -2677,9 +2688,9 @@ tulip_addr_filter(
* Pad the rest with our hardware address
*/
for (; i < 16; i++) {
- *sp++ = ((u_int16_t *) sc->tulip_ac.ac_enaddr)[0];
- *sp++ = ((u_int16_t *) sc->tulip_ac.ac_enaddr)[1];
- *sp++ = ((u_int16_t *) sc->tulip_ac.ac_enaddr)[2];
+ *sp++ = ((u_int16_t *) sc->tulip_hwaddr)[0];
+ *sp++ = ((u_int16_t *) sc->tulip_hwaddr)[1];
+ *sp++ = ((u_int16_t *) sc->tulip_hwaddr)[2];
}
}
}
@@ -2935,7 +2946,7 @@ tulip_rx_intr(
#endif
if ((sc->tulip_if.if_flags & IFF_PROMISC)
&& (eh.ether_dhost[0] & 1) == 0
- && !TULIP_ADDREQUAL(eh.ether_dhost, sc->tulip_ac.ac_enaddr))
+ && !TULIP_ADDREQUAL(eh.ether_dhost, sc->tulip_hwaddr))
goto next;
accept = 1;
sc->tulip_flags |= TULIP_RXACT;
@@ -3454,7 +3465,7 @@ tulip_ifioctl(
#ifdef INET
case AF_INET: {
tulip_init(sc);
- arp_ifinit(&sc->tulip_ac, ifa);
+ arp_ifinit(TULIP_ARPINITPAR, ifa);
break;
}
#endif /* INET */
@@ -3468,12 +3479,17 @@ tulip_ifioctl(
case AF_NS: {
struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr);
if (ns_nullhost(*ina)) {
- ina->x_host = *(union ns_host *)(sc->tulip_ac.ac_enaddr);
+ ina->x_host = *(union ns_host *)(sc->tulip_hwaddr);
} else {
ifp->if_flags &= ~IFF_RUNNING;
bcopy((caddr_t)ina->x_host.c_host,
- (caddr_t)sc->tulip_ac.ac_enaddr,
- sizeof sc->tulip_ac.ac_enaddr);
+ (caddr_t)sc->tulip_hwaddr,
+ ETHER_ADDR_LEN);
+#if defined(__NetBSD__)
+ bcopy((caddr_t)ina->x_host.c_host,
+ LLADDR(ifp->if_sadl),
+ ETHER_ADDR_LEN);
+#endif
}
tulip_init(sc);
break;
@@ -3488,9 +3504,9 @@ tulip_ifioctl(
break;
}
case SIOCGIFADDR: {
- bcopy((caddr_t) sc->tulip_ac.ac_enaddr,
+ bcopy((caddr_t) sc->tulip_hwaddr,
(caddr_t) ((struct sockaddr *)&ifr->ifr_data)->sa_data,
- 6);
+ ETHER_ADDR_LEN);
break;
}
@@ -3523,9 +3539,9 @@ tulip_ifioctl(
* Update multicast listeners
*/
if (cmd == SIOCADDMULTI)
- error = ether_addmulti(ifr, &sc->tulip_ac);
+ error = ether_addmulti(ifr, &TULIP_ETHERCOM);
else
- error = ether_delmulti(ifr, &sc->tulip_ac);
+ error = ether_delmulti(ifr, &TULIP_ETHERCOM);
if (error == ENETRESET) {
tulip_addr_filter(sc); /* reset multicast filtering */
@@ -3961,7 +3977,9 @@ tulip_attach(
ether_attach(ifp);
#else
if_attach(ifp);
-#if defined(__NetBSD__) || (defined(__FreeBSD__) && BSD >= 199506)
+#if defined(__NetBSD__)
+ ether_ifattach(ifp, sc->tulip_hwaddr);
+#elif (defined(__FreeBSD__) && BSD >= 199506)
ether_ifattach(ifp);
#endif
#endif /* __bsdi__ */
diff --git a/sys/dev/pci/if_devar.h b/sys/dev/pci/if_devar.h
index 77b6a234c0d..e97ff2d261f 100644
--- a/sys/dev/pci/if_devar.h
+++ b/sys/dev/pci/if_devar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: if_devar.h,v 1.4 1997/03/06 22:32:24 thorpej Exp $ */
+/* $NetBSD: if_devar.h,v 1.5 1997/03/15 18:11:57 is Exp $ */
/*-
* Copyright (c) 1994-1997 Matt Thomas (matt@3am-software.com)
@@ -466,8 +466,10 @@ struct _tulip_softc_t {
bus_space_tag_t tulip_bustag;
bus_space_handle_t tulip_bushandle; /* CSR region handle */
pci_chipset_tag_t tulip_pc;
-#endif
+ struct ethercom tulip_ec;
+#else
struct arpcom tulip_ac;
+#endif
tulip_regfile_t tulip_csrs;
u_int32_t tulip_flags;
#define TULIP_WANTSETUP 0x00000001
@@ -591,6 +593,9 @@ struct _tulip_softc_t {
tulip_srom_connection_t tulip_conntype;
tulip_desc_t tulip_rxdescs[TULIP_RXDESCS];
tulip_desc_t tulip_txdescs[TULIP_TXDESCS];
+#if defined(__NetBSD__)
+ u_int8_t tulip_enaddr[ETHER_ADDR_LEN];
+#endif
};
#if defined(TULIP_HDR_DATA)
@@ -811,11 +816,14 @@ extern struct cfattach de_ca;
extern struct cfdriver de_cd;
#define TULIP_UNIT_TO_SOFTC(unit) ((tulip_softc_t *) de_cd.cd_devs[unit])
#define TULIP_IFP_TO_SOFTC(ifp) ((tulip_softc_t *)((ifp)->if_softc))
-#define tulip_xname tulip_ac.ac_if.if_xname
+#define tulip_xname tulip_ec.ec_if.if_xname
#define tulip_unit tulip_dev.dv_unit
#define loudprintf printf
#define TULIP_PRINTF_FMT "%s"
#define TULIP_PRINTF_ARGS sc->tulip_xname
+#define TULIP_ETHERCOM sc->tulip_ec
+#define TULIP_MULTICAST_CNT sc->tulip_ec.ec_multicnt
+#define TULIP_ARPINITPAR ifp
#if defined(__alpha__)
/* XXX XXX NEED REAL DMA MAPPING SUPPORT XXX XXX */
#define TULIP_KVATOPHYS(sc, va) alpha_XXX_dmamap((vm_offset_t)(va))
@@ -833,12 +841,36 @@ extern struct cfdriver de_cd;
#define TULIP_BURSTSIZE(unit) 3
#endif
+#ifndef TULIP_ETHERCOM
+#define TULIP_ETHERCOM sc->tulip_ac
+#endif
+
+#ifndef TULIP_MULTICAST_CNT
+#define TULIP_MULTICAST_CNT sc->tulip_ac.ac_multicnt
+#endif
+
+#ifndef TULIP_ARPINITPAR
+#define TULIP_ARPINITPAR &sc->tulip_ac
+#endif
+
+#if defined(__NetBSD__)
+#define tulip_if tulip_ec.ec_if
+#define tulip_name tulip_ec.ec_if.if_name
+#ifndef tulip_unit
+#define tulip_unit tulip_ec.ec_if.if_unit
+#endif
+#define tulip_hwaddr tulip_enaddr
+#define tulip_bpf tulip_ec.ec_if.if_bpf
+
+#else /* __NetBSD__ */
+
#define tulip_if tulip_ac.ac_if
+#define tulip_name tulip_ac.ac_if.if_name
#ifndef tulip_unit
#define tulip_unit tulip_ac.ac_if.if_unit
#endif
-#define tulip_name tulip_ac.ac_if.if_name
#define tulip_hwaddr tulip_ac.ac_enaddr
+#endif /* __NetBSD__ */
#if !defined(tulip_bpf) && (!defined(__bsdi__) || _BSDI_VERSION >= 199401)
#define tulip_bpf tulip_ac.ac_if.if_bpf
diff --git a/sys/dev/pci/if_ep_pci.c b/sys/dev/pci/if_ep_pci.c
index 0ad9ecc31b0..cf65b3cf5e3 100644
--- a/sys/dev/pci/if_ep_pci.c
+++ b/sys/dev/pci/if_ep_pci.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_ep_pci.c,v 1.18 1997/02/18 10:51:12 jonathan Exp $ */
+/* $NetBSD: if_ep_pci.c,v 1.19 1997/03/15 18:11:58 is Exp $ */
/*
* Copyright (c) 1994 Herb Peyerl <hpeyerl@beer.org>
@@ -46,12 +46,14 @@
#include <net/if_dl.h>
#include <net/if_types.h>
+#include <net/if_ether.h>
+
#ifdef INET
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#ifdef NS
diff --git a/sys/dev/pci/if_fpa.c b/sys/dev/pci/if_fpa.c
index c3b4535feb4..d49b8b08fc0 100644
--- a/sys/dev/pci/if_fpa.c
+++ b/sys/dev/pci/if_fpa.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_fpa.c,v 1.16 1996/12/05 01:25:26 cgd Exp $ */
+/* $NetBSD: if_fpa.c,v 1.17 1997/03/15 18:11:59 is Exp $ */
/*-
* Copyright (c) 1995, 1996 Matt Thomas <matt@3am-software.com>
@@ -51,7 +51,9 @@
#include <net/if.h>
#include <net/if_types.h>
#include <net/if_dl.h>
+#if !defined(__NetBSD__)
#include <net/route.h>
+#endif
#include "bpfilter.h"
#if NBPFILTER > 0
@@ -59,10 +61,18 @@
#include <net/bpfdesc.h>
#endif
+#if defined(__NetBSD__)
+#include <net/if_ether.h>
+#endif
+
#ifdef INET
#include <netinet/in.h>
+#if defined(__NetBSD__)
+#include <netinet/if_inarp.h>
+#else
#include <netinet/if_ether.h>
#endif
+#endif
#if defined(__FreeBSD__)
#include <netinet/if_fddi.h>
#else
@@ -207,7 +217,6 @@ pdq_pci_attach(
free((void *) sc, M_DEVBUF);
return;
}
- bcopy((caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes, sc->sc_ac.ac_enaddr, 6);
pdqs_pci[unit] = sc;
pdq_ifattach(sc, pdq_pci_ifwatchdog);
pci_map_int(config_id, pdq_pci_ifintr, (void*) sc, &net_imask);
@@ -334,7 +343,8 @@ pdq_pci_attach(
return;
}
- bcopy((caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes, sc->sc_ac.ac_enaddr, 6);
+ bcopy((caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes,
+ LLADDR(ifp->if_sadl), 6);
pdq_ifattach(sc, pdq_pci_ifwatchdog);
@@ -438,7 +448,8 @@ pdq_pci_attach(
return;
}
- bcopy((caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes, sc->sc_ac.ac_enaddr, 6);
+ bcopy((caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes,
+ LLADDR(sc->sc_if.if_sadl), 6);
pdq_ifattach(sc, pdq_pci_ifwatchdog);
if (pci_intr_map(pa->pa_pc, pa->pa_intrtag, pa->pa_intrpin,
diff --git a/sys/dev/pci/if_le_pci.c b/sys/dev/pci/if_le_pci.c
index 8cb23352de4..d1e98efd16c 100644
--- a/sys/dev/pci/if_le_pci.c
+++ b/sys/dev/pci/if_le_pci.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_le_pci.c,v 1.14 1996/12/05 01:25:27 cgd Exp $ */
+/* $NetBSD: if_le_pci.c,v 1.15 1997/03/15 18:12:00 is Exp $ */
/*-
* Copyright (c) 1995 Charles M. Hannum. All rights reserved.
@@ -53,10 +53,11 @@
#include <vm/vm_param.h>
#include <net/if.h>
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#include <vm/vm.h>
@@ -194,8 +195,8 @@ le_pci_attach(parent, self, aux)
/*
* Extract the physical MAC address from the ROM.
*/
- for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++)
- sc->sc_arpcom.ac_enaddr[i] = bus_space_read_1(iot, ioh, i);
+ for (i = 0; i < sizeof(sc->sc_enaddr); i++)
+ sc->sc_enaddr[i] = bus_space_read_1(iot, ioh, i);
sc->sc_mem = malloc(16384, M_DEVBUF, M_NOWAIT);
if (sc->sc_mem == 0) {
diff --git a/sys/dev/pci/if_levar.h b/sys/dev/pci/if_levar.h
index d24222545d0..790450c415a 100644
--- a/sys/dev/pci/if_levar.h
+++ b/sys/dev/pci/if_levar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: if_levar.h,v 1.3 1996/10/21 22:56:46 thorpej Exp $ */
+/* $NetBSD: if_levar.h,v 1.4 1997/03/15 18:12:01 is Exp $ */
/*
* LANCE Ethernet driver header file
@@ -20,7 +20,7 @@
* Ethernet software status per interface.
*
* Each interface is referenced by a network interface structure,
- * arpcom.ac_if, which the routing code uses to locate the interface.
+ * ethercom.ec_if, which the routing code uses to locate the interface.
* This structure contains the output queue for the interface, its address, ...
*/
struct le_softc {
diff --git a/sys/dev/tc/files.tc b/sys/dev/tc/files.tc
index dc75b634acd..f4f0be45561 100644
--- a/sys/dev/tc/files.tc
+++ b/sys/dev/tc/files.tc
@@ -1,4 +1,4 @@
-# $NetBSD: files.tc,v 1.5 1996/05/20 00:45:02 thorpej Exp $
+# $NetBSD: files.tc,v 1.6 1997/03/15 18:12:02 is Exp $
#
# Config.new file and device description for machine-independent
# TurboChannel code. Included by ports that need it.
@@ -15,6 +15,6 @@ file dev/tc/tc.c tc needs-flag
# file dev/tc/if_le_tc.c le_tc
# DEC DEFTA TC FDDI Controller
-device fta: pdq, fddi, ifnet
+device fta: pdq, fddi, ifnet, arp
attach fta at tc
file dev/tc/if_fta.c fta
diff --git a/sys/dev/tc/if_fta.c b/sys/dev/tc/if_fta.c
index 6b2b6c87baf..9a04495d7fd 100644
--- a/sys/dev/tc/if_fta.c
+++ b/sys/dev/tc/if_fta.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_fta.c,v 1.8 1996/12/05 01:25:32 cgd Exp $ */
+/* $NetBSD: if_fta.c,v 1.9 1997/03/15 18:12:03 is Exp $ */
/*-
* Copyright (c) 1996 Matt Thomas <matt@3am-software.com>
@@ -48,9 +48,13 @@
#include <net/if.h>
#include <net/if_types.h>
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
+#if defined(__NetBSD__)
+#include <netinet/if_inarp.h>
+#else
#include <netinet/if_ether.h>
#endif
#include <net/if_fddi.h>
@@ -112,7 +116,10 @@ pdq_tc_attach(
printf("%s: initialization failed\n", sc->sc_dev.dv_xname);
return;
}
+#if !defined(__NetBSD__)
bcopy((caddr_t) sc->sc_pdq->pdq_hwaddr.lanaddr_bytes, sc->sc_ac.ac_enaddr, 6);
+#endif
+
pdq_ifattach(sc, NULL);
tc_intr_establish(parent, ta->ta_cookie, TC_IPL_NET,
diff --git a/sys/dev/tc/if_le_dec.c b/sys/dev/tc/if_le_dec.c
index 50094f17fdb..599c41ba526 100644
--- a/sys/dev/tc/if_le_dec.c
+++ b/sys/dev/tc/if_le_dec.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_le_dec.c,v 1.3 1996/10/13 01:38:38 christos Exp $ */
+/* $NetBSD: if_le_dec.c,v 1.4 1997/03/15 18:12:04 is Exp $ */
/*-
* Copyright (c) 1995 Charles M. Hannum. All rights reserved.
@@ -49,10 +49,11 @@
#include <sys/device.h>
#include <net/if.h>
+#include <net/if_ether.h>
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#include <dev/ic/am7990reg.h>
@@ -87,8 +88,8 @@ dec_le_common_attach(sc, eap)
/*
* Get the ethernet address out of rom
*/
- for (i = 0; i < sizeof(sc->sc_arpcom.ac_enaddr); i++) {
- sc->sc_arpcom.ac_enaddr[i] = *eap;
+ for (i = 0; i < sizeof(sc->sc_enaddr); i++) {
+ sc->sc_enaddr[i] = *eap;
eap += 4;
}
diff --git a/sys/dev/tc/if_le_ibus.c b/sys/dev/tc/if_le_ibus.c
index 904e472bcf9..5c9c943a546 100644
--- a/sys/dev/tc/if_le_ibus.c
+++ b/sys/dev/tc/if_le_ibus.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_le_ibus.c,v 1.3 1996/05/20 23:19:16 jonathan Exp $ */
+/* $NetBSD: if_le_ibus.c,v 1.4 1997/03/15 18:12:05 is Exp $ */
/*
* Copyright 1996 The Board of Trustees of The Leland Stanford
@@ -30,7 +30,7 @@
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#include <dev/ic/am7990reg.h>
diff --git a/sys/dev/tc/if_le_ioasic.c b/sys/dev/tc/if_le_ioasic.c
index ec0f06ad061..9ee8a5ac74f 100644
--- a/sys/dev/tc/if_le_ioasic.c
+++ b/sys/dev/tc/if_le_ioasic.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_le_ioasic.c,v 1.3 1996/12/05 01:25:33 cgd Exp $ */
+/* $NetBSD: if_le_ioasic.c,v 1.4 1997/03/15 18:12:05 is Exp $ */
/*
* Copyright (c) 1996 Carnegie-Mellon University.
@@ -42,7 +42,7 @@
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#include <dev/ic/am7990reg.h>
diff --git a/sys/dev/tc/if_le_tc.c b/sys/dev/tc/if_le_tc.c
index 7939f5d4f87..088aab51943 100644
--- a/sys/dev/tc/if_le_tc.c
+++ b/sys/dev/tc/if_le_tc.c
@@ -1,4 +1,4 @@
-/* $NetBSD: if_le_tc.c,v 1.3 1996/12/05 01:25:34 cgd Exp $ */
+/* $NetBSD: if_le_tc.c,v 1.4 1997/03/15 18:12:06 is Exp $ */
/*
* Copyright (c) 1996 Carnegie-Mellon University.
@@ -42,7 +42,7 @@
#ifdef INET
#include <netinet/in.h>
-#include <netinet/if_ether.h>
+#include <netinet/if_inarp.h>
#endif
#include <dev/ic/am7990reg.h>
diff --git a/sys/dev/tc/if_levar.h b/sys/dev/tc/if_levar.h
index a8180677036..6f08a8d2bf2 100644
--- a/sys/dev/tc/if_levar.h
+++ b/sys/dev/tc/if_levar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: if_levar.h,v 1.3 1996/05/07 02:24:58 thorpej Exp $ */
+/* $NetBSD: if_levar.h,v 1.4 1997/03/15 18:12:07 is Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -56,7 +56,7 @@ struct lereg1 {
* Ethernet software status per interface.
*
* Each interface is referenced by a network interface structure,
- * arpcom.ac_if, which the routing code uses to locate the interface.
+ * ethercom.ec_if, which the routing code uses to locate the interface.
* This structure contains the output queue for the interface, its address, ...
*/
struct le_softc {