diff options
author | Richard Braun <rbraun@sceen.net> | 2013-11-06 01:44:09 +0100 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2013-11-06 01:44:09 +0100 |
commit | 218cae5a714342b5d82a5b004d58f0a9ebbbfe5e (patch) | |
tree | 620c7d730f94bf66e28b21a9a5d96b2426d2f05d /hurd | |
parent | 880dd56f468b57a198ab2136767d03ddaa586eef (diff) |
pfinet: fix emission on the loopback device
Unlike other devices, sending packets on the loopback device causes the
netif_rx() function to be called from the net_bh worker thread. Since
the thread is already running, it can't wake itself up when calling
mark_bh(). Use a new variable to indicate when net_bh work is pending.
* glue-include/linux/interrupt.h (net_bh_raised): Declare new global
variable.
(mark_bh): Set net_bh_raised to 1 before waking up net_bh worker thread.
* loopback.c (loopback_xmit): Add comment giving details about locking.
* sched.c (net_bh_raised): Define new global variable.
(net_bh_worker): Wait for net_bh_raised to become true and reset it
before processing net_bh work.
Diffstat (limited to 'hurd')
0 files changed, 0 insertions, 0 deletions