diff options
author | yongari <yongari@FreeBSD.org> | 2010-07-06 18:17:31 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2010-07-06 18:17:31 +0000 |
commit | 456af8636374d4f5114fe0e7aa3248920b207afa (patch) | |
tree | 7deb5370178b6a2c5e0a3b8c7b1f9cfad25d2add | |
parent | 2cfa1baf66ec27455c8f9ec87b2ea54ca5211b4e (diff) | |
download | FreeBSD-src-456af8636374d4f5114fe0e7aa3248920b207afa.zip FreeBSD-src-456af8636374d4f5114fe0e7aa3248920b207afa.tar.gz |
Zero entire status block and add missing bus_dmamap_sync(9).
-rw-r--r-- | sys/dev/bge/if_bge.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c index ec6ef2d..8f5863f 100644 --- a/sys/dev/bge/if_bge.c +++ b/sys/dev/bge/if_bge.c @@ -1760,15 +1760,19 @@ bge_blockinit(struct bge_softc *sc) BGE_ADDR_HI(sc->bge_ldata.bge_status_block_paddr)); CSR_WRITE_4(sc, BGE_HCC_STATUSBLK_ADDR_LO, BGE_ADDR_LO(sc->bge_ldata.bge_status_block_paddr)); - sc->bge_ldata.bge_status_block->bge_idx[0].bge_rx_prod_idx = 0; - sc->bge_ldata.bge_status_block->bge_idx[0].bge_tx_cons_idx = 0; /* Set up status block size. */ if (sc->bge_asicrev == BGE_ASICREV_BCM5700 && - sc->bge_chipid != BGE_CHIPID_BCM5700_C0) + sc->bge_chipid != BGE_CHIPID_BCM5700_C0) { val = BGE_STATBLKSZ_FULL; - else + bzero(sc->bge_ldata.bge_status_block, BGE_STATUS_BLK_SZ); + } else { val = BGE_STATBLKSZ_32BYTE; + bzero(sc->bge_ldata.bge_status_block, 32); + } + bus_dmamap_sync(sc->bge_cdata.bge_status_tag, + sc->bge_cdata.bge_status_map, + BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); /* Turn on host coalescing state machine */ CSR_WRITE_4(sc, BGE_HCC_MODE, val | BGE_HCCMODE_ENABLE); |