Hi,

On my laptop I have lagg setup in failover mode between wired and
wireless interfaces, as it is decribed in handbook:

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-aggregation.html#networking-lagg-wired-and-wireless

On start I have been observing witness warnings like below:

taskqueue_drain with the following non-sleepable locks held:
exclusive rw if_lagg rwlock (if_lagg rwlock) r = 0 (0xfffffe000aa9d408) locked 
@ /home/golub/freebsd/base/head/sys/modules/if_lagg/../../net/if_lagg.c:1065
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b
kdb_backtrace() at kdb_backtrace+0x39
witness_warn() at witness_warn+0x4b2
taskqueue_drain() at taskqueue_drain+0x3a
ieee80211_waitfor_parent() at ieee80211_waitfor_parent+0x28
ieee80211_ioctl() at ieee80211_ioctl+0x3e9
if_setflag() at if_setflag+0xc0
ifpromisc() at ifpromisc+0x2c
lagg_ioctl() at lagg_ioctl+0x7d5
if_setflag() at if_setflag+0xc0
ifpromisc() at ifpromisc+0x2c
bridge_ioctl_add() at bridge_ioctl_add+0x454
bridge_ioctl() at bridge_ioctl+0x268
in_control() at in_control+0x219
ifioctl() at ifioctl+0x1896
kern_ioctl() at kern_ioctl+0x1b0
sys_ioctl() at sys_ioctl+0x11f
amd64_syscall() at amd64_syscall+0x282
Xfast_syscall() at Xfast_syscall+0xfb
--- syscall (54, FreeBSD ELF64, sys_ioctl), rip = 0x8011815ca, rsp = 
0x7fffffffd3f8, rbp = 0x7fffffffd4a0 ---

and eventually the panic "Sleeping thread owns a non-sleepable lock"
in lagg_input, when a packet arrives simultaneously with ifconfig run.

The lagg gets if_lagg rwlock before going to setflag, which ends up
calling ieee80211_ioctl and ieee80211_waitfor_parent (wait for all
deferred parent interface tasks to complete).

Does anybody see a way how it could be solved?

-- 
Mikolaj Golub
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to