From owner-svn-src-stable@freebsd.org Tue Aug 4 03:34:01 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5828C9B2B4E; Tue, 4 Aug 2015 03:34:01 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 48765A58; Tue, 4 Aug 2015 03:34:01 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t743Y1h5070764; Tue, 4 Aug 2015 03:34:01 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t743Y0GF070761; Tue, 4 Aug 2015 03:34:00 GMT (envelope-from np@FreeBSD.org) Message-Id: <201508040334.t743Y0GF070761@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Tue, 4 Aug 2015 03:34:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286271 - in stable/10/sys/dev/cxgbe: . common X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Aug 2015 03:34:01 -0000 Author: np Date: Tue Aug 4 03:33:59 2015 New Revision: 286271 URL: https://svnweb.freebsd.org/changeset/base/286271 Log: MFC r284445 and r286107. r284445: cxgbe(4): Add the ability to dump mailbox commands and replies. It is enabled/disabled via bit 0 of adapter->debug_flags (which is available at dev.t5nex..debug_flags). r286107: cxgbe(4): initialize debug_flags from the kernel environment. Modified: stable/10/sys/dev/cxgbe/adapter.h stable/10/sys/dev/cxgbe/common/t4_hw.c stable/10/sys/dev/cxgbe/t4_main.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/cxgbe/adapter.h ============================================================================== --- stable/10/sys/dev/cxgbe/adapter.h Tue Aug 4 03:07:06 2015 (r286270) +++ stable/10/sys/dev/cxgbe/adapter.h Tue Aug 4 03:33:59 2015 (r286271) @@ -200,6 +200,9 @@ enum { INTR_OFLD_RXQ = (1 << 5), /* All TOE rxq's take interrupts */ INTR_NM_RXQ = (1 << 6), /* All netmap rxq's take interrupts */ INTR_ALL = (INTR_RXQ | INTR_OFLD_RXQ | INTR_NM_RXQ), + + /* adapter debug_flags */ + DF_DUMP_MBOX = (1 << 0), }; #define IS_DOOMED(pi) ((pi)->flags & DOOMED) @@ -755,6 +758,7 @@ struct adapter { int active_ulds; /* ULDs activated on this adapter */ #endif int flags; + int debug_flags; char ifp_lockname[16]; struct mtx ifp_lock; @@ -839,6 +843,24 @@ struct adapter { #define TXQ_LOCK_ASSERT_OWNED(txq) EQ_LOCK_ASSERT_OWNED(&(txq)->eq) #define TXQ_LOCK_ASSERT_NOTOWNED(txq) EQ_LOCK_ASSERT_NOTOWNED(&(txq)->eq) +#define CH_DUMP_MBOX(sc, mbox, data_reg) \ + do { \ + if (sc->debug_flags & DF_DUMP_MBOX) { \ + log(LOG_NOTICE, \ + "%s mbox %u: %016llx %016llx %016llx %016llx " \ + "%016llx %016llx %016llx %016llx\n", \ + device_get_nameunit(sc->dev), mbox, \ + (unsigned long long)t4_read_reg64(sc, data_reg), \ + (unsigned long long)t4_read_reg64(sc, data_reg + 8), \ + (unsigned long long)t4_read_reg64(sc, data_reg + 16), \ + (unsigned long long)t4_read_reg64(sc, data_reg + 24), \ + (unsigned long long)t4_read_reg64(sc, data_reg + 32), \ + (unsigned long long)t4_read_reg64(sc, data_reg + 40), \ + (unsigned long long)t4_read_reg64(sc, data_reg + 48), \ + (unsigned long long)t4_read_reg64(sc, data_reg + 56)); \ + } \ + } while (0) + #define for_each_txq(pi, iter, q) \ for (q = &pi->adapter->sge.txq[pi->first_txq], iter = 0; \ iter < pi->ntxq; ++iter, ++q) Modified: stable/10/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- stable/10/sys/dev/cxgbe/common/t4_hw.c Tue Aug 4 03:07:06 2015 (r286270) +++ stable/10/sys/dev/cxgbe/common/t4_hw.c Tue Aug 4 03:33:59 2015 (r286271) @@ -259,6 +259,8 @@ int t4_wr_mbox_meat(struct adapter *adap for (i = 0; i < size; i += 8, p++) t4_write_reg64(adap, data_reg + i, be64_to_cpu(*p)); + CH_DUMP_MBOX(adap, mbox, data_reg); + t4_write_reg(adap, ctl_reg, F_MBMSGVALID | V_MBOWNER(X_MBOWNER_FW)); t4_read_reg(adap, ctl_reg); /* flush write */ @@ -284,6 +286,8 @@ int t4_wr_mbox_meat(struct adapter *adap continue; } + CH_DUMP_MBOX(adap, mbox, data_reg); + res = t4_read_reg64(adap, data_reg); if (G_FW_CMD_OP(res >> 32) == FW_DEBUG_CMD) { fw_asrt(adap, data_reg); Modified: stable/10/sys/dev/cxgbe/t4_main.c ============================================================================== --- stable/10/sys/dev/cxgbe/t4_main.c Tue Aug 4 03:07:06 2015 (r286270) +++ stable/10/sys/dev/cxgbe/t4_main.c Tue Aug 4 03:33:59 2015 (r286271) @@ -586,6 +586,7 @@ t4_attach(device_t dev) sc = device_get_softc(dev); sc->dev = dev; + TUNABLE_INT_FETCH("hw.cxgbe.debug_flags", &sc->debug_flags); pci_enable_busmaster(dev); if (pci_find_cap(dev, PCIY_EXPRESS, &i) == 0) { @@ -4538,6 +4539,9 @@ t4_sysctls(struct adapter *sc) SYSCTL_ADD_INT(ctx, children, OID_AUTO, "lro_timeout", CTLFLAG_RW, &sc->lro_timeout, 0, "lro inactive-flush timeout (in us)"); + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "debug_flags", CTLFLAG_RW, + &sc->debug_flags, 0, "flags to enable runtime debugging"); + #ifdef SBUF_DRAIN /* * dev.t4nex.X.misc. Marked CTLFLAG_SKIP to avoid information overload.