Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Apr 2016 16:52:29 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-wireless@FreeBSD.org
Subject:   [Bug 208860] [net80211]: ieee80211_waitfor_parent() will hang forever if something is enqueued into the taskqueue
Message-ID:  <bug-208860-21060@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D208860

            Bug ID: 208860
           Summary: [net80211]: ieee80211_waitfor_parent() will hang
                    forever if something is enqueued into the taskqueue
           Product: Base System
           Version: 11.0-CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: wireless
          Assignee: freebsd-wireless@FreeBSD.org
          Reporter: avos@freebsd.org

Manual tracing (wlan0 and wlan2 are monitor mode vaps on wpi0):

wlan0:
wlan0: ieee80211_ioctl: before ieee80211_start_locked()
wlan0: start running, 0 vaps running
wlan0: ieee80211_start_locked: up parent wpi0
wlan0: ieee80211_ioctl: before ieee80211_waitfor_parent(), wait=3D1
wlan0: ieee80211_waitfor_parent: before taskqueue_block()
wlan0: ieee80211_waitfor_parent: ieee80211_draintask(ic, &ic->ic_parent_tas=
k);
<<< hangs here

wlan2:
wlan2: ieee80211_ioctl: before ieee80211_start_locked()
wlan2: start running, 1 vaps running
wlan2: ieee80211_new_state_locked: INIT -> RUN (nrunning 0 nscanning 0)
wlan2: ieee80211_ioctl: before ieee80211_waitfor_parent(), wait=3D0
<<< no progress too

Since the manpage for taskqueue(9) states

> The taskqueue_block() function blocks the taskqueue.  It prevents any
> enqueued but  not running tasks from being executed.

and

> Note that if taskqueue_drain() is called on a task that is enqueued on a
> taskqueue that is blocked by taskqueue_block(), then taskqueue_drain()
> can not return until the taskqueue is unblocked.

this function will never work as expected (probably, it should set a flag f=
or
ieee80211_runtask() + call taskqueue_drain_all() instead).

--=20
You are receiving this mail because:
You are the assignee for the bug.=



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