svn commit: r213595 - stable/8/sys/dev/bge

Pyun YongHyeon yongari at FreeBSD.org
Fri Oct 8 18:50:00 UTC 2010


Author: yongari
Date: Fri Oct  8 18:49:59 2010
New Revision: 213595
URL: http://svn.freebsd.org/changeset/base/213595

Log:
  MFC r212069,212071:
  r212069:
    bge_txeof() already checks whether it has to free transmitted mbufs
    or not by comparing reported TX consumer index with saved index. So
    remove unnecessary check done after freeing transmitted mbufs.
    While I'm here nuke unnecessary variable initializations.
  
  r212071:
    Remove unnecessary atomic operation in bge_poll. bge(4) always
    holds a driver lock in the function entry and
    memory synchronization is handled by bus_dmamap_sync(9).

Modified:
  stable/8/sys/dev/bge/if_bge.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/dev/bge/if_bge.c
==============================================================================
--- stable/8/sys/dev/bge/if_bge.c	Fri Oct  8 18:46:02 2010	(r213594)
+++ stable/8/sys/dev/bge/if_bge.c	Fri Oct  8 18:49:59 2010	(r213595)
@@ -3405,7 +3405,7 @@ bge_rxeof(struct bge_softc *sc, uint16_t
 static void
 bge_txeof(struct bge_softc *sc, uint16_t tx_cons)
 {
-	struct bge_tx_bd *cur_tx = NULL;
+	struct bge_tx_bd *cur_tx;
 	struct ifnet *ifp;
 
 	BGE_LOCK_ASSERT(sc);
@@ -3423,7 +3423,7 @@ bge_txeof(struct bge_softc *sc, uint16_t
 	 * frames that have been sent.
 	 */
 	while (sc->bge_tx_saved_considx != tx_cons) {
-		uint32_t		idx = 0;
+		uint32_t		idx;
 
 		idx = sc->bge_tx_saved_considx;
 		cur_tx = &sc->bge_ldata.bge_tx_ring[idx];
@@ -3442,8 +3442,7 @@ bge_txeof(struct bge_softc *sc, uint16_t
 		BGE_INC(sc->bge_tx_saved_considx, BGE_TX_RING_CNT);
 	}
 
-	if (cur_tx != NULL)
-		ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+	ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
 	if (sc->bge_txcnt == 0)
 		sc->bge_timer = 0;
 }
@@ -3469,8 +3468,8 @@ bge_poll(struct ifnet *ifp, enum poll_cm
 	rx_prod = sc->bge_ldata.bge_status_block->bge_idx[0].bge_rx_prod_idx;
 	tx_cons = sc->bge_ldata.bge_status_block->bge_idx[0].bge_tx_cons_idx;
 
-	statusword = atomic_readandclear_32(
-	    &sc->bge_ldata.bge_status_block->bge_status);
+	statusword = sc->bge_ldata.bge_status_block->bge_status;
+	sc->bge_ldata.bge_status_block->bge_status = 0;
 
 	bus_dmamap_sync(sc->bge_cdata.bge_status_tag,
 	    sc->bge_cdata.bge_status_map,


More information about the svn-src-stable-8 mailing list