[Bug 208860] [net80211]: ieee80211_waitfor_parent() will hang forever if something is enqueued into the taskqueue
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sun Apr 17 16:52:29 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=208860
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 at FreeBSD.org
Reporter: avos at 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=1
wlan0: ieee80211_waitfor_parent: before taskqueue_block()
wlan0: ieee80211_waitfor_parent: ieee80211_draintask(ic, &ic->ic_parent_task);
<<< 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=0
<<< 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 for
ieee80211_runtask() + call taskqueue_drain_all() instead).
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-wireless
mailing list