Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Sep 2010 17:51:24 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r212298 - in projects/sv/sys: net netinet
Message-ID:  <201009071751.o87HpOJk011117@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Tue Sep  7 17:51:23 2010
New Revision: 212298
URL: http://svn.freebsd.org/changeset/base/212298

Log:
  Add the possibility to specify, in drivers, nethdump virtual methods that
  will be used by the netdump for carrying on interface polling and testing.
  
  ASAP, will be offered an implementation for if_em and if_ixgb.

Modified:
  projects/sv/sys/net/if_var.h
  projects/sv/sys/netinet/netdump_client.c

Modified: projects/sv/sys/net/if_var.h
==============================================================================
--- projects/sv/sys/net/if_var.h	Tue Sep  7 17:24:05 2010	(r212297)
+++ projects/sv/sys/net/if_var.h	Tue Sep  7 17:51:23 2010	(r212298)
@@ -72,6 +72,7 @@ struct	carp_if;
 struct  ifvlantrunk;
 struct	route;
 struct	vnet;
+struct	netdump_methods;
 #endif
 
 #include <sys/queue.h>		/* get TAILQ macros */
@@ -195,6 +196,7 @@ struct ifnet {
 					/* protected by if_addr_mtx */
 	void	*if_pf_kif;
 	void	*if_lagg;		/* lagg glue */
+	struct	netdump_methods *if_ndumpfuncs; /* netdump virtual methods */
 	u_char	 if_alloctype;		/* if_type at time of allocation */
 
 	/*
@@ -204,7 +206,7 @@ struct ifnet {
 	 */
 	char	 if_cspare[3];
 	char	*if_description;	/* interface description */
-	void	*if_pspare[7];
+	void	*if_pspare[6];
 	int	if_ispare[4];
 };
 

Modified: projects/sv/sys/netinet/netdump_client.c
==============================================================================
--- projects/sv/sys/netinet/netdump_client.c	Tue Sep  7 17:24:05 2010	(r212297)
+++ projects/sv/sys/netinet/netdump_client.c	Tue Sep  7 17:51:23 2010	(r212298)
@@ -158,7 +158,7 @@ static int nd_retries=10; /* Times to re
 static __inline int
 netdump_supported_nic(struct ifnet *ifn)
 {
-	return ifn->if_netdump != NULL;
+	return ifn->if_ndumpfuncs != NULL;
 }
 
 /*-
@@ -288,7 +288,7 @@ sysctl_force_crash(SYSCTL_HANDLER_ARGS) 
 		case 3:
 			printf("\nLivelocking system while holding the "
 			    "interface lock\n");
-			nd_nic->if_netdump->test_get_lock(nd_nic);
+			nd_nic->if_ndumpfuncs->test_get_lock(nd_nic);
 			for (;;);
 			break;
 		case 5:
@@ -1075,7 +1075,7 @@ done:
 static void
 netdump_network_poll()
 {
-	nd_nic->if_netdump->poll_locked(nd_nic, POLL_AND_CHECK_STATUS, 1000);
+	nd_nic->if_ndumpfuncs->poll_locked(nd_nic, POLL_AND_CHECK_STATUS, 1000);
 }
 
 /*-
@@ -1186,7 +1186,7 @@ netdump_trigger(void *arg, int howto)
 	dumping++;
 
 	if (panicstr == NULL)
-		nd_nic->if_netdump->acquire_lock(nd_nic);
+		nd_nic->if_ndumpfuncs->acquire_lock(nd_nic);
 
 	/* Make the card use *our* receive callback */
 	old_if_input = nd_nic->if_input;
@@ -1244,7 +1244,7 @@ trig_abort:
 	if (old_if_input)
 		nd_nic->if_input = old_if_input;
 	if (panicstr == NULL)
-		nd_nic->if_netdump->release_lock(nd_nic);
+		nd_nic->if_ndumpfuncs->release_lock(nd_nic);
 	dumping--;
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009071751.o87HpOJk011117>