svn commit: r275431 - in head/sys/dev: e1000 ixgbe

Jack F Vogel jfv at FreeBSD.org
Tue Dec 2 23:02:58 UTC 2014


Author: jfv
Date: Tue Dec  2 23:02:57 2014
New Revision: 275431
URL: https://svnweb.freebsd.org/changeset/base/275431

Log:
  Revert r275136, it was not approved, it was sloppy, if a feature
  like this is needed please resubmit for Intel's approval.

Modified:
  head/sys/dev/e1000/if_igb.c
  head/sys/dev/ixgbe/ixgbe.c

Modified: head/sys/dev/e1000/if_igb.c
==============================================================================
--- head/sys/dev/e1000/if_igb.c	Tue Dec  2 22:35:43 2014	(r275430)
+++ head/sys/dev/e1000/if_igb.c	Tue Dec  2 23:02:57 2014	(r275431)
@@ -188,7 +188,6 @@ static char *igb_strings[] = {
 /*********************************************************************
  *  Function prototypes
  *********************************************************************/
-static int	igb_per_unit_num_queues(SYSCTL_HANDLER_ARGS);
 static int	igb_probe(device_t);
 static int	igb_attach(device_t);
 static int	igb_detach(device_t);
@@ -494,11 +493,6 @@ igb_attach(device_t dev)
 	    OID_AUTO, "nvm", CTLTYPE_INT|CTLFLAG_RW, adapter, 0,
 	    igb_sysctl_nvm_info, "I", "NVM Information");
 
-        SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
-                        SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
-			OID_AUTO, "num_queues", CTLTYPE_INT | CTLFLAG_RD,
-			adapter, 0, igb_per_unit_num_queues, "I", "Number of Queues");
-
 	igb_set_sysctl_value(adapter, "enable_aim",
 	    "Interrupt Moderation", &adapter->enable_aim,
 	    igb_enable_aim);
@@ -2837,7 +2831,6 @@ igb_setup_msix(struct adapter *adapter)
 {
 	device_t	dev = adapter->dev;
 	int		bar, want, queues, msgs, maxqueues;
-	int		n_queues;
 
 	/* tuneable override */
 	if (igb_enable_msix == 0)
@@ -2865,18 +2858,11 @@ igb_setup_msix(struct adapter *adapter)
 		goto msi;
 	}
 
-	n_queues = 0;
-	/* try more specific tunable, then global, then finally default to boot time tunable if set. */
-	if (device_getenv_int(dev, "num_queues", &n_queues) != 0) {
-		device_printf(dev, "using specific tunable num_queues=%d", n_queues);
-	} else if (TUNABLE_INT_FETCH("hw.igb.num_queues", &n_queues) != 0) {
-		if (igb_num_queues != n_queues) {
-			device_printf(dev, "using global tunable hw.igb.num_queues=%d", n_queues);
-			igb_num_queues = n_queues;
-		}
-	} else {
-		n_queues = igb_num_queues;
-	}
+	queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus;
+
+	/* Override via tuneable */
+	if (igb_num_queues != 0)
+		queues = igb_num_queues;
 
 #ifdef	RSS
 	/* If we're doing RSS, clamp at the number of RSS buckets */
@@ -2884,12 +2870,6 @@ igb_setup_msix(struct adapter *adapter)
 		queues = rss_getnumbuckets();
 #endif
 
-	if (n_queues != 0) {
-		queues = n_queues;
-	} else {
-		/* Figure out a reasonable auto config value */
-		queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus;
-	}
 
 	/* Sanity check based on HW */
 	switch (adapter->hw.mac.type) {
@@ -2912,17 +2892,10 @@ igb_setup_msix(struct adapter *adapter)
 			maxqueues = 1;
 			break;
 	}
-	if (queues > maxqueues) {
-		device_printf(adapter->dev, "requested %d queues, but max for this adapter is %d\n",
-		    queues, maxqueues);
+
+	/* Final clamp on the actual hardware capability */
+	if (queues > maxqueues)
 		queues = maxqueues;
-	} else if (queues == 0) {
-		queues = 1;
-	} else if (queues < 0) {
-		device_printf(adapter->dev, "requested %d queues, but min for this adapter is %d\n",
-		    queues, 1);
-		queues = 1;
-	}
 
 	/*
 	** One vector (RX/TX pair) per queue
@@ -6407,14 +6380,3 @@ igb_sysctl_eee(SYSCTL_HANDLER_ARGS)
 	IGB_CORE_UNLOCK(adapter);
 	return (0);
 }
-
-static int
-igb_per_unit_num_queues(SYSCTL_HANDLER_ARGS)
-{
-	struct adapter          *adapter;
-
-	adapter = (struct adapter *) arg1;
-
-	return sysctl_handle_int(oidp, &adapter->num_queues, 0, req);
-}
-

Modified: head/sys/dev/ixgbe/ixgbe.c
==============================================================================
--- head/sys/dev/ixgbe/ixgbe.c	Tue Dec  2 22:35:43 2014	(r275430)
+++ head/sys/dev/ixgbe/ixgbe.c	Tue Dec  2 23:02:57 2014	(r275431)
@@ -103,7 +103,6 @@ static char    *ixgbe_strings[] = {
 /*********************************************************************
  *  Function prototypes
  *********************************************************************/
-static int	ixgbe_per_unit_num_queues(SYSCTL_HANDLER_ARGS);
 static int      ixgbe_probe(device_t);
 static int      ixgbe_attach(device_t);
 static int      ixgbe_detach(device_t);
@@ -476,11 +475,6 @@ ixgbe_attach(device_t dev)
 
 	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
 			SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
-			OID_AUTO, "num_queues", CTLTYPE_INT | CTLFLAG_RD,
-			adapter, 0, ixgbe_per_unit_num_queues, "I", "Number of Queues");
-
-	SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
-			SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
 			OID_AUTO, "ts", CTLTYPE_INT | CTLFLAG_RW, adapter,
 			0, ixgbe_set_thermal_test, "I", "Thermal Test");
 
@@ -2522,7 +2516,6 @@ ixgbe_setup_msix(struct adapter *adapter
 {
 	device_t dev = adapter->dev;
 	int rid, want, queues, msgs;
-	int n_queues;
 
 	/* Override by tuneable */
 	if (ixgbe_enable_msix == 0)
@@ -2549,34 +2542,19 @@ ixgbe_setup_msix(struct adapter *adapter
 
 	/* Figure out a reasonable auto config value */
 	queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus;
+
+	/* Override based on tuneable */
+	if (ixgbe_num_queues != 0)
+		queues = ixgbe_num_queues;
+
 #ifdef	RSS
 	/* If we're doing RSS, clamp at the number of RSS buckets */
 	if (queues > rss_getnumbuckets())
 		queues = rss_getnumbuckets();
 #endif
 
-	/* try more specific tunable, then global, then finally default to boot time tunable if set. */
-	if (device_getenv_int(dev, "num_queues", &n_queues) != 0) {
-		device_printf(dev, "using specific tunable numqueues=%d", n_queues);
-	} else if (TUNABLE_INT_FETCH("hw.ix.num_queues", &n_queues) != 0) {
-		if (ixgbe_num_queues != n_queues) {
-			device_printf(dev, "using global tunable num_queues=%d", n_queues);
-			ixgbe_num_queues = n_queues;
-		}
-	} else {
-		n_queues = ixgbe_num_queues;
-	}
-
-	if (n_queues < 0) {
-		device_printf(dev, "tunable < 0, resetting to default");
-		n_queues = 0;
-	}
-
-	if (n_queues != 0)
-		queues = n_queues;
-	/* Set max queues to 8 when autoconfiguring */
-	else if ((ixgbe_num_queues == 0) && (queues > 8))
-		queues = 8;
+	/* reflect correct sysctl value */
+	ixgbe_num_queues = queues;
 
 	/*
 	** Want one vector (RX/TX pair) per queue
@@ -5964,15 +5942,6 @@ ixgbe_set_flowcntl(SYSCTL_HANDLER_ARGS)
 	return error;
 }
 
-static int
-ixgbe_per_unit_num_queues(SYSCTL_HANDLER_ARGS)
-{
-	struct adapter		*adapter;
-
-	adapter = (struct adapter *) arg1;
-
-	return sysctl_handle_int(oidp, &adapter->num_queues, 0, req);
-}
 
 /*
 ** Control link advertise speed:


More information about the svn-src-all mailing list