Some netisr's are just used to wakeup a driver via schednetisr(). The
authorMatthew Dillon <dillon@dragonflybsd.org>
Tue, 6 Jun 2006 18:04:16 +0000 (18:04 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Tue, 6 Jun 2006 18:04:16 +0000 (18:04 +0000)
commit2682b36eb1d94588f24d0531398b8bfbc120c2c5
tree374376fa25778d457b49ac3de150b01d4c70616e
parenta975cf3a9729e7e9271824d96ec46d9303c49574
Some netisr's are just used to wakeup a driver via schednetisr().  The
netmsg's sent to these ISR's must be replied whereas the netmsg's sent
to packet-handling ISRs must not be replied because the netmsg is embedded
in the mbuf).

In the case of notifications via schednetisr(), we reply the message before
we run the queue in order to interlock the wakeup message with the queue.
Otherwise we could end up with a race that leaves packets in the queue
without a wakeup to process them.

Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
Investigated-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
sys/net/ppp/if_ppp.c
sys/netgraph/netgraph/ng_base.c