diff options
Diffstat (limited to 'sys/dev/arl/if_arl.c')
-rw-r--r-- | sys/dev/arl/if_arl.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/sys/dev/arl/if_arl.c b/sys/dev/arl/if_arl.c index 2d199e4..86b3108 100644 --- a/sys/dev/arl/if_arl.c +++ b/sys/dev/arl/if_arl.c @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); #include <net/if.h> #include <net/if_arp.h> #include <net/if_media.h> +#include <net/if_types.h> #include <net/ethernet.h> #include <net80211/ieee80211_var.h> @@ -109,7 +110,7 @@ __FBSDID("$FreeBSD$"); #define BROADCASTADDR (etherbroadcastaddr) #define _ARL_CURPROC (curproc) #else -#define BROADCASTADDR (sc->arpcom.ac_if.if_broadcastaddr) +#define BROADCASTADDR (sc->arl_ifp->if_broadcastaddr) #define _ARL_CURPROC (curthread) #endif @@ -188,11 +189,15 @@ arl_attach(dev) device_t dev; { struct arl_softc* sc = device_get_softc(dev); - struct ifnet *ifp = &sc->arpcom.ac_if; + struct ifnet *ifp; int attached, configured = 0; D(("attach\n")); + ifp = sc->arl_ifp = if_alloc(IFT_ETHER); + if (ifp == NULL) + return (ENOSPC); + configured = ar->configuredStatusFlag; attached = (ifp->if_softc != 0); @@ -248,7 +253,7 @@ arl_attach(dev) #if __FreeBSD_version < 500100 ether_ifattach(ifp, ETHER_BPF_SUPPORTED); #else - ether_ifattach(ifp, sc->arpcom.ac_enaddr); + ether_ifattach(ifp, ar->lanCardNodeId); #endif } @@ -734,7 +739,7 @@ arl_init(xsc) void *xsc; { struct arl_softc *sc = xsc; - struct ifnet *ifp = &sc->arpcom.ac_if; + struct ifnet *ifp = sc->arl_ifp; int s; D(("init\n")); @@ -768,7 +773,7 @@ arl_put(sc) int i; if (ARL_CHECKREG(sc)) - sc->arpcom.ac_if.if_oerrors++; + sc->arl_ifp->if_oerrors++; /* copy dst adr */ for(i = 0; i < 6; i++) @@ -802,7 +807,7 @@ arl_put(sc) ar->commandByte = 0x85; /* send command */ ARL_CHANNEL(sc); if (arl_command(sc)) - sc->arpcom.ac_if.if_oerrors++; + sc->arl_ifp->if_oerrors++; } /* @@ -873,7 +878,7 @@ arl_stop(sc) s = splimp(); - ifp = &sc->arpcom.ac_if; + ifp = sc->arl_ifp; ifp->if_timer = 0; /* disable timer */ ifp->if_flags &= ~(IFF_RUNNING|IFF_OACTIVE); @@ -967,7 +972,7 @@ arl_read(sc, buf, len) int len; { register struct ether_header *eh; - struct ifnet *ifp = &sc->arpcom.ac_if; + struct ifnet *ifp = sc->arl_ifp; struct mbuf *m; eh = (struct ether_header *)buf; @@ -984,7 +989,7 @@ arl_read(sc, buf, len) * This test does not support multicasts. */ if ((ifp->if_flags & IFF_PROMISC) - && bcmp(eh->ether_dhost, sc->arpcom.ac_enaddr, + && bcmp(eh->ether_dhost, IFP2ENADDR(sc->arl_ifp), sizeof(eh->ether_dhost)) != 0 && bcmp(eh->ether_dhost, BROADCASTADDR, sizeof(eh->ether_dhost)) != 0) @@ -1049,7 +1054,7 @@ arl_intr(arg) void *arg; { register struct arl_softc *sc = (struct arl_softc *) arg; - struct ifnet *ifp = &sc->arpcom.ac_if; + struct ifnet *ifp = sc->arl_ifp; /* enable interrupt */ ar->controlRegister = (sc->arl_control & ~ARL_CLEAR_INTERRUPT); @@ -1057,7 +1062,7 @@ arl_intr(arg) if (ar->txStatusVector) { if (ar->txStatusVector != 1) - sc->arpcom.ac_if.if_collisions++; + sc->arl_ifp->if_collisions++; ifp->if_timer = 0; /* disable timer */ ifp->if_flags &= ~IFF_OACTIVE; arl_start(ifp); |