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-head mailing list