TX_QLEN
int i = sc->txqi % TX_QLEN;
sc->txqi = (i + 1) % TX_QLEN;
for (i = 0; i < TX_QLEN; i++) {
bi = (sc->txqi + sc->txqc) % TX_QLEN;
if (sc->txqc > TX_QLEN) {
panic("%s: txqc %i > %i", __FUNCTION__, sc->txqc, TX_QLEN);
struct emac_qmeta txq[TX_QLEN];
CTRLPAGE_DMASYNC(TX_QLEN * 2 * sizeof(uint32_t),
TX_QLEN * sizeof(uint32_t), BUS_DMASYNC_PREREAD);
tbi = (tbi + 1) % TX_QLEN;
if (sc->TXStsQ_cur >= sc->TXStsQ + TX_QLEN) {
CTRLPAGE_DMASYNC(TX_QLEN * 3 * sizeof(uint32_t),
CTRLPAGE_DMASYNC(TX_QLEN * 3 * sizeof(uint32_t),
sc->TXDQ_avail = TX_QLEN - 1;
sc->TXStsQ = &sc->TXDQ[TX_QLEN * 2];
sc->RXDQ = &sc->TXStsQ[TX_QLEN];
EPE_WRITE(TXDQBLen, TX_QLEN * 2 * sizeof(uint32_t));
EPE_WRITE(TXStsQBLen, TX_QLEN * sizeof(uint32_t));
bus_dmamap_create(sc->sc_dmat, MCLBYTES, TX_QLEN/4, MCLBYTES,
for (i = 0; i < TX_QLEN; i++) {
bi = (bi + 1) % TX_QLEN;
if ((sc->TXDQ_avail - ndq) > 0 && ndq < TX_QLEN / 2) {
CTRLPAGE_DMASYNC(0, TX_QLEN * 2 * sizeof(uint32_t),
struct epe_qmeta txq[TX_QLEN];
int bi = sc->txqi % TX_QLEN;
sc->txqi = (bi + 1) % TX_QLEN;
sc->tbqlen = roundup(ETH_DSC_SIZE * (TX_QLEN + 1) * 2, PAGE_SIZE);
for (i = 0; i < TX_QLEN; i++) {
(i == (TX_QLEN - 1) ? ETH_TDSC_I_WRAP : 0);
for (i = 0; i < TX_QLEN; i++) {
bi = (sc->txqi + sc->txqc) % TX_QLEN;
if (sc->txqc > TX_QLEN)
panic("%s: txqc %i > %i", __FUNCTION__, sc->txqc, TX_QLEN);
(bi == (TX_QLEN - 1) ? ETH_TDSC_I_WRAP : 0);
struct cemac_qmeta txq[TX_QLEN];