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>