Changeset View
Changeset View
Standalone View
Standalone View
head/sys/net/iflib.c
| Show First 20 Lines • Show All 2,257 Lines • ▼ Show 20 Lines | iflib_timer(void *arg) | ||||
| if (this_tick - txq->ift_last_timer_tick >= hz / 2) { | if (this_tick - txq->ift_last_timer_tick >= hz / 2) { | ||||
| txq->ift_last_timer_tick = this_tick; | txq->ift_last_timer_tick = this_tick; | ||||
| IFDI_TIMER(ctx, txq->ift_id); | IFDI_TIMER(ctx, txq->ift_id); | ||||
| if ((txq->ift_qstatus == IFLIB_QUEUE_HUNG) && | if ((txq->ift_qstatus == IFLIB_QUEUE_HUNG) && | ||||
| ((txq->ift_cleaned_prev == txq->ift_cleaned) || | ((txq->ift_cleaned_prev == txq->ift_cleaned) || | ||||
| (sctx->isc_pause_frames == 0))) | (sctx->isc_pause_frames == 0))) | ||||
| goto hung; | goto hung; | ||||
| if (ifmp_ring_is_stalled(txq->ift_br)) | if (txq->ift_qstatus != IFLIB_QUEUE_IDLE && | ||||
| ifmp_ring_is_stalled(txq->ift_br)) { | |||||
| KASSERT(ctx->ifc_link_state == LINK_STATE_UP, ("queue can't be marked as hung if interface is down")); | |||||
| txq->ift_qstatus = IFLIB_QUEUE_HUNG; | txq->ift_qstatus = IFLIB_QUEUE_HUNG; | ||||
| } | |||||
| txq->ift_cleaned_prev = txq->ift_cleaned; | txq->ift_cleaned_prev = txq->ift_cleaned; | ||||
| } | } | ||||
| #ifdef DEV_NETMAP | #ifdef DEV_NETMAP | ||||
| if (if_getcapenable(ctx->ifc_ifp) & IFCAP_NETMAP) | if (if_getcapenable(ctx->ifc_ifp) & IFCAP_NETMAP) | ||||
| iflib_netmap_timer_adjust(ctx, txq, &reset_on); | iflib_netmap_timer_adjust(ctx, txq, &reset_on); | ||||
| #endif | #endif | ||||
| /* handle any laggards */ | /* handle any laggards */ | ||||
| if (txq->ift_db_pending) | if (txq->ift_db_pending) | ||||
| ▲ Show 20 Lines • Show All 4,555 Lines • Show Last 20 Lines | |||||