Page MenuHomeFreeBSD

D58266.id182050.diff
No OneTemporary

D58266.id182050.diff

diff --git a/sys/net/iflib.c b/sys/net/iflib.c
--- a/sys/net/iflib.c
+++ b/sys/net/iflib.c
@@ -2416,11 +2416,9 @@
goto hung;
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"));
+ ctx->ifc_link_state == LINK_STATE_UP &&
+ ifmp_ring_is_stalled(txq->ift_br))
txq->ift_qstatus = IFLIB_QUEUE_HUNG;
- }
txq->ift_cleaned_prev = txq->ift_cleaned;
}
/* handle any laggards */
@@ -3956,6 +3954,14 @@
rang = iflib_txd_db_check(txq, false);
}
+ /*
+ * New descriptors were handed to the hardware; arm the watchdog
+ * escalation in iflib_timer(). Demotion back to IDLE happens on
+ * reclaim progress, link loss, or controller stop.
+ */
+ if (pkt_sent > 0 && txq->ift_qstatus == IFLIB_QUEUE_IDLE)
+ txq->ift_qstatus = IFLIB_QUEUE_WORKING;
+
/* deliberate use of bitwise or to avoid gratuitous short-circuit */
ring = rang ? false : (iflib_min_tx_latency | err | (!!txq->ift_reclaim_thresh));
iflib_txd_db_check(txq, ring);

File Metadata

Mime Type
text/plain
Expires
Sat, Jul 25, 8:34 AM (15 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35147560
Default Alt Text
D58266.id182050.diff (1 KB)

Event Timeline