diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 81971ed607eb..c46252520d7a 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /******************************************************************************* | 1 | /******************************************************************************* |
2 | 2 | ||
3 | Intel 10 Gigabit PCI Express Linux driver | 3 | Intel 10 Gigabit PCI Express Linux driver |
4 | Copyright(c) 1999 - 2009 Intel Corporation. | 4 | Copyright(c) 1999 - 2010 Intel Corporation. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify it | 6 | This program is free software; you can redistribute it and/or modify it |
7 | under the terms and conditions of the GNU General Public License, | 7 | under the terms and conditions of the GNU General Public License, |
@@ -53,7 +53,7 @@ static const char ixgbe_driver_string[] = | |||
53 | 53 | ||
54 | #define DRV_VERSION "2.0.44-k2" | 54 | #define DRV_VERSION "2.0.44-k2" |
55 | const char ixgbe_driver_version[] = DRV_VERSION; | 55 | const char ixgbe_driver_version[] = DRV_VERSION; |
56 | static char ixgbe_copyright[] = "Copyright (c) 1999-2009 Intel Corporation."; | 56 | static char ixgbe_copyright[] = "Copyright (c) 1999-2010 Intel Corporation."; |
57 | 57 | ||
58 | static const struct ixgbe_info *ixgbe_info_tbl[] = { | 58 | static const struct ixgbe_info *ixgbe_info_tbl[] = { |
59 | [board_82598] = &ixgbe_82598_info, | 59 | [board_82598] = &ixgbe_82598_info, |
@@ -5352,14 +5352,14 @@ dma_error: | |||
5352 | tx_buffer_info->dma = 0; | 5352 | tx_buffer_info->dma = 0; |
5353 | tx_buffer_info->time_stamp = 0; | 5353 | tx_buffer_info->time_stamp = 0; |
5354 | tx_buffer_info->next_to_watch = 0; | 5354 | tx_buffer_info->next_to_watch = 0; |
5355 | count--; | 5355 | if (count) |
5356 | count--; | ||
5356 | 5357 | ||
5357 | /* clear timestamp and dma mappings for remaining portion of packet */ | 5358 | /* clear timestamp and dma mappings for remaining portion of packet */ |
5358 | while (count >= 0) { | 5359 | while (count--) { |
5359 | count--; | 5360 | if (i==0) |
5360 | i--; | ||
5361 | if (i < 0) | ||
5362 | i += tx_ring->count; | 5361 | i += tx_ring->count; |
5362 | i--; | ||
5363 | tx_buffer_info = &tx_ring->tx_buffer_info[i]; | 5363 | tx_buffer_info = &tx_ring->tx_buffer_info[i]; |
5364 | ixgbe_unmap_and_free_tx_resource(adapter, tx_buffer_info); | 5364 | ixgbe_unmap_and_free_tx_resource(adapter, tx_buffer_info); |
5365 | } | 5365 | } |
@@ -5762,6 +5762,10 @@ static void ixgbe_netpoll(struct net_device *netdev) | |||
5762 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | 5762 | struct ixgbe_adapter *adapter = netdev_priv(netdev); |
5763 | int i; | 5763 | int i; |
5764 | 5764 | ||
5765 | /* if interface is down do nothing */ | ||
5766 | if (test_bit(__IXGBE_DOWN, &adapter->state)) | ||
5767 | return; | ||
5768 | |||
5765 | adapter->flags |= IXGBE_FLAG_IN_NETPOLL; | 5769 | adapter->flags |= IXGBE_FLAG_IN_NETPOLL; |
5766 | if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) { | 5770 | if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) { |
5767 | int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS; | 5771 | int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS; |