summaryrefslogtreecommitdiffstats
path: root/sys/dev/dwc/if_dwc.c
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-06-09 19:14:27 +0000
committerdim <dim@FreeBSD.org>2015-06-09 19:14:27 +0000
commit6370dd4a2cfcd7b1e323f780f34523097a892d0c (patch)
tree16a54540a7fb71a7c91fd866ad2437410acbf587 /sys/dev/dwc/if_dwc.c
parent8c2b6d93700b452fac3cadba57de1b18a783ec92 (diff)
parent8fbb8a1dd51626b81ee23212d3001e3908ff17c4 (diff)
downloadFreeBSD-src-6370dd4a2cfcd7b1e323f780f34523097a892d0c.zip
FreeBSD-src-6370dd4a2cfcd7b1e323f780f34523097a892d0c.tar.gz
Merged ^/head r283871 through r284187.
Diffstat (limited to 'sys/dev/dwc/if_dwc.c')
-rw-r--r--sys/dev/dwc/if_dwc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/dwc/if_dwc.c b/sys/dev/dwc/if_dwc.c
index 57e6b44..7ca16ac 100644
--- a/sys/dev/dwc/if_dwc.c
+++ b/sys/dev/dwc/if_dwc.c
@@ -741,9 +741,11 @@ dwc_txfinish_locked(struct dwc_softc *sc)
{
struct dwc_bufmap *bmap;
struct dwc_hwdesc *desc;
+ struct ifnet *ifp;
DWC_ASSERT_LOCKED(sc);
+ ifp = sc->ifp;
while (sc->tx_idx_tail != sc->tx_idx_head) {
desc = &sc->txdesc_ring[sc->tx_idx_tail];
if ((desc->tdes0 & DDESC_TDES0_OWN) != 0)
@@ -756,6 +758,7 @@ dwc_txfinish_locked(struct dwc_softc *sc)
bmap->mbuf = NULL;
dwc_setup_txdesc(sc, sc->tx_idx_tail, 0, 0);
sc->tx_idx_tail = next_txidx(sc, sc->tx_idx_tail);
+ ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
}
/* If there are no buffers outstanding, muzzle the watchdog. */
@@ -838,8 +841,10 @@ dwc_intr(void *arg)
if (reg & DMA_STATUS_RI)
dwc_rxfinish_locked(sc);
- if (reg & DMA_STATUS_TI)
+ if (reg & DMA_STATUS_TI) {
dwc_txfinish_locked(sc);
+ dwc_txstart_locked(sc);
+ }
}
if (reg & DMA_STATUS_AIS) {
OpenPOWER on IntegriCloud