summaryrefslogtreecommitdiffstats
path: root/sys/dev/ipw/if_ipw.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ipw/if_ipw.c')
-rw-r--r--sys/dev/ipw/if_ipw.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/dev/ipw/if_ipw.c b/sys/dev/ipw/if_ipw.c
index 37c1c97..11322af 100644
--- a/sys/dev/ipw/if_ipw.c
+++ b/sys/dev/ipw/if_ipw.c
@@ -214,7 +214,7 @@ static int
ipw_attach(device_t dev)
{
struct ipw_softc *sc = device_get_softc(dev);
- struct ifnet *ifp = &sc->sc_arp.ac_if;
+ struct ifnet *ifp;
struct ieee80211com *ic = &sc->sc_ic;
uint16_t val;
int error, i;
@@ -263,7 +263,11 @@ ipw_attach(device_t dev)
device_printf(dev, "could not allocate DMA resources\n");
goto fail;
}
-
+ ifp = sc->sc_ifp = if_alloc(IFT_ETHER);
+ if (ifp == NULL) {
+ device_printf(dev, "can not if_alloc()\n");
+ goto fail;
+ }
ifp->if_softc = sc;
if_initname(ifp, device_get_name(dev), device_get_unit(dev));
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
@@ -387,8 +391,11 @@ ipw_detach(device_t dev)
IPW_UNLOCK(sc);
- bpfdetach(ifp);
+ if (ifp != NULL)
+ bpfdetach(ifp);
ieee80211_ifdetach(ic);
+ if (ifp != NULL)
+ if_free(ifp);
ipw_release(sc);
OpenPOWER on IntegriCloud