((caddr_t)c->sis_ptr - sc->sc_listkva), sizeof(struct sis_desc),
((caddr_t)c - sc->sc_listkva), sizeof(struct sis_desc),
int sis_newbuf(sc, c, m)	struct sis_softc	*sc;	struct sis_desc		*c;	struct mbuf		*m;{	struct mbuf		*m_new = NULL;	bus_dmamap_t		map;	if (m == NULL) {		MGETHDR(m_new, M_DONTWAIT, MT_DATA);		if (m_new == NULL) {			printf("sis%d: no memory for rx list "			    "-- packet dropped!\n", sc->sis_unit);			return(ENOBUFS);		}		MCLGET(m_new, M_DONTWAIT);		if (!(m_new->m_flags & M_EXT)) {			printf("sis%d: no memory for rx list "			    "-- packet dropped!\n", sc->sis_unit);			m_freem(m_new);			return(ENOBUFS);		}		m_new->m_len = m_new->m_pkthdr.len = MCLBYTES;	} else {		m_new = m;		m_new->m_len = m_new->m_pkthdr.len = MCLBYTES;		m_new->m_data = m_new->m_ext.ext_buf;	}	if (bus_dmamap_load(sc->sc_dmat, sc->sc_rx_sparemap,	    mtod(m_new, caddr_t), MCLBYTES, NULL, BUS_DMA_NOWAIT) != 0) {		printf("%s: rx load failed\n", sc->sc_dev.dv_xname);		m_freem(m_new);		return (ENOBUFS);	}	map = c->map;	c->map = sc->sc_rx_sparemap;	sc->sc_rx_sparemap = map;	bus_dmamap_sync(sc->sc_dmat, c->map, 0, c->map->dm_mapsize,	    BUS_DMASYNC_PREREAD);	m_adj(m_new, sizeof(u_int64_t));	c->sis_mbuf = m_new;	c->sis_ptr = c->map->dm_segs[0].ds_addr + sizeof(u_int64_t);	c->sis_ctl = SIS_RXLEN;	bus_dmamap_sync(sc->sc_dmat, sc->sc_listmap,	    ((caddr_t)c->sis_ptr - sc->sc_listkva), sizeof(struct sis_desc),	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);	return(0);}