Don't calltsec_receive_intr_locked() from the error interrupt handler.
The tsec_error_intr_locked() is called with the global lock owned (e.g. the transmit and the receive lock are both owned). We must not call tsec_receive_intr_locked() while owning the transmit lock. The normal receive interrupt takes care that frames are received, this is none of the business of the error interrupt. Submitted by: Sebastian Huber <sebastian.huber_AT_embedded-brains.de>
This commit is contained in:
parent
2c0dbbcb8a
commit
2fad65cfa0
@ -1542,9 +1542,6 @@ tsec_error_intr_locked(struct tsec_softc *sc, int count)
|
||||
/* Check for discarded frame due to a lack of buffers */
|
||||
if (eflags & TSEC_IEVENT_BSY) {
|
||||
if_inc_counter(ifp, IFCOUNTER_IQDROPS, 1);
|
||||
|
||||
/* Get data from RX buffers */
|
||||
tsec_receive_intr_locked(sc, count);
|
||||
}
|
||||
|
||||
if (ifp->if_flags & IFF_DEBUG)
|
||||
|
Loading…
x
Reference in New Issue
Block a user