Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Apr 2014 19:51:29 -0700 (PDT)
From:      Anthony Jenkins <scoobi_doo@yahoo.com>
To:        Kevin Lo <kevlo@FreeBSD.org>
Cc:        Freebsd-wireless <freebsd-wireless@freebsd.org>
Subject:   Re: urtwn panic
Message-ID:  <1398307889.10841.YahooMailNeo@web140702.mail.bf1.yahoo.com>
In-Reply-To: <535876D1.3020001@FreeBSD.org>
References:  <53550B59.6020103@yahoo.com> <535876D1.3020001@FreeBSD.org>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]






________________________________
From: Kevin Lo <kevlo@FreeBSD.org>
To: Anthony Jenkins <Scoobi_doo@yahoo.com> 
Sent: Wednesday, April 23, 2014 10:28 PM
Subject: Re: urtwn panic


Anthony Jenkins wrote:

> I'm getting a panic with the latest kernel (r264719) and the if_urtwn 
> driver.  I have a coredump available to triage.

Could you try attached patch? Thanks.


     Kevin

Nice, several insertions/extractions and no panics!

Unfortunately the !@#$& dongle's so small I just now managed to separate the device from the metal sleeve...grrr.  Should be able to fix tho, and it's still functional.


Many thanks!
Anthony

[-- Attachment #2 --]
Index: sys/dev/usb/wlan/if_urtwn.c
===================================================================
--- sys/dev/usb/wlan/if_urtwn.c	(revision 264855)
+++ sys/dev/usb/wlan/if_urtwn.c	(working copy)
@@ -2054,6 +2054,7 @@ urtwn_load_firmware(struct urtwn_softc *sc)
 	uint32_t reg;
 	int mlen, ntries, page, error;
 
+	URTWN_UNLOCK(sc);
 	/* Read firmware image from the filesystem. */
 	if ((sc->chip & (URTWN_CHIP_UMC_A_CUT | URTWN_CHIP_92C)) ==
 	    URTWN_CHIP_UMC_A_CUT)
@@ -2062,6 +2063,7 @@ urtwn_load_firmware(struct urtwn_softc *sc)
 		imagename = "urtwn-rtl8192cfwT";
 
 	fw = firmware_get(imagename);
+	URTWN_LOCK(sc);
 	if (fw == NULL) {
 		device_printf(sc->sc_dev,
 		    "failed loadfirmware of file %s\n", imagename);
@@ -2816,6 +2818,8 @@ urtwn_init_locked(void *arg)
 	uint32_t reg;
 	int error;
 
+	URTWN_ASSERT_LOCKED(sc);
+
 	if (ifp->if_drv_flags & IFF_DRV_RUNNING)
 		urtwn_stop_locked(ifp);
 
@@ -2979,6 +2983,8 @@ urtwn_stop_locked(struct ifnet *ifp)
 {
 	struct urtwn_softc *sc = ifp->if_softc;
 
+	URTWN_ASSERT_LOCKED(sc);
+
 	ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
 
 	callout_stop(&sc->sc_watchdog_ch);
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1398307889.10841.YahooMailNeo>