aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/networking/multiqueue.txt11
-rw-r--r--drivers/net/cpmac.c1
-rw-r--r--drivers/net/igb/igb_main.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c2
-rw-r--r--drivers/net/s2io.c2
-rw-r--r--include/linux/netdevice.h4
-rw-r--r--net/mac80211/main.c3
7 files changed, 1 insertions, 24 deletions
diff --git a/Documentation/networking/multiqueue.txt b/Documentation/networking/multiqueue.txt
index e6dc1ee9e8f1..d391ea631141 100644
--- a/Documentation/networking/multiqueue.txt
+++ b/Documentation/networking/multiqueue.txt
@@ -24,15 +24,4 @@ netif_{start|stop|wake}_subqueue() functions to manage each queue while the
24device is still operational. netdev->queue_lock is still used when the device 24device is still operational. netdev->queue_lock is still used when the device
25comes online or when it's completely shut down (unregister_netdev(), etc.). 25comes online or when it's completely shut down (unregister_netdev(), etc.).
26 26
27Finally, the base driver should indicate that it is a multiqueue device. The
28feature flag NETIF_F_MULTI_QUEUE should be added to the netdev->features
29bitmap on device initialization. Below is an example from e1000:
30
31#ifdef CONFIG_E1000_MQ
32 if ( (adapter->hw.mac.type == e1000_82571) ||
33 (adapter->hw.mac.type == e1000_82572) ||
34 (adapter->hw.mac.type == e1000_80003es2lan))
35 netdev->features |= NETIF_F_MULTI_QUEUE;
36#endif
37
38Author: Peter P. Waskiewicz Jr. <peter.p.waskiewicz.jr@intel.com> 27Author: Peter P. Waskiewicz Jr. <peter.p.waskiewicz.jr@intel.com>
diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c
index d630e2a72f42..7c7b54e4828e 100644
--- a/drivers/net/cpmac.c
+++ b/drivers/net/cpmac.c
@@ -1165,7 +1165,6 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
1165 dev->set_multicast_list = cpmac_set_multicast_list; 1165 dev->set_multicast_list = cpmac_set_multicast_list;
1166 dev->tx_timeout = cpmac_tx_timeout; 1166 dev->tx_timeout = cpmac_tx_timeout;
1167 dev->ethtool_ops = &cpmac_ethtool_ops; 1167 dev->ethtool_ops = &cpmac_ethtool_ops;
1168 dev->features |= NETIF_F_MULTI_QUEUE;
1169 1168
1170 netif_napi_add(dev, &priv->napi, cpmac_poll, 64); 1169 netif_napi_add(dev, &priv->napi, cpmac_poll, 64);
1171 1170
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 64a150a16f39..471c194cd54e 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -1155,8 +1155,6 @@ static int __devinit igb_probe(struct pci_dev *pdev,
1155 if (pci_using_dac) 1155 if (pci_using_dac)
1156 netdev->features |= NETIF_F_HIGHDMA; 1156 netdev->features |= NETIF_F_HIGHDMA;
1157 1157
1158 netdev->features |= NETIF_F_MULTI_QUEUE;
1159
1160 netdev->features |= NETIF_F_LLTX; 1158 netdev->features |= NETIF_F_LLTX;
1161 adapter->en_mng_pt = igb_enable_mng_pass_thru(&adapter->hw); 1159 adapter->en_mng_pt = igb_enable_mng_pass_thru(&adapter->hw);
1162 1160
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 7d8bf94d3783..e6df9233f5ef 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -3566,8 +3566,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
3566 if (pci_using_dac) 3566 if (pci_using_dac)
3567 netdev->features |= NETIF_F_HIGHDMA; 3567 netdev->features |= NETIF_F_HIGHDMA;
3568 3568
3569 netdev->features |= NETIF_F_MULTI_QUEUE;
3570
3571 /* make sure the EEPROM is good */ 3569 /* make sure the EEPROM is good */
3572 if (ixgbe_validate_eeprom_checksum(hw, NULL) < 0) { 3570 if (ixgbe_validate_eeprom_checksum(hw, NULL) < 0) {
3573 dev_err(&pdev->dev, "The EEPROM Checksum Is Not Valid\n"); 3571 dev_err(&pdev->dev, "The EEPROM Checksum Is Not Valid\n");
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index 517425dcb77c..5f0fcb04afff 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -7966,8 +7966,6 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
7966 dev->features |= NETIF_F_UFO; 7966 dev->features |= NETIF_F_UFO;
7967 dev->features |= NETIF_F_HW_CSUM; 7967 dev->features |= NETIF_F_HW_CSUM;
7968 } 7968 }
7969 if (config->multiq)
7970 dev->features |= NETIF_F_MULTI_QUEUE;
7971 dev->tx_timeout = &s2io_tx_watchdog; 7969 dev->tx_timeout = &s2io_tx_watchdog;
7972 dev->watchdog_timeo = WATCH_DOG_TIMEOUT; 7970 dev->watchdog_timeo = WATCH_DOG_TIMEOUT;
7973 INIT_WORK(&sp->rst_timer_task, s2io_restart_nic); 7971 INIT_WORK(&sp->rst_timer_task, s2io_restart_nic);
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index f25d4f5a31b0..c02227b9dd7b 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -533,7 +533,6 @@ struct net_device
533#define NETIF_F_LLTX 4096 /* LockLess TX - deprecated. Please */ 533#define NETIF_F_LLTX 4096 /* LockLess TX - deprecated. Please */
534 /* do not use LLTX in new drivers */ 534 /* do not use LLTX in new drivers */
535#define NETIF_F_NETNS_LOCAL 8192 /* Does not change network namespaces */ 535#define NETIF_F_NETNS_LOCAL 8192 /* Does not change network namespaces */
536#define NETIF_F_MULTI_QUEUE 16384 /* Has multiple TX/RX queues */
537#define NETIF_F_LRO 32768 /* large receive offload */ 536#define NETIF_F_LRO 32768 /* large receive offload */
538 537
539 /* Segmentation offload features */ 538 /* Segmentation offload features */
@@ -1163,11 +1162,10 @@ static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
1163 * @dev: network device 1162 * @dev: network device
1164 * 1163 *
1165 * Check if device has multiple transmit queues 1164 * Check if device has multiple transmit queues
1166 * Always falls if NETDEVICE_MULTIQUEUE is not configured
1167 */ 1165 */
1168static inline int netif_is_multiqueue(const struct net_device *dev) 1166static inline int netif_is_multiqueue(const struct net_device *dev)
1169{ 1167{
1170 return (!!(NETIF_F_MULTI_QUEUE & dev->features)); 1168 return (dev->num_tx_queues > 1);
1171} 1169}
1172 1170
1173/* Use this variant when it is known for sure that it 1171/* Use this variant when it is known for sure that it
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index b486e634f4fe..c74607eda1ee 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -1678,9 +1678,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
1678 if (!mdev) 1678 if (!mdev)
1679 goto fail_mdev_alloc; 1679 goto fail_mdev_alloc;
1680 1680
1681 if (ieee80211_num_queues(hw) > 1)
1682 mdev->features |= NETIF_F_MULTI_QUEUE;
1683
1684 mwdev = netdev_priv(mdev); 1681 mwdev = netdev_priv(mdev);
1685 mdev->ieee80211_ptr = mwdev; 1682 mdev->ieee80211_ptr = mwdev;
1686 mwdev->wiphy = local->hw.wiphy; 1683 mwdev->wiphy = local->hw.wiphy;