Author: yongari
Date: Mon Aug 31 22:09:48 2009
New Revision: 196721
URL: http://svn.freebsd.org/changeset/base/196721

Log:
  Make sure rx descriptor ring align on 16 bytes. I guess the
  alignment requirement could be multiple of 4 bytes but I think
  using descriptor size would make intention clearer.
  Previously the size of rx descriptor was not power of 2 so it
  caused panic in bus_dmamem_alloc(9).
  
  Reported by:  Jeff Blank (jb000003 <> mr-happy dot com)
  MFC after:    3 days

Modified:
  head/sys/dev/txp/if_txp.c

Modified: head/sys/dev/txp/if_txp.c
==============================================================================
--- head/sys/dev/txp/if_txp.c   Mon Aug 31 21:36:19 2009        (r196720)
+++ head/sys/dev/txp/if_txp.c   Mon Aug 31 22:09:48 2009        (r196721)
@@ -1389,7 +1389,8 @@ txp_alloc_rings(struct txp_softc *sc)
 
        /* High priority rx ring. */
        error = txp_dma_alloc(sc, "hi priority rx ring",
-           &sc->sc_cdata.txp_rxhiring_tag, sizeof(struct txp_rx_desc), 0,
+           &sc->sc_cdata.txp_rxhiring_tag,
+           roundup(sizeof(struct txp_rx_desc), 16), 0,
            &sc->sc_cdata.txp_rxhiring_map, (void **)&sc->sc_ldata.txp_rxhiring,
            sizeof(struct txp_rx_desc) * RX_ENTRIES,
            &sc->sc_ldata.txp_rxhiring_paddr);
@@ -1409,7 +1410,8 @@ txp_alloc_rings(struct txp_softc *sc)
 
        /* Low priority rx ring. */
        error = txp_dma_alloc(sc, "low priority rx ring",
-           &sc->sc_cdata.txp_rxloring_tag, sizeof(struct txp_rx_desc), 0,
+           &sc->sc_cdata.txp_rxloring_tag,
+           roundup(sizeof(struct txp_rx_desc), 16), 0,
            &sc->sc_cdata.txp_rxloring_map, (void **)&sc->sc_ldata.txp_rxloring,
            sizeof(struct txp_rx_desc) * RX_ENTRIES,
            &sc->sc_ldata.txp_rxloring_paddr);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to