PERFORCE change 175386 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Fri Mar 5 21:48:41 UTC 2010
http://p4web.freebsd.org/chv.cgi?CH=175386
Change 175386 by hselasky at 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);
More information about the p4-projects
mailing list