svn commit: r206364 - head/sys/dev/msk

Pyun YongHyeon yongari at FreeBSD.org
Wed Apr 7 17:12:57 UTC 2010


Author: yongari
Date: Wed Apr  7 17:12:57 2010
New Revision: 206364
URL: http://svn.freebsd.org/changeset/base/206364

Log:
  Partial revert r204545.
  Just relying on status LE ownership of status block seems to cause
  poor performance. Always read current status index register first
  and then check status ownership as we had before. Accessing status
  index register seems to trigger immediate status update if
  controller have pending status updates.
  
  MFC after:	1 week
  Reported by:	Andre Albsmeier <Andre.Albsmeier <> siemens dot com>
  Tested by:	Andre Albsmeier <Andre.Albsmeier <> siemens dot com>

Modified:
  head/sys/dev/msk/if_msk.c

Modified: head/sys/dev/msk/if_msk.c
==============================================================================
--- head/sys/dev/msk/if_msk.c	Wed Apr  7 17:07:06 2010	(r206363)
+++ head/sys/dev/msk/if_msk.c	Wed Apr  7 17:12:57 2010	(r206364)
@@ -3473,6 +3473,9 @@ msk_handle_events(struct msk_softc *sc)
 	uint32_t control, status;
 	int cons, len, port, rxprog;
 
+	if (sc->msk_stat_cons == CSR_READ_2(sc, STAT_PUT_IDX))
+		return (0);
+
 	/* Sync status LEs. */
 	bus_dmamap_sync(sc->msk_stat_tag, sc->msk_stat_map,
 	    BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
@@ -3556,7 +3559,7 @@ msk_handle_events(struct msk_softc *sc)
 	if (rxput[MSK_PORT_B] > 0)
 		msk_rxput(sc->msk_if[MSK_PORT_B]);
 
-	return (rxprog > sc->msk_process_limit ? EAGAIN : 0);
+	return (sc->msk_stat_cons != CSR_READ_2(sc, STAT_PUT_IDX));
 }
 
 static void


More information about the svn-src-all mailing list