With MSI interrupts bge(4) just schedules taskqueue. Enter the network

epoch in the taskqueue handler.

Reported by:	kib
This commit is contained in:
Gleb Smirnoff 2020-01-23 16:36:58 +00:00
parent 1bfca40c57
commit 976d7cecd5

View File

@ -4646,6 +4646,7 @@ bge_msi_intr(void *arg)
static void
bge_intr_task(void *arg, int pending)
{
struct epoch_tracker et;
struct bge_softc *sc;
if_t ifp;
uint32_t status, status_tag;
@ -4688,7 +4689,9 @@ bge_intr_task(void *arg, int pending)
sc->bge_rx_saved_considx != rx_prod) {
/* Check RX return ring producer/consumer. */
BGE_UNLOCK(sc);
NET_EPOCH_ENTER(et);
bge_rxeof(sc, rx_prod, 0);
NET_EPOCH_EXIT(et);
BGE_LOCK(sc);
}
if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {