1238106Sdesstruct GTeth_desc 2238106Sdes{ 3238106Sdes unsigned ed_cmdsts; 4238106Sdes}; 5238106Sdesstruct GTeth_softc 6238106Sdes{ 7238106Sdes struct GTeth_desc txq_desc[32]; 8238106Sdes unsigned int txq_fi; 9238106Sdes unsigned int txq_nactive; 10238106Sdes}; 11238106Sdes 12238106Sdesvoid 13238106SdesGTeth_txq_free (struct GTeth_softc *sc) 14238106Sdes{ 15238106Sdes struct GTeth_desc *txd = &sc->txq_desc[0]; 16238106Sdes txd->ed_cmdsts &= ~(1U << (31)); 17238106Sdes} 18238106Sdesvoid 19238106SdesGTeth_txq_done (struct GTeth_softc *sc) 20238106Sdes{ 21238106Sdes while (sc->txq_nactive > 0) 22238106Sdes { 23238106Sdes volatile struct GTeth_desc *txd = &sc->txq_desc[sc->txq_fi]; 24269257Sdes if (txd->ed_cmdsts) 25269257Sdes { 26269257Sdes if (sc->txq_nactive == 1) 27269257Sdes return; 28269257Sdes } 29269257Sdes GTeth_txq_free (sc); 30269257Sdes } 31269257Sdes} 32269257Sdes