svn commit: r283948 - head/sys/dev/dwc
Marcelo Araujo
araujobsdport at gmail.com
Wed Jun 3 14:52:34 UTC 2015
Oi,
fp = sc->ifp;
Deveria ser:
ifp = sc->ifp;
[]s
On Jun 3, 2015 10:48 PM, "Luiz Otavio O Souza" <loos at freebsd.org> wrote:
> Author: loos
> Date: Wed Jun 3 14:48:03 2015
> New Revision: 283948
> URL: https://svnweb.freebsd.org/changeset/base/283948
>
> Log:
> Fix the OACTIVE handling on if_dwc.
>
> Previously the OACTIVE flag was being set when the tx descriptors are
> fully
> allocated but it wasn't unset anywhere.
>
> As soon as a packet is transmitted, unset the OACTIVE flag and call start
> routine to push any pending packets from the tx queue.
>
> This closes another race where a full tx queue would jam the tx path (tx
> queue is full, new packets cannot be added to queue and dwc_txstart never
> gets called).
>
> Modified:
> head/sys/dev/dwc/if_dwc.c
>
> Modified: head/sys/dev/dwc/if_dwc.c
>
> ==============================================================================
> --- head/sys/dev/dwc/if_dwc.c Wed Jun 3 14:07:50 2015 (r283947)
> +++ head/sys/dev/dwc/if_dwc.c Wed Jun 3 14:48:03 2015 (r283948)
> @@ -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);
>
> + fp = 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) {
> _______________________________________________
> svn-src-head at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"
>
More information about the svn-src-all
mailing list