diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-12 11:39:09 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-12 11:39:09 -0800 |
commit | 5de76b18d1a7193c49c1a4ee72261421a17de57c (patch) | |
tree | cd349813d06b8da020aaec0dcc33d499dd80fad5 /drivers/net/igbvf/netdev.c | |
parent | 8d0e7fb9d1581c4543ea917c2ea1a50db607a344 (diff) | |
parent | e1187b3be72be59625e445b186007e6eae27fef1 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
be2net: fix error in rx completion processing.
igbvf: avoid reset storms due to mailbox issues
igb: fix handling of mailbox collisions between PF/VF
usb: remove rare pm primitive for conversion to new API
Diffstat (limited to 'drivers/net/igbvf/netdev.c')
-rw-r--r-- | drivers/net/igbvf/netdev.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c index a127620dc653..e9dd95f136aa 100644 --- a/drivers/net/igbvf/netdev.c +++ b/drivers/net/igbvf/netdev.c @@ -1469,6 +1469,8 @@ static void igbvf_reset(struct igbvf_adapter *adapter) memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len); } + + adapter->last_reset = jiffies; } int igbvf_up(struct igbvf_adapter *adapter) @@ -1812,11 +1814,15 @@ static bool igbvf_has_link(struct igbvf_adapter *adapter) s32 ret_val = E1000_SUCCESS; bool link_active; + /* If interface is down, stay link down */ + if (test_bit(__IGBVF_DOWN, &adapter->state)) + return false; + ret_val = hw->mac.ops.check_for_link(hw); link_active = !hw->mac.get_link_status; /* if check for link returns error we will need to reset */ - if (ret_val) + if (ret_val && time_after(jiffies, adapter->last_reset + (10 * HZ))) schedule_work(&adapter->reset_task); return link_active; |