diff options
author | Joshua M. Clulow <josh@sysmgr.org> | 2022-01-25 12:49:19 -0800 |
---|---|---|
committer | Joshua M. Clulow <josh@sysmgr.org> | 2022-01-25 12:49:19 -0800 |
commit | ab3f6e90e6b1d8edee27c66beb8e53bc6033fb2a (patch) | |
tree | 21c9df2620cf38417b2f05a3935825c1713b106e /usr/src/uts | |
parent | c9b01782224c4b5ea00e251ce64cfbd68ce276d6 (diff) | |
download | illumos-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.c | 8 |
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"); |