((caddr_t)cur_tx->sis_ptr - sc->sc_listkva),
((caddr_t)cur_tx - sc->sc_listkva),
void sis_txeof(sc)	struct sis_softc	*sc;{	struct sis_desc		*cur_tx = NULL;	struct ifnet		*ifp;	u_int32_t		idx;	ifp = &sc->arpcom.ac_if;	/* Clear the timeout timer. */	ifp->if_timer = 0;	/*	 * Go through our tx list and free mbufs for those	 * frames that have been transmitted.	 */	idx = sc->sis_cdata.sis_tx_cons;	while (idx != sc->sis_cdata.sis_tx_prod) {		cur_tx = &sc->sis_ldata->sis_tx_list[idx];		bus_dmamap_sync(sc->sc_dmat, sc->sc_listmap,		    ((caddr_t)cur_tx->sis_ptr - sc->sc_listkva),		    sizeof(struct sis_desc),		    BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);		if (SIS_OWNDESC(cur_tx))			break;		if (cur_tx->sis_ctl & SIS_CMDSTS_MORE) {			sc->sis_cdata.sis_tx_cnt--;			SIS_INC(idx, SIS_TX_LIST_CNT);			continue;		}		if (!(cur_tx->sis_ctl & SIS_CMDSTS_PKT_OK)) {			ifp->if_oerrors++;			if (cur_tx->sis_txstat & SIS_TXSTAT_EXCESSCOLLS)				ifp->if_collisions++;			if (cur_tx->sis_txstat & SIS_TXSTAT_OUTOFWINCOLL)				ifp->if_collisions++;		}		ifp->if_collisions +=		    (cur_tx->sis_txstat & SIS_TXSTAT_COLLCNT) >> 16;		ifp->if_opackets++;		if (cur_tx->map->dm_nsegs != 0) {			bus_dmamap_t map = cur_tx->map;			bus_dmamap_sync(sc->sc_dmat, map, 0, map->dm_mapsize,			    BUS_DMASYNC_POSTWRITE);			bus_dmamap_unload(sc->sc_dmat, map);		}		if (cur_tx->sis_mbuf != NULL) {			m_freem(cur_tx->sis_mbuf);			cur_tx->sis_mbuf = NULL;		}		sc->sis_cdata.sis_tx_cnt--;		SIS_INC(idx, SIS_TX_LIST_CNT);		ifp->if_timer = 0;	}	sc->sis_cdata.sis_tx_cons = idx;	if (cur_tx != NULL)		ifp->if_flags &= ~IFF_OACTIVE;	return;}