rdb
emu->emu_rdb = rdb;
_citrus_db_open(struct _citrus_db **rdb, struct _region *r, const char *magic,
*rdb = db;
rtw_rxdescs_sync(struct rtw_rxdesc_blk *rdb, int desc0, int nsync, int ops)
KASSERT(nsync <= rdb->rdb_ndesc);
if (desc0 + nsync > rdb->rdb_ndesc) {
bus_dmamap_sync(rdb->rdb_dmat, rdb->rdb_dmamap,
sizeof(struct rtw_rxdesc) * (rdb->rdb_ndesc - desc0), ops);
nsync -= (rdb->rdb_ndesc - desc0);
KASSERT(desc0 < rdb->rdb_ndesc);
KASSERT(nsync <= rdb->rdb_ndesc);
KASSERT(desc0 + nsync <= rdb->rdb_ndesc);
bus_dmamap_sync(rdb->rdb_dmat, rdb->rdb_dmamap,
rtw_rxdesc_init(struct rtw_rxdesc_blk *rdb, struct rtw_rxsoft *rs,
int is_last = (idx == rdb->rdb_ndesc - 1);
struct rtw_rxdesc *rd = &rdb->rdb_desc[idx];
bus_dmamap_sync(rdb->rdb_dmat, rs->rs_dmamap, 0,
bus_dmamap_sync(rdb->rdb_dmat, rdb->rdb_dmamap,
rtw_rxdesc_init_all(struct rtw_rxdesc_blk *rdb, struct rtw_rxsoft *ctl, int kick)
for (i = 0; i < rdb->rdb_ndesc; i++) {
rtw_rxdesc_init(rdb, rs, i, kick);
struct rtw_rxdesc_blk *rdb;
rdb = &sc->sc_rxdesc_blk;
rdb->rdb_next = 0;
struct rtw_rxdesc_blk *rdb;
rdb = &sc->sc_rxdesc_blk;
for (next = rdb->rdb_next; ; next = rdb->rdb_next) {
KASSERT(next < rdb->rdb_ndesc);
rtw_rxdescs_sync(rdb, next, 1,
rd = &rdb->rdb_desc[next];
rtw_rxdescs_sync(rdb, next, 1, BUS_DMASYNC_PREREAD);
rdb->rdb_next = (next + 1) % rdb->rdb_ndesc;
rtw_rxdesc_init(rdb, rs, next, 0);
struct rtw_rxdesc_blk *rdb;
rdb = &sc->sc_rxdesc_blk;
rd = &rdb->rdb_desc[desc];
(desc >= rdb->rdb_ndesc) ? "UNUSED " : "",
struct rtw_rxdesc_blk *rdb;
rdb = &sc->sc_rxdesc_blk;
if ((rc = rtw_rxsoft_init_all(sc->sc_dmat, sc->sc_rxsoft, &rdb->rdb_ndesc,
sc->sc_dev)) != 0 && rdb->rdb_ndesc == 0) {
rdb = &sc->sc_rxdesc_blk;
rtw_rxdescs_sync(rdb, 0, rdb->rdb_ndesc,
rtw_rxdesc_init_all(rdb, sc->sc_rxsoft, 1);
rdb->rdb_next = 0;
struct rdblock *rdb;
rdb = (struct rdblock *)buf;
if (pread(fd, rdb, 512, blk * 512) != 512)
if (rdb->id == RDBLOCK_ID && rdbchksum(rdb) == 0) {