Thread (13 messages) 13 messages, 7 authors, 2010-03-02

Re: [net-next-2.6 PATCH 3/3] ixgbe: Do not allocate too many netdev txqueues

From: Eric Dumazet <hidden>
Date: 2010-02-28 03:57:08

Le samedi 27 février 2010 à 17:02 -0800, Peter P Waskiewicz Jr a écrit :
On Fri, 2010-02-26 at 06:04 -0800, Eric Dumazet wrote:
quoted
Le vendredi 26 février 2010 à 01:15 -0800, Jeff Kirsher a écrit :
quoted
+	if (ii->mac == ixgbe_mac_82598EB)
+		indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES);
+	else
+		indices = min_t(unsigned int, indices, IXGBE_MAX_FDIR_INDICES);
+
+	indices = max_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES);
+#ifdef IXGBE_FCOE
+	indices += min_t(unsigned int, num_possible_cpus(),
+			 IXGBE_MAX_FCOE_INDICES);
+#endif
+	indices = min_t(unsigned int, indices, MAX_TX_QUEUES);
+	netdev = alloc_etherdev_mq(sizeof(struct ixgbe_adapter), indices);
 	if (!netdev) {
 		err = -ENOMEM;
 		goto err_alloc_etherdev;
Thanks Jeff, but what is the reason for limiting to MAX_TX_QUEUES ?
Is it a hardware issue ?
MAX_TX_QUEUES is 128, which is the maximum the 82599 device supports in
hardware (82598 supports 32 Tx queues).  I'm not sure why you'd ever
want to have more Tx queues than what you have in the network device.
I was not sure MAX_TX_QUEUES capping was still necessary after the
block :

if (ii->mac == ixgbe_mac_82598EB)
          indices = min_t(unsigned int, indices, IXGBE_MAX_RSS_INDICES);
else
          indices = min_t(unsigned int, indices,
IXGBE_MAX_FDIR_INDICES);

indices = max_t(unsigned int, indices, IXGBE_MAX_DCB_INDICES);
#ifdef IXGBE_FCOE
	indices += min_t(unsigned int, num_possible_cpus(),
                    IXGBE_MAX_FCOE_INDICES);
#endif

So I asked to be sure that MAX_TX_QUEUES was not a leftover from the
previous default allocation.

Thanks

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help