Changeset View
Changeset View
Standalone View
Standalone View
head/usr.sbin/bhyve/pci_e82545.c
Show First 20 Lines • Show All 1,399 Lines • ▼ Show 20 Lines | if (lim != size / 4 && sc->esc_TDH == sc->esc_TDT) | ||||
cause |= E1000_ICR_TXQE; | cause |= E1000_ICR_TXQE; | ||||
if (cause) | if (cause) | ||||
e82545_icr_assert(sc, cause); | e82545_icr_assert(sc, cause); | ||||
DPRINTF("tx_run done: head %x, rhead %x, tail %x\r\n", | DPRINTF("tx_run done: head %x, rhead %x, tail %x\r\n", | ||||
sc->esc_TDH, sc->esc_TDHr, sc->esc_TDT); | sc->esc_TDH, sc->esc_TDHr, sc->esc_TDT); | ||||
} | } | ||||
static void * | static _Noreturn void * | ||||
e82545_tx_thread(void *param) | e82545_tx_thread(void *param) | ||||
{ | { | ||||
struct e82545_softc *sc = param; | struct e82545_softc *sc = param; | ||||
pthread_mutex_lock(&sc->esc_mtx); | pthread_mutex_lock(&sc->esc_mtx); | ||||
for (;;) { | for (;;) { | ||||
while (!sc->esc_tx_enabled || sc->esc_TDHr == sc->esc_TDT) { | while (!sc->esc_tx_enabled || sc->esc_TDHr == sc->esc_TDT) { | ||||
if (sc->esc_tx_enabled && sc->esc_TDHr != sc->esc_TDT) | if (sc->esc_tx_enabled && sc->esc_TDHr != sc->esc_TDT) | ||||
▲ Show 20 Lines • Show All 970 Lines • Show Last 20 Lines |