Skip to content

Commit

Permalink
e1000/e1000e/igb/ixgb: do not use netif_wake_queue un-necessarily
Browse files Browse the repository at this point in the history
It was pointed out that the Intel wired ethernet drivers do not need to
wake the tx queue since netif_carrier_on/off will take care of the qdisc
management in order to guarantee the correct handling of the transmit
routine enable state.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jesse Brandeburg authored and David S. Miller committed Apr 22, 2009
1 parent bf98a82 commit 4cb9be7
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 11 deletions.
4 changes: 2 additions & 2 deletions drivers/net/e1000/e1000_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,8 @@ int e1000_up(struct e1000_adapter *adapter)

e1000_irq_enable(adapter);

netif_wake_queue(adapter->netdev);

/* fire a link change interrupt to start the watchdog */
ew32(ICS, E1000_ICS_LSC);
return 0;
Expand Down Expand Up @@ -2591,7 +2593,6 @@ static void e1000_watchdog(unsigned long data)
ew32(TCTL, tctl);

netif_carrier_on(netdev);
netif_wake_queue(netdev);
mod_timer(&adapter->phy_info_timer, round_jiffies(jiffies + 2 * HZ));
adapter->smartspeed = 0;
} else {
Expand All @@ -2608,7 +2609,6 @@ static void e1000_watchdog(unsigned long data)
printk(KERN_INFO "e1000: %s NIC Link is Down\n",
netdev->name);
netif_carrier_off(netdev);
netif_stop_queue(netdev);
mod_timer(&adapter->phy_info_timer, round_jiffies(jiffies + 2 * HZ));

/* 80003ES2LAN workaround--
Expand Down
8 changes: 4 additions & 4 deletions drivers/net/e1000e/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -2826,6 +2826,8 @@ int e1000e_up(struct e1000_adapter *adapter)
e1000_configure_msix(adapter);
e1000_irq_enable(adapter);

netif_wake_queue(adapter->netdev);

/* fire a link change interrupt to start the watchdog */
ew32(ICS, E1000_ICS_LSC);
return 0;
Expand All @@ -2848,7 +2850,7 @@ void e1000e_down(struct e1000_adapter *adapter)
ew32(RCTL, rctl & ~E1000_RCTL_EN);
/* flush and sleep below */

netif_tx_stop_all_queues(netdev);
netif_stop_queue(netdev);

/* disable transmits in the hardware */
tctl = er32(TCTL);
Expand Down Expand Up @@ -3130,7 +3132,7 @@ static int e1000_open(struct net_device *netdev)

e1000_irq_enable(adapter);

netif_tx_start_all_queues(netdev);
netif_start_queue(netdev);

/* fire a link status change interrupt to start the watchdog */
ew32(ICS, E1000_ICS_LSC);
Expand Down Expand Up @@ -3600,7 +3602,6 @@ static void e1000_watchdog_task(struct work_struct *work)
phy->ops.cfg_on_link_up(hw);

netif_carrier_on(netdev);
netif_tx_wake_all_queues(netdev);

if (!test_bit(__E1000_DOWN, &adapter->state))
mod_timer(&adapter->phy_info_timer,
Expand All @@ -3614,7 +3615,6 @@ static void e1000_watchdog_task(struct work_struct *work)
printk(KERN_INFO "e1000e: %s NIC Link is Down\n",
adapter->netdev->name);
netif_carrier_off(netdev);
netif_tx_stop_all_queues(netdev);
if (!test_bit(__E1000_DOWN, &adapter->state))
mod_timer(&adapter->phy_info_timer,
round_jiffies(jiffies + 2 * HZ));
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/igb/igb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -942,6 +942,8 @@ int igb_up(struct igb_adapter *adapter)
rd32(E1000_ICR);
igb_irq_enable(adapter);

netif_tx_start_all_queues(adapter->netdev);

/* Fire a link change interrupt to start the watchdog. */
wr32(E1000_ICS, E1000_ICS_LSC);
return 0;
Expand Down Expand Up @@ -2664,7 +2666,6 @@ static void igb_watchdog_task(struct work_struct *work)
}

netif_carrier_on(netdev);
netif_tx_wake_all_queues(netdev);

igb_ping_all_vfs(adapter);

Expand All @@ -2681,7 +2682,6 @@ static void igb_watchdog_task(struct work_struct *work)
printk(KERN_INFO "igb: %s NIC Link is Down\n",
netdev->name);
netif_carrier_off(netdev);
netif_tx_stop_all_queues(netdev);

igb_ping_all_vfs(adapter);

Expand Down
5 changes: 2 additions & 3 deletions drivers/net/ixgb/ixgb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,8 @@ ixgb_up(struct ixgb_adapter *adapter)
napi_enable(&adapter->napi);
ixgb_irq_enable(adapter);

netif_wake_queue(netdev);

mod_timer(&adapter->watchdog_timer, jiffies);

return 0;
Expand Down Expand Up @@ -1118,7 +1120,6 @@ ixgb_watchdog(unsigned long data)
adapter->link_speed = 10000;
adapter->link_duplex = FULL_DUPLEX;
netif_carrier_on(netdev);
netif_wake_queue(netdev);
}
} else {
if (netif_carrier_ok(netdev)) {
Expand All @@ -1127,8 +1128,6 @@ ixgb_watchdog(unsigned long data)
printk(KERN_INFO "ixgb: %s NIC Link is Down\n",
netdev->name);
netif_carrier_off(netdev);
netif_stop_queue(netdev);

}
}

Expand Down

0 comments on commit 4cb9be7

Please sign in to comment.