From owner-svn-src-user@freebsd.org  Wed Mar 28 14:33:37 2018
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 081A9F63AF8
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Wed, 28 Mar 2018 14:33:37 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id ADCD16E2B1;
 Wed, 28 Mar 2018 14:33:36 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A80F94510;
 Wed, 28 Mar 2018 14:33:36 +0000 (UTC)
 (envelope-from markj@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w2SEXajP001212;
 Wed, 28 Mar 2018 14:33:36 GMT (envelope-from markj@FreeBSD.org)
Received: (from markj@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id w2SEXaA6001209;
 Wed, 28 Mar 2018 14:33:36 GMT (envelope-from markj@FreeBSD.org)
Message-Id: <201803281433.w2SEXaA6001209@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: markj set sender to
 markj@FreeBSD.org using -f
From: Mark Johnston <markj@FreeBSD.org>
Date: Wed, 28 Mar 2018 14:33:36 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r331677 - in user/markj/netdump: share/man/man4
 sys/dev/bxe
X-SVN-Group: user
X-SVN-Commit-Author: markj
X-SVN-Commit-Paths: in user/markj/netdump: share/man/man4 sys/dev/bxe
X-SVN-Commit-Revision: 331677
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.25
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 28 Mar 2018 14:33:37 -0000

Author: markj
Date: Wed Mar 28 14:33:35 2018
New Revision: 331677
URL: https://svnweb.freebsd.org/changeset/base/331677

Log:
  Add netdump support to bxe(4).

Modified:
  user/markj/netdump/share/man/man4/netdump.4
  user/markj/netdump/sys/dev/bxe/bxe.c
  user/markj/netdump/sys/dev/bxe/bxe.h

Modified: user/markj/netdump/share/man/man4/netdump.4
==============================================================================
--- user/markj/netdump/share/man/man4/netdump.4	Wed Mar 28 14:32:24 2018	(r331676)
+++ user/markj/netdump/share/man/man4/netdump.4	Wed Mar 28 14:33:35 2018	(r331677)
@@ -105,6 +105,7 @@ message to the server.
 The following network drivers support netdump:
 .Xr alc 4 ,
 .Xr bge 4 ,
+.Xr bxe 4 ,
 .Xr cxgb 4 ,
 .Xr em 4 ,
 .Xr igb 4 ,

Modified: user/markj/netdump/sys/dev/bxe/bxe.c
==============================================================================
--- user/markj/netdump/sys/dev/bxe/bxe.c	Wed Mar 28 14:32:24 2018	(r331676)
+++ user/markj/netdump/sys/dev/bxe/bxe.c	Wed Mar 28 14:33:35 2018	(r331677)
@@ -236,6 +236,8 @@ MODULE_DEPEND(bxe, pci, 1, 1, 1);
 MODULE_DEPEND(bxe, ether, 1, 1, 1);
 DRIVER_MODULE(bxe, pci, bxe_driver, bxe_devclass, 0, 0);
 
+NETDUMP_DEFINE(bxe);
+
 /* resources needed for unloading a previously loaded device */
 
 #define BXE_PREV_WAIT_NEEDED 1
@@ -12767,6 +12769,9 @@ bxe_init_ifnet(struct bxe_softc *sc)
     /* attach to the Ethernet interface list */
     ether_ifattach(ifp, sc->link_params.mac_addr);
 
+    /* Attach driver netdump methods. */
+    NETDUMP_SET(ifp, bxe);
+
     return (0);
 }
 
@@ -19164,3 +19169,53 @@ bxe_eioctl(struct cdev *dev, u_long cmd, caddr_t data,
 
     return (rval);
 }
+
+#ifdef NETDUMP
+static void
+bxe_netdump_init(struct ifnet *ifp, int *nrxr)
+{
+	struct bxe_softc *sc;
+
+	sc = if_getsoftc(ifp);
+	*nrxr = sc->num_queues;
+}
+
+static void
+bxe_netdump_event(struct ifnet *ifp __unused, enum netdump_ev event __unused)
+{
+}
+
+static int
+bxe_netdump_transmit(struct ifnet *ifp, struct mbuf *m)
+{
+	struct bxe_softc *sc;
+	int error;
+
+	sc = if_getsoftc(ifp);
+	if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
+	    IFF_DRV_RUNNING || !sc->link_vars.link_up)
+		return (ENOENT);
+
+	error = bxe_tx_encap(&sc->fp[0], &m);
+	if (error != 0 && m != NULL)
+		m_freem(m);
+	return (error);
+}
+
+static int
+bxe_netdump_poll(struct ifnet *ifp, int count)
+{
+	struct bxe_softc *sc;
+	int i;
+
+	sc = if_getsoftc(ifp);
+	if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 ||
+	    !sc->link_vars.link_up)
+		return (ENOENT);
+
+	for (i = 0; i < sc->num_queues; i++)
+		(void)bxe_rxeof(sc, &sc->fp[0]);
+	(void)bxe_txeof(sc, &sc->fp[0]);
+	return (0);
+}
+#endif /* NETDUMP */

Modified: user/markj/netdump/sys/dev/bxe/bxe.h
==============================================================================
--- user/markj/netdump/sys/dev/bxe/bxe.h	Wed Mar 28 14:32:24 2018	(r331676)
+++ user/markj/netdump/sys/dev/bxe/bxe.h	Wed Mar 28 14:33:35 2018	(r331677)
@@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$");
 #include <netinet/ip6.h>
 #include <netinet/tcp.h>
 #include <netinet/udp.h>
+#include <netinet/netdump/netdump.h>
 
 #include <dev/pci/pcireg.h>
 #include <dev/pci/pcivar.h>