On Wed, Jun 03, 2015 at 23:14 +0200, mxb wrote:
>
> Any chance to get this committed?
> Stepped on it once more without this patch.
>
I'd like to. OKs?
> //mxb
>
> On 2015-05-22 19:53, Mike Belopuhov wrote:
> >vmx doesn't check if it's wasn't stopped before calling rx/tx
> >interrupt routines... the patch below should fix it up. not
> >entirely sure why do they need to re-enable the interrupt
> >every time, but i'm pretty positive you don't want that if
> >you're !IFF_RUNNING.
> >
> >diff --git sys/dev/pci/if_vmx.c sys/dev/pci/if_vmx.c
> >index 925a977..989cae1 100644
> >--- sys/dev/pci/if_vmx.c
> >+++ sys/dev/pci/if_vmx.c
> >@@ -588,21 +588,24 @@ vmxnet3_disable_all_intrs(struct vmxnet3_softc *sc)
> > int
> > vmxnet3_intr(void *arg)
> > {
> > struct vmxnet3_softc *sc = arg;
> >+ struct ifnet *ifp = &sc->sc_arpcom.ac_if;
> > if (READ_BAR1(sc, VMXNET3_BAR1_INTR) == 0)
> > return 0;
> > if (sc->sc_ds->event)
> > vmxnet3_evintr(sc);
> >- vmxnet3_rxintr(sc, &sc->sc_rxq[0]);
> >- vmxnet3_txintr(sc, &sc->sc_txq[0]);
> > #ifdef VMXNET3_STAT
> > vmxstat.intr++;
> > #endif
> >- vmxnet3_enable_intr(sc, 0);
> >+ if (ifp->if_flags & IFF_RUNNING) {
> >+ vmxnet3_rxintr(sc, &sc->sc_rxq[0]);
> >+ vmxnet3_txintr(sc, &sc->sc_txq[0]);
> >+ vmxnet3_enable_intr(sc, 0);
> >+ }
> > return 1;
> > }
> > void
> > vmxnet3_evintr(struct vmxnet3_softc *sc)
>