Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Jan 2010 15:11:17 -0800
From:      Weongyo Jeong <weongyo.jeong@gmail.com>
To:        Alex Keda <admin@lissyara.su>, Paul B Mahol <onemda@gmail.com>, David Horn <dhorn2000@gmail.com>
Cc:        Attilio Rao <attilio@freebsd.org>, Aditya Sarawgi <sarawgi.aditya@gmail.com>, Gonzalo Nemmi <gnemmi@gmail.com>, current@freebsd.org, Andrea Di Pasquale <spikey.it@gmail.com>
Subject:   Re: Call for Test and Review: bwn(4) - another Broadcom Wireless driver
Message-ID:  <20100101231116.GD1491@weongyo>
In-Reply-To: <4B34E7E8.1040009@lissyara.su>
References:  <20091223035331.GA1293@weongyo> <4B3250E7.1000509@lissyara.su> <20091223201438.GD1293@weongyo> <4B32822D.30201@lissyara.su> <4B34E7E8.1040009@lissyara.su>

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

--fUYQa+Pmc3FrFX/N
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

On Fri, Dec 25, 2009 at 07:27:20PM +0300, Alex Keda wrote:
> Alex Keda пишет:
> >Weongyo Jeong пишет:
> >>It's caused by unexpected SSB core.  Could you please test with attached
> >>patch with email and tell me the result?
> >All OK
> >
> >ssb0: <Broadcom BCM4312 802.11a/b/g Wireless> mem 0xc8000000-0xc8003fff
> >irq 18 at device 0.0 on pci48
> >ssb0: unsupportted coreid 0x817
> >info: [drm] Num pipes: 1
> >bwn0 on ssb0
> >bwn0: WLAN (chipid 0x4311 rev 13) PHY (analog 4 type 2 rev 9) RADIO
> >(manuf 0x17f ver 0x2050 rev 2)
> >bwn0: DMA (64 bits)
> >bwn0: [FILTER]
> >
> >scan - works.
> >HP# ifconfig wlan0 scan
> >SSID/MESH ID    BSSID              CHAN RATE   S:N     INT CAPS
> >0x000000000     00:19:e1:00:e1:d0    1   54M -79:-95  100 ES   WME
> >Beeline_WiFi    00:19:e1:00:e1:d1    1   54M -79:-95  100 ES   WME
> >Beeline_WiF...  00:19:e1:00:e1:d2    1   54M -79:-95  100 EPS  RSN WPA WME
> >HP#
> >
> >but, I can test it with access point only through two days
> so, it's work, but I have reproduce panic.
> 
> I manually assign IP address:
> # ifconfig wlan0 192.168.250.2
> then, run command:
> # /etc/netstart
> and I see:
> .....
> wpa_supplicant[2084]: Failed to disable WPA in the driver
> bwn0: bwn_newstate: RUN -> INIT
> bwn0: TODO: bwn_leds_exit
> bwn0: bwn_bt_disable TODO
> Starting wpa_supplicant.
> bwn0: firmware version ( rev 410 patch 2160 date 0x751a time 0x7c0a)
> Kernel page fault with the following non-sleepable lock held:
> exclusive sleep mutex bwn0 (network driver) r = 0 (0xffffff005a769010) 
> locked @/usr/src/sys/modules/bwn/../../dev/bwn/if_bwn.c:906
> KDB: stack backtrace:
> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> _witness_sebugger() at _witness_debugger+0x2e
> witness_warn() at witness_warn+0x2c2
> trap() at trap+0x2ce
> calltrap() at calltrap+0x8
> --- trap 0xc, rip = 0xffffffff81516070, rsp = 0xffffff803ceeaa40, rbp = 
> 0xffffff803ceeaa80 ---
> bwn_dma_setup() at bwn_dma_setup+0x10
> bwn_dma_init() at bwn_dma_init+0x32
> bwn_core_init() at bwn_core_init+0x40f
> bwn_init_locked() at bwn_init_locked+0xae
> bwn_ioctl() at bwn_ioctl+0xff
> taskqueue_run() at taskqueue_run+0x91
> taskqueue_thread_loop() at taskqueue_thread_loop+0x3f
> fork_exit() at fork_exit+0x12a
> fork_tramponline() at fork_tramponline+0xe
> --- trap 0, rip = 0, rsp = 0xffffff803ceead30, rbp = 0 ---
> 
> Fatal trap 12: page fault while in kernel mode
> cpuid = 1; apic id = 01
> fault virtual address   = 0x0
> fault code              = supervisor read data, page not present
> instruction pointer     = 0x20:0xffffffff81516070
> stack pointer           = 0x28:0xffffff803ceeaa40
> frame pointer           = 0x28:0xffffff803ceeaa80
> code segment            = base 0x0, limit 0xfffff, type 0x1b
>                         = DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags        = interrupt enabled, resume, IOPL = 0
> current process         = 0 (bwn0 taskq)
> [thread pid 0 tid 100239 ]
> Stopped at bwn_dma_setup+0x10: movq (%rax), %rax

Just come back from vacation.  Could you please test with attached
patch?  Additionally it could be downloaded at the following URL:

	http://people.freebsd.org/~weongyo/patch_bwn_20100101.diff

regards,
Weongyo Jeong


--fUYQa+Pmc3FrFX/N
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="patch_bwn_20100101.diff"

--- if_bwn.c	2009-12-22 16:32:53.000000000 -0800
+++ /mnt/t62/sys/dev/bwn/if_bwn.c	2010-01-01 14:45:43.000000000 -0800
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2008 Weongyo Jeong <weongyo@freebsd.org>
+ * Copyright (c) 2009-2010 Weongyo Jeong <weongyo@freebsd.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -792,6 +792,8 @@
 	struct ieee80211com *ic = ifp->if_l2com;
 	int i;
 
+	sc->sc_flags |= BWN_FLAG_INVALID;
+
 	if (device_is_attached(sc->sc_dev)) {
 		bwn_stop(sc, 1);
 		callout_drain(&sc->sc_task_ch);
@@ -2760,14 +2762,14 @@
 
 	if (mac->mac_status >= BWN_MAC_STATUS_INITED) {
 		/* XXX FIXME opmode not based on VAP */
-		memset(sc->sc_macaddr, 0, IEEE80211_ADDR_LEN);
 		bwn_set_opmode(mac);
 		bwn_set_macaddr(mac);
 	}
 
 	if (mac->mac_status >= BWN_MAC_STATUS_STARTED)
 		bwn_core_stop(mac);
-	bwn_core_exit(mac);
+	if (sc->sc_flags & BWN_FLAG_INVALID)
+		bwn_core_exit(mac);
 	sc->sc_rf_enabled = 0;
 
 	ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);

--fUYQa+Pmc3FrFX/N--



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