svn commit: r321233 - head/sys/dev/qlxgbe
David C Somayajulu
davidcs at FreeBSD.org
Wed Jul 19 19:08:38 UTC 2017
Author: davidcs
Date: Wed Jul 19 19:08:37 2017
New Revision: 321233
URL: https://svnweb.freebsd.org/changeset/base/321233
Log:
Raise the watchdog timer interval to 2 ticks, there by guaranteeing
that it fires between 1ms and 2ms. `
Treat two consecutive occurrences of Heartbeat failures as a legitimate
Heartbeat failure
MFC after:3 days
Modified:
head/sys/dev/qlxgbe/ql_def.h
head/sys/dev/qlxgbe/ql_hw.c
head/sys/dev/qlxgbe/ql_hw.h
head/sys/dev/qlxgbe/ql_os.c
Modified: head/sys/dev/qlxgbe/ql_def.h
==============================================================================
--- head/sys/dev/qlxgbe/ql_def.h Wed Jul 19 19:06:19 2017 (r321232)
+++ head/sys/dev/qlxgbe/ql_def.h Wed Jul 19 19:08:37 2017 (r321233)
@@ -105,7 +105,7 @@ struct qla_ivec {
typedef struct qla_ivec qla_ivec_t;
-#define QLA_WATCHDOG_CALLOUT_TICKS 1
+#define QLA_WATCHDOG_CALLOUT_TICKS 2
typedef struct _qla_tx_ring {
qla_tx_buf_t tx_buf[NUM_TX_DESCRIPTORS];
Modified: head/sys/dev/qlxgbe/ql_hw.c
==============================================================================
--- head/sys/dev/qlxgbe/ql_hw.c Wed Jul 19 19:06:19 2017 (r321232)
+++ head/sys/dev/qlxgbe/ql_hw.c Wed Jul 19 19:08:37 2017 (r321233)
@@ -3366,7 +3366,7 @@ ql_hw_check_health(qla_host_t *ha)
ha->hw.health_count++;
- if (ha->hw.health_count < 1000)
+ if (ha->hw.health_count < 500)
return 0;
ha->hw.health_count = 0;
@@ -3385,10 +3385,18 @@ ql_hw_check_health(qla_host_t *ha)
if ((val != ha->hw.hbeat_value) &&
(!(QL_ERR_INJECT(ha, INJCT_HEARTBEAT_FAILURE)))) {
ha->hw.hbeat_value = val;
+ ha->hw.hbeat_failure = 0;
return 0;
}
- device_printf(ha->pci_dev, "%s: Heartbeat Failue [0x%08x]\n",
- __func__, val);
+
+ ha->hw.hbeat_failure++;
+
+ if (ha->hw.hbeat_failure < 2) /* we ignore the first failure */
+ return 0;
+ else
+ device_printf(ha->pci_dev, "%s: Heartbeat Failue [0x%08x]\n",
+ __func__, val);
+
return -1;
}
Modified: head/sys/dev/qlxgbe/ql_hw.h
==============================================================================
--- head/sys/dev/qlxgbe/ql_hw.h Wed Jul 19 19:06:19 2017 (r321232)
+++ head/sys/dev/qlxgbe/ql_hw.h Wed Jul 19 19:08:37 2017 (r321233)
@@ -1671,6 +1671,7 @@ typedef struct _qla_hw {
/* heart beat register value */
uint32_t hbeat_value;
uint32_t health_count;
+ uint32_t hbeat_failure;
uint32_t max_tx_segs;
uint32_t min_lro_pkt_size;
Modified: head/sys/dev/qlxgbe/ql_os.c
==============================================================================
--- head/sys/dev/qlxgbe/ql_os.c Wed Jul 19 19:06:19 2017 (r321232)
+++ head/sys/dev/qlxgbe/ql_os.c Wed Jul 19 19:08:37 2017 (r321233)
@@ -276,7 +276,7 @@ qla_watchdog(void *arg)
ha->qla_watchdog_paused = 1;
}
- ha->watchdog_ticks = ha->watchdog_ticks++ % 1000;
+ ha->watchdog_ticks = ha->watchdog_ticks++ % 500;
callout_reset(&ha->tx_callout, QLA_WATCHDOG_CALLOUT_TICKS,
qla_watchdog, ha);
}
More information about the svn-src-head
mailing list