version 1.186, 2022/05/24 20:50:19 |
version 1.187, 2022/08/06 15:38:42 |
Line 569 sip_init_txdesc(struct sip_softc *sc, in |
|
Line 569 sip_init_txdesc(struct sip_softc *sc, in |
|
sipd->sipd_words[sc->sc_bufptr_idx] = htole32(bufptr); |
sipd->sipd_words[sc->sc_bufptr_idx] = htole32(bufptr); |
} |
} |
sipd->sipd_words[sc->sc_extsts_idx] = 0; |
sipd->sipd_words[sc->sc_extsts_idx] = 0; |
membar_producer(); |
|
sipd->sipd_words[sc->sc_cmdsts_idx] = htole32(cmdsts); |
sipd->sipd_words[sc->sc_cmdsts_idx] = htole32(cmdsts); |
/* sip_cdtxsync() will be done later. */ |
/* sip_cdtxsync() will be done later. */ |
} |
} |
Line 596 sip_init_rxdesc(struct sip_softc *sc, in |
|
Line 595 sip_init_rxdesc(struct sip_softc *sc, in |
|
htole32(rxs->rxs_dmamap->dm_segs[0].ds_addr); |
htole32(rxs->rxs_dmamap->dm_segs[0].ds_addr); |
} |
} |
sipd->sipd_words[sc->sc_extsts_idx] = 0; |
sipd->sipd_words[sc->sc_extsts_idx] = 0; |
membar_producer(); |
sip_cdrxsync(sc, x, BUS_DMASYNC_PREWRITE); |
sipd->sipd_words[sc->sc_cmdsts_idx] = |
sipd->sipd_words[sc->sc_cmdsts_idx] = |
htole32(CMDSTS_INTR | (sc->sc_parm->p_rxbuf_len & |
htole32(CMDSTS_INTR | (sc->sc_parm->p_rxbuf_len & |
sc->sc_bits.b_cmdsts_size_mask)); |
sc->sc_bits.b_cmdsts_size_mask)); |
Line 2126 gsip_rxintr(struct sip_softc *sc) |
|
Line 2125 gsip_rxintr(struct sip_softc *sc) |
|
|
|
cmdsts = |
cmdsts = |
le32toh(sc->sc_rxdescs[i].sipd_words[sc->sc_cmdsts_idx]); |
le32toh(sc->sc_rxdescs[i].sipd_words[sc->sc_cmdsts_idx]); |
extsts = |
|
le32toh(sc->sc_rxdescs[i].sipd_words[sc->sc_extsts_idx]); |
|
len = CMDSTS_SIZE(sc, cmdsts); |
|
|
|
/* |
/* |
* NOTE: OWN is set if owned by _consumer_. We're the |
* NOTE: OWN is set if owned by _consumer_. We're the |
Line 2142 gsip_rxintr(struct sip_softc *sc) |
|
Line 2138 gsip_rxintr(struct sip_softc *sc) |
|
break; |
break; |
} |
} |
|
|
|
sip_cdrxsync(sc, i, BUS_DMASYNC_POSTREAD); |
|
|
|
extsts = |
|
le32toh(sc->sc_rxdescs[i].sipd_words[sc->sc_extsts_idx]); |
|
len = CMDSTS_SIZE(sc, cmdsts); |
|
|
if (__predict_false(sc->sc_rxdiscard)) { |
if (__predict_false(sc->sc_rxdiscard)) { |
sip_init_rxdesc(sc, i); |
sip_init_rxdesc(sc, i); |
if ((cmdsts & CMDSTS_MORE) == 0) { |
if ((cmdsts & CMDSTS_MORE) == 0) { |