From owner-p4-projects@FreeBSD.ORG Fri Mar 5 21:48:40 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C5E331065670; Fri, 5 Mar 2010 21:48:40 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A840106564A for ; Fri, 5 Mar 2010 21:48:40 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 5DBC68FC13 for ; Fri, 5 Mar 2010 21:48:40 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id o25LmeXR052188 for ; Fri, 5 Mar 2010 21:48:40 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id o25Lme0K052186 for perforce@freebsd.org; Fri, 5 Mar 2010 21:48:40 GMT (envelope-from hselasky@FreeBSD.org) Date: Fri, 5 Mar 2010 21:48:40 GMT Message-Id: <201003052148.o25Lme0K052186@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 175386 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Mar 2010 21:48:41 -0000 http://p4web.freebsd.org/chv.cgi?CH=175386 Change 175386 by hselasky@hselasky_laptop001 on 2010/03/05 21:47:41 USB WLAN: - patch for if_run.c from Akinori to resolve some panics. - moved draintask functions to vap_delete like in other drivers. Some are still in run_stop() with NULL ptr check. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/wlan/if_run.c#8 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/wlan/if_run.c#8 (text+ko) ==== @@ -785,11 +785,15 @@ sc = ifp->if_softc; - if (ifp && ifp->if_flags & IFF_UP){ - RUN_LOCK(sc); - run_stop(sc); - RUN_UNLOCK(sc); - } + RUN_LOCK(sc); + sc->sc_rvp->amrr_run = RUN_AMRR_OFF; + RUN_UNLOCK(sc); + + /* drain them all */ + usb_callout_drain(&sc->sc_rvp->amrr_ch); + ieee80211_draintask(ic, &sc->sc_rvp->amrr_task); + ieee80211_draintask(ic, &sc->wme_task); + ieee80211_draintask(ic, &sc->usb_timeout_task); ieee80211_amrr_cleanup(&rvp->amrr); ieee80211_vap_detach(vap); @@ -4234,7 +4238,6 @@ { struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; - struct ieee80211vap *vap = &sc->sc_rvp->vap; uint32_t tmp; uint8_t bbp1, bbp3; int i; @@ -4391,7 +4394,6 @@ run_rt3070_rf_setup(sc); /* select default channel */ - vap->iv_bss->ni_chan = ic->ic_curchan; /* ic_bsschan?? */ run_set_chan(sc, ic->ic_curchan); /* setup initial protection mode */ @@ -4444,25 +4446,21 @@ RUN_LOCK_ASSERT(sc, MA_OWNED); - if (ic->ic_flags & IEEE80211_F_SCAN) - ieee80211_cancel_scan(&sc->sc_rvp->vap); + if(sc->sc_rvp != NULL){ + sc->sc_rvp->amrr_run = RUN_AMRR_OFF; + if (ic->ic_flags & IEEE80211_F_SCAN) + ieee80211_cancel_scan(&sc->sc_rvp->vap); + } if (ifp->if_drv_flags & IFF_DRV_RUNNING) run_set_leds(sc, 0); /* turn all LEDs off */ ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); - sc->sc_rvp->amrr_run = RUN_AMRR_OFF; - RUN_UNLOCK(sc); - /* drain them all */ - usb_callout_drain(&sc->sc_rvp->amrr_ch); - ieee80211_draintask(ic, &sc->sc_rvp->amrr_task); - ieee80211_draintask(ic, &sc->wme_task); for(i = 0; i < RUN_N_XFER; i++) usbd_transfer_drain(sc->sc_xfer[i]); - ieee80211_draintask(ic, &sc->usb_timeout_task); RUN_LOCK(sc);