From: Tong Ho <[email protected]> 82580 re-reads the port specific portion of eeprom after port reset. If called immediately after a reset, igb_get_auto_rd_done() returns false positive because the done bit has yet to transition from 1 to 0.
Add wrfl() immediately after resetting 82580 port or device, plus a 1ms delay, to avoid the problem. Signed-off-by: Tong Ho <[email protected]> Signed-off-by: Guenter Roeck <[email protected]> --- Sent as RFC since I am not entirely sure if the solution is the correct one to address the problem we are seeing. If there is a better solution, please let me know. drivers/net/igb/e1000_82575.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/igb/e1000_82575.c index 0f563c8..28dae48 100644 --- a/drivers/net/igb/e1000_82575.c +++ b/drivers/net/igb/e1000_82575.c @@ -1735,10 +1735,10 @@ static s32 igb_reset_hw_82580(struct e1000_hw *hw) ctrl |= E1000_CTRL_RST; wr32(E1000_CTRL, ctrl); + wrfl(); /* Add delay to insure DEV_RST has time to complete */ - if (global_device_reset) - msleep(5); + msleep(global_device_reset ? 5 : 1); ret_val = igb_get_auto_rd_done(hw); if (ret_val) { -- 1.7.3.1 ------------------------------------------------------------------------------ EditLive Enterprise is the world's most technically advanced content authoring tool. Experience the power of Track Changes, Inline Image Editing and ensure content is compliant with Accessibility Checking. http://p.sf.net/sfu/ephox-dev2dev _______________________________________________ E1000-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
