aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorNavdeep Parhar <np@FreeBSD.org>2019-03-28 21:22:28 +0000
committerNavdeep Parhar <np@FreeBSD.org>2019-03-28 21:22:28 +0000
commitdd3b96ecec20ba1770da5ee8ed6c94f01730717c (patch)
tree528911bce6efbf06d766e859c0b483a3865ec8e7 /sys/dev
parent841613dcdc0d7d7ef96cdcb7f461ffb9574dc500 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/cxgbe/adapter.h2
-rw-r--r--sys/dev/cxgbe/t4_main.c3
-rw-r--r--sys/dev/cxgbe/t4_sge.c7
3 files changed, 12 insertions, 0 deletions
diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h
index 806f1faea0a3..e8eeb3333ac0 100644
--- a/sys/dev/cxgbe/adapter.h
+++ b/sys/dev/cxgbe/adapter.h
@@ -895,6 +895,8 @@ struct adapter {
const char *last_op;
const void *last_op_thr;
int last_op_flags;
+
+ int swintr;
};
#define ADAPTER_LOCK(sc) mtx_lock(&(sc)->sc_lock)
diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index e3c0c5fe2755..99c287a689ee 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -6031,6 +6031,9 @@ t4_sysctls(struct adapter *sc)
CTLTYPE_STRING | CTLFLAG_RD, sc, INTR_CPUS,
sysctl_cpus, "A", "preferred CPUs for interrupts");
+ SYSCTL_ADD_INT(ctx, children, OID_AUTO, "swintr", CTLFLAG_RW,
+ &sc->swintr, 0, "software triggered interrupts");
+
/*
* dev.t4nex.X.misc. Marked CTLFLAG_SKIP to avoid information overload.
*/
diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c
index df7e3f43a8b9..f69d0b4b9a06 100644
--- a/sys/dev/cxgbe/t4_sge.c
+++ b/sys/dev/cxgbe/t4_sge.c
@@ -1394,11 +1394,18 @@ void
t4_intr_err(void *arg)
{
struct adapter *sc = arg;
+ uint32_t v;
const bool verbose = (sc->debug_flags & DF_VERBOSE_SLOWINTR) != 0;
if (sc->flags & ADAP_ERR)
return;
+ v = t4_read_reg(sc, MYPF_REG(A_PL_PF_INT_CAUSE));
+ if (v & F_PFSW) {
+ sc->swintr++;
+ t4_write_reg(sc, MYPF_REG(A_PL_PF_INT_CAUSE), v);
+ }
+
t4_slow_intr_handler(sc, verbose);
}