aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Herbert <therbert@google.com>2010-11-09 05:47:30 -0500
committerDavid S. Miller <davem@davemloft.net>2010-11-15 13:56:54 -0500
commited9af2e839c06c18f721da2c768fbb444c4a10e5 (patch)
tree446f54e1f2d6951a7803f34f8ca0e4c0b9375f1b
parentcc9ff19da9bf76a2f70bcb80225a1c587c162e52 (diff)
net: Move TX queue allocation to alloc_netdev_mq
TX queues are now allocated in alloc_netdev_mq and freed in free_netdev. Signed-off-by: Tom Herbert <therbert@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/core/dev.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 8b500c3e0297..75490670e0a9 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5136,10 +5136,6 @@ int register_netdevice(struct net_device *dev)
5136 if (ret) 5136 if (ret)
5137 goto out; 5137 goto out;
5138 5138
5139 ret = netif_alloc_netdev_queues(dev);
5140 if (ret)
5141 goto out;
5142
5143 netdev_init_queues(dev); 5139 netdev_init_queues(dev);
5144 5140
5145 /* Init, if this function is available */ 5141 /* Init, if this function is available */
@@ -5599,6 +5595,8 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
5599 5595
5600 dev->num_tx_queues = queue_count; 5596 dev->num_tx_queues = queue_count;
5601 dev->real_num_tx_queues = queue_count; 5597 dev->real_num_tx_queues = queue_count;
5598 if (netif_alloc_netdev_queues(dev))
5599 goto free_pcpu;
5602 5600
5603#ifdef CONFIG_RPS 5601#ifdef CONFIG_RPS
5604 dev->num_rx_queues = queue_count; 5602 dev->num_rx_queues = queue_count;
@@ -5619,6 +5617,7 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
5619 5617
5620free_pcpu: 5618free_pcpu:
5621 free_percpu(dev->pcpu_refcnt); 5619 free_percpu(dev->pcpu_refcnt);
5620 kfree(dev->_tx);
5622free_p: 5621free_p:
5623 kfree(p); 5622 kfree(p);
5624 return NULL; 5623 return NULL;