Author: manu
Date: Sat Nov 18 20:55:37 2017
New Revision: 325981
URL: https://svnweb.freebsd.org/changeset/base/325981

Log:
  if_awg: replace multiple calls to if_setdrvflagbits with one call in 
awg_txintr
  
  Small optimization
  
  Submitted by: Guy Yur <[email protected]>
  Differential Revision:        https://reviews.freebsd.org/D13033

Modified:
  head/sys/arm/allwinner/if_awg.c

Modified: head/sys/arm/allwinner/if_awg.c
==============================================================================
--- head/sys/arm/allwinner/if_awg.c     Sat Nov 18 20:50:31 2017        
(r325980)
+++ head/sys/arm/allwinner/if_awg.c     Sat Nov 18 20:55:37 2017        
(r325981)
@@ -916,7 +916,7 @@ awg_txintr(struct awg_softc *sc)
        struct emac_desc *desc;
        uint32_t status, size;
        if_t ifp;
-       int i;
+       int i, prog;
 
        AWG_ASSERT_LOCKED(sc);
 
@@ -924,6 +924,8 @@ awg_txintr(struct awg_softc *sc)
            BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
 
        ifp = sc->ifp;
+
+       prog = 0;
        for (i = sc->tx.next; sc->tx.queued > 0; i = TX_NEXT(i)) {
                desc = &sc->tx.desc_ring[i];
                status = le32toh(desc->status);
@@ -936,11 +938,14 @@ awg_txintr(struct awg_softc *sc)
                        else
                                if_inc_counter(ifp, IFCOUNTER_OPACKETS, 1);
                }
+               prog++;
                awg_clean_txbuf(sc, i);
-               if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
        }
 
-       sc->tx.next = i;
+       if (prog > 0) {
+               sc->tx.next = i;
+               if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
+       }
 }
 
 static void
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to