summaryrefslogtreecommitdiff
path: root/usr/src/uts
diff options
context:
space:
mode:
authorJoshua M. Clulow <josh@sysmgr.org>2022-01-25 12:49:19 -0800
committerJoshua M. Clulow <josh@sysmgr.org>2022-01-25 12:49:19 -0800
commitab3f6e90e6b1d8edee27c66beb8e53bc6033fb2a (patch)
tree21c9df2620cf38417b2f05a3935825c1713b106e /usr/src/uts
parentc9b01782224c4b5ea00e251ce64cfbd68ce276d6 (diff)
downloadillumos-joyent-ab3f6e90e6b1d8edee27c66beb8e53bc6033fb2a.tar.gz
14419 iprb transmit watchdog somewhat overzealous
Reviewed by: Andy Fiddaman <andy@omnios.org> Reviewed by: Garrett D'Amore <garrett@damore.org> Reviewed by: Robert Mustacchi <rm@fingolfin.org> Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/uts')
-rw-r--r--usr/src/uts/common/io/iprb/iprb.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/usr/src/uts/common/io/iprb/iprb.c b/usr/src/uts/common/io/iprb/iprb.c
index 15022a5f45..cfcc1938af 100644
--- a/usr/src/uts/common/io/iprb/iprb.c
+++ b/usr/src/uts/common/io/iprb/iprb.c
@@ -12,6 +12,7 @@
/*
* Copyright 2014 Nexenta Systems, Inc. All rights reserved.
* Copyright 2021 OmniOS Community Edition (OmniOSce) Association.
+ * Copyright 2022 Oxide Computer Company
*/
/*
@@ -1672,6 +1673,13 @@ iprb_periodic(void *arg)
/* update the statistics */
mutex_enter(&ip->culock);
+ /*
+ * The watchdog timer is updated when we send frames or when we reclaim
+ * completed commands. When the link is idle for long periods it is
+ * possible we will have done neither of these things, so reclaim
+ * explicitly before checking for a transmit stall:
+ */
+ iprb_cmd_reclaim(ip);
if (ip->tx_wdog && ((gethrtime() - ip->tx_wdog) > ip->tx_timeout)) {
/* transmit/CU hang? */
cmn_err(CE_CONT, "?CU stalled, resetting.\n");