diff -dru vmxnet3-only.orig/vmxnet3.c vmxnet3-only/vmxnet3.c --- vmxnet3-only.orig/vmxnet3.c 2012-02-15 16:07:44.000000000 +0100 +++ vmxnet3-only/vmxnet3.c 2012-05-20 11:20:47.280333352 +0200 @@ -1146,7 +1146,6 @@ /* If this device is being reset, dont reset it again. */ if (test_and_set_bit(&sc->state, VMXNET3_STATE_BIT_RESETTING)) { VMXNET3_LOG(sc->dev, 1, "Device being reset, watchdog will exit"); - ifp->if_timer = 1; VMXNET3_UNLOCK(sc); return; } @@ -1200,7 +1199,6 @@ vmxnet3_close_locked(vmxnet3_adapter_t *sc) { int i; - sc->ifp->if_watchdog = NULL; if (!(sc->ifp->if_drv_flags & IFF_DRV_RUNNING)) { VMXNET3_LOG(sc->dev, 1, "Interface already closed.\n"); @@ -1269,10 +1267,6 @@ return ret; } - /* Setup watchdog function */ - sc->ifp->if_watchdog = NULL;//vmxnet3_watchdog; - sc->ifp->if_timer = 1; - VMXNET3_LOG(sc->dev, 1, "Interface activated.\n"); return 0; } @@ -2090,7 +2084,6 @@ ifp = sc->ifp; if_initname(ifp, device_get_name(dev), device_get_unit(dev)); ifp->if_softc = sc; - ifp->if_timer = 1; ifp->if_flags = IFF_BROADCAST | IFF_MULTICAST | IFF_SIMPLEX; ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | diff -dru vmxnet3-only.orig/vmxnet3_int.h vmxnet3-only/vmxnet3_int.h --- vmxnet3-only.orig/vmxnet3_int.h 2012-02-15 16:07:44.000000000 +0100 +++ vmxnet3-only/vmxnet3_int.h 2012-05-20 11:21:32.132987316 +0200 @@ -134,9 +134,6 @@ #define VMXNET3_GET_ADDR_LO(dma) ((uint32_t)(dma)) #define VMXNET3_GET_ADDR_HI(dma) ((uint32_t)(((uint64_t)(dma)) >> 32)) -inline Bool set_bit(uint8_t *field, uint8_t bit); -inline Bool test_and_set_bit(uint8_t *field, uint8_t bit); - /* Following are not neccesarily atomic operations */ static inline Bool set_bit(uint8_t *field, uint8_t bit) { diff -dru vmxnet3-only.orig/vmxnet3_tx.c vmxnet3-only/vmxnet3_tx.c --- vmxnet3-only.orig/vmxnet3_tx.c 2012-02-15 16:07:44.000000000 +0100 +++ vmxnet3-only/vmxnet3_tx.c 2012-05-20 11:29:24.144945489 +0200 @@ -470,6 +470,12 @@ sop = (Vmxnet3_TxDesc *)(tq->cmd_ring.base + tq->cmd_ring.next2fill); + if (m_head == NULL) { + VMXNET3_LOG(sc->dev, 1, "Warning : Called with no mbuf (m_head == NULL) !\n"); + tq->stats.drop_total++; + return EINVAL; + } + for (m = m_head; m != NULL; m = m->m_next) { tbi = tq->cmd_ring.buf_info + tq->cmd_ring.next2fill; txd = (Vmxnet3_TxDesc *)tq->cmd_ring.base + tq->cmd_ring.next2fill;