|
@@ -5660,30 +5660,35 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
|
|
|
|
|
|
dev_net_set(dev, &init_net);
|
|
|
|
|
|
+ dev->gso_max_size = GSO_MAX_SIZE;
|
|
|
+
|
|
|
+ INIT_LIST_HEAD(&dev->ethtool_ntuple_list.list);
|
|
|
+ dev->ethtool_ntuple_list.count = 0;
|
|
|
+ INIT_LIST_HEAD(&dev->napi_list);
|
|
|
+ INIT_LIST_HEAD(&dev->unreg_list);
|
|
|
+ INIT_LIST_HEAD(&dev->link_watch_list);
|
|
|
+ dev->priv_flags = IFF_XMIT_DST_RELEASE;
|
|
|
+ setup(dev);
|
|
|
+
|
|
|
dev->num_tx_queues = txqs;
|
|
|
dev->real_num_tx_queues = txqs;
|
|
|
if (netif_alloc_netdev_queues(dev))
|
|
|
- goto free_pcpu;
|
|
|
+ goto free_all;
|
|
|
|
|
|
#ifdef CONFIG_RPS
|
|
|
dev->num_rx_queues = rxqs;
|
|
|
dev->real_num_rx_queues = rxqs;
|
|
|
if (netif_alloc_rx_queues(dev))
|
|
|
- goto free_pcpu;
|
|
|
+ goto free_all;
|
|
|
#endif
|
|
|
|
|
|
- dev->gso_max_size = GSO_MAX_SIZE;
|
|
|
-
|
|
|
- INIT_LIST_HEAD(&dev->ethtool_ntuple_list.list);
|
|
|
- dev->ethtool_ntuple_list.count = 0;
|
|
|
- INIT_LIST_HEAD(&dev->napi_list);
|
|
|
- INIT_LIST_HEAD(&dev->unreg_list);
|
|
|
- INIT_LIST_HEAD(&dev->link_watch_list);
|
|
|
- dev->priv_flags = IFF_XMIT_DST_RELEASE;
|
|
|
- setup(dev);
|
|
|
strcpy(dev->name, name);
|
|
|
return dev;
|
|
|
|
|
|
+free_all:
|
|
|
+ free_netdev(dev);
|
|
|
+ return NULL;
|
|
|
+
|
|
|
free_pcpu:
|
|
|
free_percpu(dev->pcpu_refcnt);
|
|
|
kfree(dev->_tx);
|