----- Original Message ---- > From: Hans Petter Selasky <hselasky_at_c2i.net> > To: PseudoCylon <moonlightakkiy_at_yahoo.ca> > Cc: freebsd-current_at_freebsd.org; Sam Leffler <sam_at_freebsd.org>; >freebsd-usb_at_freebsd.org > Sent: Tue, July 20, 2010 4:46:34 AM > Subject: Re: [panic] Race in IEEE802.11 layer towards device drivers > > On Tuesday 20 July 2010 12:03:22 PseudoCylon wrote: > > ----- Original Message ---- > > > > > From: Hans Petter Selasky <hselasky_at_c2i.net> > > > To: freebsd-current_at_freebsd.org > > > Cc: PseudoCylon <moonlightakkiy_at_yahoo.ca>; Sam Leffler <sam_at_freebsd.org>; > > > > > >freebsd-usb_at_freebsd.org > > > > > > Sent: Mon, July 19, 2010 1:17:04 PM > > > Subject: Re: [panic] Race in IEEE802.11 layer towards device drivers > > > > > > Hi AK, > > > > > > I've committed your patches to USB P4. I've made some additional > > > patches. > > > > > > Can you check and verify everything? > > > > > > http://p4web.freebsd.org/_at__at_181189?ac=10 > > > > Hi > > > > If we change sc->cmdq_run = RUN_CMDQ_ABORT, > > > > -- begin excerpt -- > > > > > > _at__at_ -4890,7 +4877,10 _at__at_ run_stop(void *arg) > > ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); > > > > sc->ratectl_run = RUN_RATECTL_OFF; > > -sc->cmdq_run = RUN_CMDQ_ABORT; > > + > > +RUN_CMDQ_LOCK(sc); > > +sc->cmdq_run = sc->cmdq_key_set = RUN_CMDQ_ABORT; > > +RUN_CMDQ_UNLOCK(sc); > > > > -- end excerpt -- > > > > > > we also need to change this, otherwise key will be cleared. > > Ok. > > Try to give the second mutex a different name, and see how many warnings go > away. > > --HPS > Giving different name makes all of "duplicate lock" warnings away. Here is the patch includes all changes -- begin patch -- diff --git a/dev/usb/wlan/if_run.c b/dev/usb/wlan/if_run.c index 017e4b0..da22077 100644 --- a/dev/usb/wlan/if_run.c +++ b/dev/usb/wlan/if_run.c _at__at_ -549,7 +549,7 _at__at_ run_attach(device_t self) mtx_init(&sc->sc_mtx, device_get_nameunit(sc->sc_dev), MTX_NETWORK_LOCK, MTX_DEF); mtx_init(&sc->sc_cmdq_mtx, device_get_nameunit(sc->sc_dev), - MTX_NETWORK_LOCK, MTX_DEF); + "command queue", MTX_DEF); iface_index = RT2860_IFACE_INDEX; _at__at_ -4670,8 +4670,6 _at__at_ run_init_locked(struct run_softc *sc) if(ic->ic_nrunning > 1) return; -run_stop(sc); - for (ntries = 0; ntries < 100; ntries++) { if (run_read(sc, RT2860_ASIC_VER_ID, &tmp) != 0) goto fail; -- end patch --Received on Wed Jul 21 2010 - 07:27:41 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:05 UTC